Regarding standin computation efficiency as a general scene asset type.
It's my understanding that due to the "procedural" nature of standins referencing the same cache file—you really start to win out in terms of rendering when the assets are "bulk scattered / set dressed"
#1: In the scenario where most assets are either unique / standalone and aren't "bulk duplicated" do you still gain anything in terms of rendering? Other than a more "workable" scene.
ie. its more efficient to access and load .ASS files than local geo (maya references, alembic etc.)
#2: Then in a scenario where you want to utilize adaptive subdivision and frustum culling to automatically reduce asset complexity and ram usage based on the shot camera—where you would need to use "Maya References/Alembic" for example to utilize those features.
When do you start winning out when using Standins instead? (Thereby disabling adaptive subdiv and frustum culling) Is there a certain threshold?
ie. "I'm not having a large amount of duplicates, don't use standins." VS "I'm duplicating assets 10-50+ times, use standins."
All the best,
Andrew
Maybe a developer will be able to answer this more thoroughly, but I use standins as asset management a lot, not only because I think its efficient both at viewport and render, but because it can be used at multiple softwares, retaining shaders and textures.
About your #1 question, you still have gains by using standins, not at render time I think, but at translation time. Having your asset as an .ass means your object is arealdy translated.
#2 You can still use adaptive subdivision and frustrum culling using standins, and also control them post export:
Also, you can set a shape as a procedural in an objects shape node.
This has two advantages, you can have a very low poly version of your model, so you have a better understanding of its placement than you could with the default standin if your mesh is very high poly, like a tree for example.
Also, you can do pretty much anything you do with maya meshes this way, like using mash to distribute them:
Thanks so much for your input Bruno.
I'm planning to do some render testing, it's also my understanding that the file format should be more efficient.
FYI (Unless somethings changed)
https://answers.arnoldrenderer.com/questions/13407/adaptive-subdivision-on-object-space.html?childTo...
Unfortunately, Frustum Culling doesn't work on Standins and Adpative Subdiv on Object works, but you'll need to adjust the adaptive error to work for all possible instances.
When set to Raster you'll get pretty random topology changes across all instances (FG and BG) which would be undesirable.
You are welcome!
Yes, if they are instances, they will share the same shape. But how would you make any kind of instances adaptively subdvide based on distance? As they will always share the same shape, regardless of whether they are standins or not.
Yeah 😕
It would almost need to read the ass files and then as a secondary calculation at render time do per "instance" adaptive subdivision/culling. Which may just defeat the point of the Standins in the first place....or add too much "overhead" ^-^
My question I think still stands though...in certain situations maybe it's better to have adaptive subdiv/culling on—rather than "standalone" instances?
I don't think so IMHO. If you are using adaptive subdiv/culling, you are not using instances, because if you are, they share the same shape and wont have different subdivisions for example. You can, for the same effect, export those objects as standins, turn on subdiv or culling using arnold procedurals, and just duplicate them instead of instantiate. You wont have instances, but you will skip the translation of those standins, whereas if you are directly doing that in maya, you will have to translate all those copies to arnold renderer, and that takes pre-computation time.
Another thing you could do, which is not adaptive per se, but its close, and you will have less pre-computation time because you will not be subdividing things in runtime, albeit taking more work time. So its something you will have to measure per project.
You can take those objects and make LODs, like 3 or 4 for example, maybe even using maya decimation.
Make a LOD-0 as the highest subdivision that you will use and export it as a standin. Then make incrementally lower subdiv for LOD-1 to LOD-3, or as much as you need to avoid popping in the render.
You can then distribute those standins in your scene as normal, after doing it, create a mash network out of all of them, and on distribute options set initial state.
If you have more than one type of object, its ideal that you make one mash for each type.
On mash repro, remove all objects but one.
Then on LOD add each of the LODs you created and configure the distance.
The longer the distance, the higher the LOD. You will have the benefits of lower subdiv in objects far away, keep them as instances, but you will have a bit more work, so, as I said, you will have to measure the benefits.
BTW, this gave me an idea about a particle instancer LOD script, I will try to make one.
Haha awesome!
Btw, I'm kind of lumping "Standins/Instances/Procedurals" into a similar category.
I generally steer clear of actual Maya instances in general.
Interesting you mentioned the LOD approach, as it's one that we're most likely going to take, reducing subdiv iterations and maybe sometimes mesh reduction on base mesh geometry and/or more simple shader networks.
I guess I was hoping LOD meshes could be prevented—if the renderer could handle at least the basic drop in subdiv iterations. I thought Operators could help, but of course that changes all the standins of the same asset type.
Hey! Ive made a particle instancer lod that works with standins or almost anything really. Its not quite what you want, but it may work with some workarounds and may be useful.
The windows video capture does not show maya`s floating windows >.<
You can either convert existing meshes or use maya particles (lod distance was not working with nparticles, the expression was not updating and inaccessible, I have an older maya version here at home, I will try with the newer at work, it seems like a bug, classic particles work).
I can send it to you if you want, but there are still some problems to work on.
Hey man! Wow that's very cool! I'm not very clued up on maya particles tbh.
Will let you know, we're going to be working on this in the next few months and main concern is just integrating into pipeline and having workable tools to efficiently handle large amounts of standins with LODs (on a shot level).
Thanks!! Sure thing!
Usually, for a Very large number of assets, with or without lod, with or without standins, is using xgen, even though Its not Very user friendly, and gives, almost always, some pretty intense headaches at render time.