About Me

Not Specified
Not Specified


Recent Forum Posts

Where did displacement go with pyro2 shader? July 24, 2018, 10:06 a.m.


I never usually use shader displacements on pyro stuff as I found it often doesn't workout as well on most cases compared to tweaking the solver parameters, up-resing, vorticles and field ramps but… I have an old project to resurrect for a sequence that used the old pyro shaders from H13 where I did use displacements in mantra render. It has to be the same thing I did before. As shown below, where there is a separate displacement setup inside the shader, I make vdb fields at SOP level for gradient direction and some advected particle normals as a noise pattern (and so avoid using rest1/rest2 positions that again I find only really work in some cases).

However, the pyro2 shader does not have a separate displacement setup on the shader parameters and inside the asset it still uses pyroDisplace VOP and pyroFieldVop but they don't seem to behave the same way. I also tried just adding a separate layer of flownoise setup inside the unlocked asset but pyro2 displace doesn't seem to react to any custom fields. Its so odd because it looks like the same VOP nodes but only seem to recognise the inbuilt solver fields like heat, temperature, etc., when activating noise on the vop. Even if I add another level of displacement onto final shader output, it seems to just get ignored in render.

Am I missing something? Is it a bug? How are you adding custom displacement fields in pyro2?



Getting sub material groups into a loop in python May 16, 2018, 10:57 a.m.


Getting sub material groups into a loop in python May 14, 2018, 10:46 a.m.


I need to manipulate some group names brought in via alembic. I need to append a ‘_’ to the group name to match some previously defined material groups, I can't just change the material node names as this would break some pipeline dependencies elsewhere.

So I can do this for a single tab/folder material by putting :

for node in hou.selectedNodes():
for parm in node.parms():
if node.evalParm('group1'):
old = node.evalParm('group1')
new = ‘_’ + old

But when there are sub-material tabs, the group1 material group is just evaluated in the first tab as


ie, it accumulates all the sub material group1 tabs for each ‘_’ and applies this to only the first group1 tab.
Obviously because I am not looping specifically for each sub material tab/folder in turn. I've turned towards evaluating the parmTemplateGroup but then I just get <parmTemplateGroup> returned for each 'group1 field, not the rename. What am I missing?