Cycles Render Proxy Support
Many render engines support the ability to load pre-cached "snippets" of scene files in place of another object in the scene, known as render proxies. The basic workflow is as follows: 1) The object to be rendered is exported to a special "proxy" file. It is translated for the renderer at this time, and the resulting file can be loaded directly by the render engine without any additional translation by the host 3D app. 2) A "proxy" object is created in the main scene, and the file created in step 1 is selected as the final geometry. 3) At render time, the "proxy" object is ignored and the renderer directly loads to cached objects from step 1 in place of the proxy object. This has a number of benefits: * The object has already been translated to the renderer, and does not need to be re-exported on every frame and test render after that. Useful for background assets such as a trees, cars in traffic, buildings, etc. * As a result, the object does not need to be evaluated or even loaded with the main scene, saving memory and improving performance. * It allows nesting of objects that would not be possible otherwise, such as a tree with particle-based leaves being cloned by a particle system. This is not supported normally in Blender, but in a render proxy situation the tree would already be cached out, and cloned into a forest as a single object.

Login to comment


brechtvanlommel · a month ago
I think it would be better to improve Alembic and collections support in Blender to handle these kinds of use cases. The reason renderers have their own custom systems is mostly historical, there was no standard file format before and the host application didn't have any support for this kind of lazy loading builtin. Alembic and USD are now replacing that more and more. Doing this in Cycles means we'd be duplicating work that we want all of Blender to benefit from eventually anyway. Being able to (optionally) preview proxies in the viewport or use them for Eevee as well seems important to me.
3 points reply
ChameleonScales · a month ago (edited a month ago)
My technique : - take the high-poly model and low-poly model in the same scene - group them - make the high poly non-visible but renderable - make the low-poly non-renderable but visible - in layout file/scene, link group instance Blender loads the proxy and only at render time it loads the high-poly.
0 points reply
lsscpp · a month ago (edited a month ago)

Nice but I sometimes use a different approach since yours still loads the heavy (file)geometry each time you open the referencing file.
I make two files, one highpoly the other lowpoly, and I switch them at render time via a batch script (on windows here)

0 points reply
Fweeb · a month ago
The PowerLib add-on that was developed during *Tears of Steel* (IIRC) offered a basic form of this kind of functionality. I've done it manually using the Edit Linked Library add-on. The automatic rendertime swap is the only thing, I think, that neither of these two add-ons provide.
0 points reply
Choose a category
Upload an image