arnold-usd icon indicating copy to clipboard operation
arnold-usd copied to clipboard

Improve point instancer in the render delegate

Open sebastienblor opened this issue 2 years ago • 2 comments

Currently, when a PointInstancer has a group of nodes as prototypes (e.g. if it's a xform, or even a reference to an external file), it will end up flattening all the instances, and render one ginstance node per leaf object.

For example: if a point instancer has 1000 instances of a a xform that contains 1000 meshes under it, we'll end up rendering 1000 x 1000 ginstances nodes in the arnold universe, each one pointing to the corresponding mesh.

On the other hand, in the procedural, in this case we create a nested usd procedural that only loads the prototype (with the attribute object_path ) and then the 1000 instances of the nested usd procedural. So this ends up with way less AtNodes in the arnold universe. We should match the behaviour in both the procedural and the render delegate

sebastienblor avatar Mar 15 '22 17:03 sebastienblor

Creating a nested usd procedural doesn't sound doable at the moment, since in Hydra we don't have a filename to create a nested usd procedural. We only have a bunch of Hydra nodes in the render index, so I don't think we can apply the same strategy as in the procedural.

sebastienblor avatar Apr 09 '22 06:04 sebastienblor

Issue synced internally to ARNOLD-13300