prman-pixar / RenderManForBlender

RenderMan for Blender render addon
MIT License
808 stars 133 forks source link

Interactive render does not update some objects #101

Closed mifth closed 9 years ago

mifth commented 9 years ago

Interactive render does not update some objects which have the same material.

test - http://youtu.be/r5mfnhw0HTY file - https://dl.dropboxusercontent.com/u/26887202/blender/temp_prman_2.blend

mifth commented 9 years ago

Sorry. Video was speeded up. That's because my machine is old. But you can see there that Monkey and cube are not updated properly when i change nodes for the output.

bsavery commented 9 years ago

No great find thanks. If I recall though you should be able to change parameters on a material and all the objects will update correct? Like if you changed a color as opposed to changing the node tree

If I can remember correctly (should have documented this code better) the shader network rebind when you switch the bxdf has to find all the objects that material is attached to and do the edit for each. Currently we just get it for the active object.

bsavery commented 9 years ago

Oh and to be more clear, I'm not sure of a good way to easily get the objects using a material programmatically other than the brute force way... anyone?

mifth commented 9 years ago

Sorry, my English is not super cool. I hope I can explain with screenshots more:

I hope it will help somehow.

bsavery commented 9 years ago

Thanks. That makes sense.

MWY3510 commented 9 years ago

Unfortunately there is no way of getting a list of named users for a material. I think you are stuck with the brute force method. What might help is have an internal list that keeps track of what objects have node based materials. This should cut down on the amount of objects you have to sort through.

Hope this helps, MWY3510

mifth commented 9 years ago

Then you can loop visible objects and check if the object has this material. In python it looks like:

for obj in scene.visible_objects: If changed_mat in obj.data.materials: do()

I'm on a phone now. Possibly it should be context.visible_objects.

Also you can check if object has the same mesh then you need to update it. I mean object.data.

Also you will need to check group instances and duplis.

mifth commented 9 years ago

Or you can loop all visible layers. And check their objects.

bsavery commented 9 years ago

That's what I meant by brute force. Ok. I'll figure something out.

On Sunday, August 9, 2015, mifth notifications@github.com wrote:

Or you can loop all visible layers. And check their objects.

— Reply to this email directly or view it on GitHub https://github.com/bsavery/PRMan-for-Blender/issues/101#issuecomment-129226623 .

brian.savery@gmail.com 508-274-8700

mifth commented 9 years ago

No problem. Do it as brutal hard rock. :)

Also, could you add object position/rotation/scale change for interactive rendering? Right now if i move an object in a scene - interactive rendering will not be changed.

bsavery commented 9 years ago

No. That is a current limitation of re rendering In prman. Unless your object is a light it can't be moved or rotated. It is meant as a relighting tool. However future versions might support this.

On Sunday, August 9, 2015, mifth notifications@github.com wrote:

No problem. Do it as brutal hard rock. :)

Also, could you add object position/rotation/scale change for interactive rendering? Right now if i move an object in a scene - interactive rendering will not be changed.

— Reply to this email directly or view it on GitHub https://github.com/bsavery/PRMan-for-Blender/issues/101#issuecomment-129226946 .

brian.savery@gmail.com 508-274-8700

mifth commented 9 years ago

Oh. Such a big limitation. I cycles i can move objects and see interactive preview with my latest changes.

Does maya have the same limitation?

bsavery commented 9 years ago

Yes unfortunatly. It's a limitation of all prman. The difference though is vs cycles you are getting the full shading computation not an approximation. And I believe you can't do volumes with cycles rerendering?

On Sunday, August 9, 2015, mifth notifications@github.com wrote:

Oh. Such a big limitation. I cycles i can move objects and see interactive preview with my latest changes.

Does maya have the same limitation?

— Reply to this email directly or view it on GitHub https://github.com/bsavery/PRMan-for-Blender/issues/101#issuecomment-129228598 .

brian.savery@gmail.com 508-274-8700

bsavery commented 9 years ago

Again keep in mind it was designed with tweaking lighting and shading in mind. Not moving objects around. You can do that pretty well in the 3d view already.

On Sunday, August 9, 2015, Brian Savery brian.savery@gmail.com wrote:

Yes unfortunatly. It's a limitation of all prman. The difference though is vs cycles you are getting the full shading computation not an approximation. And I believe you can't do volumes with cycles rerendering?

On Sunday, August 9, 2015, mifth <notifications@github.com javascript:_e(%7B%7D,'cvml','notifications@github.com');> wrote:

Oh. Such a big limitation. I cycles i can move objects and see interactive preview with my latest changes.

Does maya have the same limitation?

— Reply to this email directly or view it on GitHub https://github.com/bsavery/PRMan-for-Blender/issues/101#issuecomment-129228598 .

brian.savery@gmail.com javascript:_e(%7B%7D,'cvml','brian.savery@gmail.com'); 508-274-8700

brian.savery@gmail.com 508-274-8700

mifth commented 9 years ago

There is logic in your words. Volumes are bad in cycles sure. Thanks for explanation.

jdent02 commented 9 years ago

In Cycles the interactive mode doesn't appear to be an approximation aside from the fact that motion blur isn't visible for some reason. You can move geometry around since it has the option to build a dynamic BVH specifically for live mode. Renderman might not be able to do that but IMHO material tweaks and lighting changes are reflected much faster than in Cycles (especially when node trees start to get complicated).

And I'll second mifth's comments on volumes in Cycles, they can be painful (especially heterogeneous smoke).

bsavery commented 9 years ago

Should work correctly now.