Heaps of clones in 3DS Max with proxies
Playing around with a lot of meshes in Max is an easy way to crash it. The autosave feature is put a lot to contribution (viva autobak.max !). Same routine for After Effects by the way…
In an undergoing project, we needed at some point an array of 96*16 (not a zillion) meshes, simple ones as they are. So I happily used the Array tool, cloning en masse. As Max started to cough, I saw a repetitive pattern of the pre-crash effect. Nothing I could do to save him. And even when there was no crash, the UI was utterly slow.
Purokushi
I lookep up solutions about handling lots of meshes at once and I found mrProxy to be exactly what I needed. This article on cgsociety talks about the new features of Max 2010 and shows a little what you can do with mrProxy and huge forests in architectural renders. It is definitely a great thing like the Architectural Mats and Pro Mats that the article mentions. The thing is however, proxies are nothing new. I don’t really know why they talk about it as a new feature here. Perhaps the fact it is “new” is that it is shipped with Max…
If you’re on VRay, there are also vRayProxies but let’s talk about Mental Ray Proxies here.
Generally speaking, a proxy is a kind of portal, a gateway you must pass through in order to use some resource or produce something.
In networking that’d be to use a connection with the advantage of security and disadvantage of slower speed depending on where your proxy is physically located.
In programming, a proxy is often thought as a design pattern and implemented as a communicator with some data source for instance, you don’t deal directly with the data source but use proxies instead.
In 3D, there are several kinds of proxies too. By default, Max has a bitmap proxy feature in the rendering options but let’s talk about mrProxy which is here an object like any other you can use on your scene.
mrProxy is a temporary replacement for your mesh on the scene. That helps to save some precious memory that mental ray won’t feed upon, hungry as it is.
What the proxy does is, it represents your model with a cloud of vertices, not too many so as not to slow the Max UI and you handle it in place of the real model. So you can replicate thousands or more instances of the mrProxy and Max is less of a slug.
Meshes, unite !
A few things to note. A Proxy by default doesn’t have the same material as the model, it doesn’t have any in fact. You might want to shift textures from one proxy to another to make them look different. Don’t worry about your uvw mapping and material ids, they’re all working as if it were the real model. So you can apply the same material from the model to the proxy without worries.
Now a very important thing : you can’t make a proxy out of a group or whatever container it might be. That’s too bad and it will force you to clone your model and make it into one single mesh. Fortunately, Max handles the material ids pretty well.
Another thing you might wonder, proxies work with any kind of mesh, nurbs comprised.
So if for instance you have two multi-sub materials, each made of several materials, you’ll often have two series of material ids starting from 1. Let’s say you got a model of a human cyborg whose left arm is a robot, the rest is all weak human flesh. For some reasons, you have made the human as a poly and the robot arm as a nurbs. Either you’ll choose to make two proxies, for the body and arm, or you’ll convert the nurbs mesh to a poly mesh and attach it to the body.
Then you got a “human” multi-mat made of
- skin
- eyes
- mouth
And another multi-mat, say “cyborg”,
- shiny metal
- plastic
There’s obviously a material id conflict if you are to merge your meshes together.
If you’d want to make a single mesh out of all this, you’d first clone the whole joe, turn the poly into a mesh and attach the robot arm to the flesh body. Max in all his wisdom would then ask you how you want to manage the material ids, the first option is your best choice as it will reassign the material ids of, say, the robot arm so that the parts of the arm whose material ids are 1 don’t look like skin.
Here’s a sample gengon in action with two materials. The red vertices are the multiple proxy clones.
Dollies
When your base mesh is ready, you only need to write it onto an external .mib file using this panel below.
To access it, you need to create a new mrProxy instance and place it on the scene.
After the file browser, you’re prompted with these parameters.
In still mode, you need to write only one temporary file that your proxy will refer to. If you want your proxy to replicate some kind of animation, you’ll need to write all the animation’s frames into temporary files. So yes, you’ll have to update your proxies if you decide to modify the animation of the model.
Vertex and topology animations are supported by mrProxy so that covers most of your needs.
I observed a little problem with the scaling of imported meshes. It doesn’t happen all the time and is in fact quite rare but if you don’t see your proxy either in the UI or in the render, it’s often because of a too low scale value in the proxy.
So here’s what it looks like, having many proxy instances of your mesh on the scene. Looks messy but at least it’s fast in the UI.
All this renders at a decent speed, it’s a matter of a few minutes with the default mental ray params.
What’s more ?
A list of some scripts that might or might not help you on scriptspot.com
A nice utility called Proxy Painter on 3rdpole.com, it works both with VRay and Mental Ray.
A good intro to mrProxy is available on hagerman.com.
About this entry
You’re currently reading “Heaps of clones in 3DS Max with proxies,” an entry on Théâtre magique
- Published:
- 01.14.10 / 6
- Category:
- 3D/Compositing






No comments
Jump to comment form | comments rss [?] | trackback uri [?]