Thank you romullus! And no method is better or worse from a memory savings perspective?
And now my trickiest question. Does it make a difference if my cgeo-file is the same, but the objects themselves are not instances in Max? And say I have the same teapot-proxy in a bunch of xrefs, will that increase the memory usage? Because as far as Max knows, they are not instances, but maybe Corona knows it’s the same geometry from the same file?
I’m suspecting that a lot of what we do to manage collaboration on huge projects, and also to manage viewport performance, is impacting performance and memory usage at render time in a bad way.
I wouldn’t put proxies in xrefs personally, It just adds another layer of complexity that isn’t necessary.
Also… as far as I am aware you aren’t saving any more memory by having proxies versus regular instances; proxies are just helpful for managing viewport performance.
Does it make a difference if my cgeo-file is the same, but the objects themselves are not instances in Max?
Memory will be taken by each copy. If it’s possible, always use instancing. When you use instancing, memory is taken by single entity, plus transformation data for each instance. In this regard, it doesn’t matter if it’s regular geometry or proxy
And say I have the same teapot-proxy in a bunch of xrefs, will that increase the memory usage? Because as far as Max knows, they are not instances, but maybe Corona knows it’s the same geometry from the same file?
Oh, we’re not doing it for fun Working with xrefs is the only way we know to make our work manageable. Both from a collaborate point of view. And for viewport performance. We break things as much as we can. Not all projects are like this. But currently I’m working on a big campus. It’s maybe 500x500 m. With parks and a bunch of complex buildings. All being built by different people in different files. And then you xref in what every you need for your current rendering. Or all of it for your aerial shot…
It really makes me wish there was a more game engine like LOD built in to Max at a very fundamental level. So one could have that in mind with the creation of every asset. So Spline steps, number of segments on modifers like extrude, lathe, sweep, chamfer etc and turbosmooth would automatically. Not to mention all these damn trees and plants I have tiny flowers that are sometimes in just two meters from the camera, and sometimes 800m. Some sort of LOD on those would be great. For me to manually make LODs and switch them out is impossible right now.
Another thing is managing textures. Someone might create a texture for something they are very near by. And I might render it from a distance where it’s all just one flat color. It’s hard to manage this, and it get out of hand because of human factors.
Getting an overview of the entire file, with xrefs, where I can see what resolution textures are, would be nice. There are ways in max. But Corona Bitmap doesn’t report back texture size to Material Explorer (that I didn’t know about until last year). I got that logged as “the most boring feature request ever”
I realise I’m just ventilating now, while my huge files are loading…
Exactly! And I’m thinking that one way to optimize would be when submitting a scene to a renderfarm (our own or external) that via scripts or manually, merge all xrefs and instanciate all proxies (and other objects) that are the exact same. Which would save some ram at render time. And this is only a problem if you are hitting your ram limit of course! Because human labour is of course the most expensive part.
I wonder if it would be possible for Corona as a render engine to know that proxies that are in different xrefs are in fact the same? Or is this impossible because of the nature of how it works in 3dsMax?
Guys I started working at a company where they have like 10 XREF scenes and in each scene they have the same proxy trees. opening the files take 40 minutes. aren’t they doing something wrong? from what I understood above even if they are using the same tree it is as if the memory and load as big as 10 trees as it loads 10 times?
Doing something wrong… Well from a user and workflow perspective I think it’s correct to work that way. But since it seems the proxies get load independently of each other, there is no memory saved, and if you run out of memory, it is unfortunately the wrong way.
Doesn’t seem like it would be impossible to solve this though. But the tast probably falls somewhere between autodesk and the corona dev team.