question

Pavel R. avatar image
Pavel R. asked ·

operators using (multiple) alembic nodes and override shaders

Just curious if operator shader overrides are supposed to work on multiple objects, namely multiple alembic nodes (using the gpu cache workflow)?

I'm having a hard time to get operators work correctly on multiple nodes, be it alembic nodes or standins.
Sometimes they work/don't-work, depending on how often I hammer the render-update button (without any further changes) and this behavior is directly related to 'parallel_node_init on/off'.

Most often the approaches I tried don't work with 'parallel_node_init off'.

Is the whole selector string parsed as global expression or just the part after the shape-name?

Just curious if something like 'myAlembic*.itemsParent_NULL.someItemPrefix*/*' is possible where 'myAlembic' is the most common name for name/prefix for the alembic-shape-nodes.
(myAlembic1Shape, myAlembic2Shape,...)

Or what would be the correct approach to override shaders on 'certain' nodes?

Doing a '*.(@node == 'polymesh')' expression seems to work but then I can't figure out how to filter by alembic gpu-cache node-name (-part) or by the 'name' and get consistent results when updating the renderer.

(*.(@node == 'polymesh')) and (*.(name == '*standRow*'))

Is the closest I can get but once again it fails if I don't set 'parallel_node_init off' explicitly and just because it worked the last 10 times I hammered the render-update button doesn't mean that this expression is valid.

*update*: doing the same expression in another scene didn't work either.

*update2*: it seems to work with standins but not on alembic nodes (gpu cache nodes)

Any tips on how to get this work using a more 'path-like' syntax? nodeName*/someparent/someChild/*)

shadersarnold5procedurals
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Arlon Swaders avatar image
Arlon Swaders answered ·

It seems the way to make it work is to always have a unique namespace in the translator options of the gpu cache.

This is regardless of the maya namespace the node might have.

Once the alembic translator has a unique namespace you should be able to do the assignments using the 'path-like' selection you suggested:

nodeName*/someparent/someChild/*

Hope this might help.


Share
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Orn Gunnarsson avatar image
Orn Gunnarsson answered ·

Is the problem alleviated if you set enable_procedural_cache to false in the options?

Share
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Pavel R. avatar image
Pavel R. answered ·

nice!

after some frustrating play-around I picked probably the worst workaround... let me just say that the file-size increased from 5Mb to 350Mb-ish ... imported them all, had some bad experience with regular file-referencing (lost shader connections)..back to the topic...

Setting a unique namespace does seem to work, great finding!

now path-like operator-selectors work!!!: :) :) :)

right*legoman*/legoman_GRP/body*.(@node == 'polymesh')

(I might skip the node-type part, as it works too, just a weird habit.. currently the render-setup does seem to attempt to add material overrides on non-shapes which then results in errors..not related to arnold, seems it's a 2018U3 feature...hence why I try to be as explicit as possible)

I wonder if the arnold-namespace attribute can also be used in some way..
An "easy" way to keep the namespace-string unique is to assign it based on selection via a script.
The attribute name is just 'aiNamespace', so it's rather easy to maintain unique names within a scene.

But again: Amazing that you could figure out a way to use gpu-cache nodes with operators, thanks! (I doubt that I would have ever found a feasible workaround...)

cheers


test rendering


operatortest-lego.png (672.5 KiB)
operatorgraph.png (32.9 KiB)
Share
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Arlon Swaders avatar image
Arlon Swaders answered ·

Hi Pavel,


Recently I've encountered the same issue and was actually about to post the same question. The operator assignments seem to work on multiple instances of the same standIn. However, when I try the same with multiple gpu caches, it only seems to assign the shader to one of them randomly. When I hit the render-update button the assignment switches to another one.

(two shader assignments on multiple instances of same gpu cache)

Please let me know if you find a solution. I'll keep looking for one too and keep you posted.



Share
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Welcome to the Arnold Answers community.

This is the place for Arnold renderer users everywhere to ask and answer rendering questions, and share knowledge about using Arnold, Arnold plugins, workflows and developing tools with Arnold.

If you are a new user to Arnold Answers, please first check out our FAQ and User Guide for more information.

When posting questions, please be sure to select the appropriate Space for your Arnold plugin and include the plugin version you are using.

Please include images, scene and log files whenever possible as this helps the community answer your questions.

Instructions for generating full verbosity log files are available for MtoA, MaxtoA, C4DtoA, HtoA, KtoA, and Kick.

If you are looking for Arnold Documentation and Support please visit the Arnold Support site.

To try Arnold please visit the Arnold Trial page.

Bottom No panel present for this section.