I watched a video that compares Cycles and V-Ray in Blender. The person who made the video works with architectural visualizations, so he deals with very high polygon counts. Having a lot of objects like this in a scene will kill your viewport. They will also increase your scene’s file size, which can cause problems. So, V-Ray in Blender has a proxy feature. The viewport will use a low-poly model that V-Ray will swap with a high-poly model when rendering.
Here is a link to this specific portion of the video:
I am always keeping an eye out for optimizations. But, I don’t want to spend production time messing with optimizations. I want optimizations that integrate into my pipeline as transparently as possible. So, with these points in mind, let us look at a solution.
- Linking - The file size problem is easily fixed by linking. Moreover, performance is better for linked groups. Store as many of your scene’s assets as possible in external blend files. In the asset files, add the assets to groups. Then, simply link the groups into your scene. This is also great because it reduces the number of objects in the scene. Blender has trouble with too many objects in a scene.
- Low-poly proxies - Make a low-poly version of your asset inside the same blend file as your high-poly asset. This can be as detailed or as simple as you want, but remember that these will be seen in viewport renderings. I suggest that you keep the proxies on layers different from the high-poly originals. This will make keeping track of them easier.
- Exclude proxies - You don’t want the proxies to be visible in the final render. So, in the Outliner, uncheck the camera icon next to your proxies. They will still appear in viewport renders, so they will keep your viewport snappy even during interactive rendering. But, they will not even be loaded into memory when rendering. Even when you link a group containing the proxy into a scene, the proxy will not render.
- Exclude high-poly models from viewport - This is where things get tricky. Unlike the proxies, the Outliner visibility feature won’t work. The object won’t be visible, but it will still be processed. To completely remove processing requirements for a high-poly object, you need to use the Mask modifier. Apply the modifier and set the modifier to only be visible in the viewport. One last thing that is VERY important. Make sure the Mask modifier is at the top of the modifier stack. You will need to add this modifier to each of your high-poly objects that has a corresponding proxy.
- Group everything - Select all your asset’s objects, high-poly meshes as well as proxies, and group them.
- Link the groups into your scenes!
This will result in the exact same benefits as the V-Ray proxies. It is easy to setup when you are constructing your assets. It would integrate nearly seamlessly into your workflow.
it even works for animated objects.
- Use the same armature to control the proxy and the high-poly model
- Include the armature in the group
- Link in the group
- Make a proxy of the armature object (CTRL+ALT+P)
- ANIMATE!
If you want to be very fancy, you can even control an object’s visibility with an armature and drivers! And, using the vertex group option of the Mask modifier, you can have the armature drive the visibility of different parts of a mesh independently. So, you could have a character where you swap the proxy head for the high-poly face with the flip of a switch. That way you can have the benefits of the proxy but still be able to animate the face using the high-poly version. This would take a little bit more effort to setup, but I think it would save enough time to justify the effort.
So, with very little effort, you can have a small blend file of very light meshes that are automatically swapped for high-poly models when rendering. Personally, I think this is even better than V-Ray proxies because you can tweak it with drivers. I hope you find this helpful.