The 3D “forest” rendering above was created using maxwell proxies, scattered over an undulating plane using Herman Saksono’s advanced painter script tool, available for max users.  (see link at end of post for available download spot)

The Proxy Setup…

The first thing set up for the scene are the planes in which the trees will be placed on.  For this I modeled a few planes, pulling points and extruding edges to get a rough polygonal form before subdividing the mesh and using the paint deformation tool (found at the end of the modify stack for editable poly) to do some light sculpting for the landscape.

Next, create the actual proxy that will be scattered along the landscaped planes.  For this I’ve used a series of Xfrog trees (Allepo Pine & Eucalyptus models).  The tree models were unified into a single mesh where materials were setup and applied through multi sub object before the proxy is created. (see below for leaf material setup used in the scene)

Right click on the object and in the top right quad panel, click “Create Maxwell Proxy”

Once the proxy for the object has been created, it wall appear on top of the object.  Slide it away from the object and set the desired % level of detail for the proxy.  Essentially, proxies improve viewport performance by creating an instanced point cloud of the original object.  Below shows how performance is also translated at render time.

Next, scatter the proxy object that was just created onto the landscaped planes.  Once you’ve run the advanced painter script, you’ll be able to access the tool through your quad menu by right clicking in the scene. (see the help/how to files that come with the advanced painter script, as well as max help files to see how to set this up in your quad menu if you have trouble accessing)

Once the advanced painter tool is accessed, the advanced painter interface/window will appear.

1. Select “Scatter” from the type drop down menu.

2. Press the pick button, then select the proxy object you want to paint with (once selected, it will show up in the scatter object list.  note that you can include multiple objects within this list to paint with.  For instance if you wanted to scatter several different types of trees onto the landscape, you’d simply follow the steps to include those objects as your scattered medium)

3. Select the object you want to paint on (the object you want to scatter other objects onto.  In this case, it’s the plane we created earlier)

4. Press the paint button (with the object to be painted on selected….. It explains all this crap in the how to files included in the advanced painter)

5.  In the perspective viewport (or whichever viewport you’re working in) you’ll see the paint tool icon hugging the surface of the selected object….. Scatter away!  (the scatter parameters you’ll have to play with in order to get your desired appearance)

One thing to note:  You’ll want to create different layers for different clusters of proxies.  The painter can bog down while painting if there’s too much going on in the viewport….. even though we’re working with proxies.  It’s also a good habit to get into…

Here’s what the scene looks like once everything’s set up…

Note that our original tree (and the other trees used similarly) has roughly 150,000 faces.

There’s over 7,000 tree proxies in the scene.  If we hadn’t created the proxy to scatter along the landscape created,  the scene would have inevitably crashed long ago trying to handle over 1 BILLION polys.  By creating proxies, we’ve limited our poly count for the scene to just under 900,000.  Which not only enables smoother scene navigation, but cuts down on memory through instanced rendering.

When this goes to render,  maxwell is rendering over 1 Billion polys, but memory is only handling the 800,000 or so from the instanced tree meshes in which the proxies were “instanced” from.

….. Which greatly reduces the amount of memory committed by the machine/computer used to render the scene.

The rendering benchmark will still be affected since there’s still so much information in the scene.  Instanced geometry will not necessarily improve/affect the actual rendering speed/performance, but the systems memory performance in handling such a large amount of data.

Rendering……. Be patient…..

The Material…

The screen shot of the actual material below shows an attenuation setting of 1cm?  You’ll want to start off setting the attenuation to 500um.

… Attenuation and coef/asymmetry settings you might need to tweak depending on type of leaf, but the map Brightness, Contrast, and Saturation settings seem to remain relatively constant from leaf to leaf (at least that’s what I’ve done)

The material used for this scene uses only one layer.  This is by no means the only solution so experiment with using additional layers to get different, if not better effects.

Before you dive into Single Sided Sub Surface Scattering (SSSSS) read the tutorial on the Maxwell Think site:

MXM settings:
Layer Weight:
Reflect 0:
Reflect 90:
Single Sided Weight Slot:

hope this helps :wink:


Herman Saksono’s Advanced Painter:

Houston Rendering Company


  • cherubrock says:

    Excellent tutorial really explains a lot. However, I tried following through the tutorial (using teapots instead of trees!) but when it came to rendering the scene out all the proxies just vanished? I Was wondering if you ever came across this problem and what the solution might be? Would be much appreciated for your help. Keep up the excellent Maxwell tutorials.

  • Tom Rusteberg says:

    Hi cherubrock, did you make sure maxwell instancing is enabled in your render dialogue? There should be a check box under the general render settings. If you have trouble finding the setting, or enable it and find that it still isn’t working, then let me know and I’ll be happy to help you figure out why it’s not working.

  • cherubrock says:

    I ticked the ‘use 3dsmax instancing’ under the general settings in the render dialogue and it didn’t render. I can’t find anything specific to maxwell instancing within the render dialogue? Is this maybe the problem? I’m using Maxwell version 2.0.2 with 3ds max maxwell plugin version 2.0.27 (all the latest releases from the website). Is there maybe a conflict between the two? Thanks for the assistance.

  • Tom Rusteberg says:

    It could be? (just realized that with or without the instance box checked, it still renders out the proxies) I’m using 2.0.2 as well with the 2.0.26 max plugin build (the one before the current 2.0.27)…. You can try rolling back to the 2.0.26 plugin and see if that fixes the problem. If not, then I would post the problem in the max plugin section on the maxwell forum and see if one of the developers can help you figure out what’s going on.

  • Kevin says:

    hey…great tutoral but i’m having similar issues as cherubrock. Whenever i use an object with multi-sub object materials, either Maxwell crashes immediately OR i get the error: “Instances of emitters are not supported” even though I have no emitters in the scene. have either of you run into this? I’ve tested using both the 2.0.26 plugin as well as 2.0.3 plugin with the same results. Note: i’ve also tested with every different combination of motion blur settings as NL says there’s still a bug with proxies and motion blur.

  • Kevin says:

    it appears the only way you can get proxies with multi-sub-object materials to work is Maxwell version 2.0.2 and plugin build 2.0.26. Any combo other than that results in the aforementioned errors. shame on them!

  • Tom Rusteberg says:

    Kevin, correct. 2.0.2 + 2.0.26 is your safest bet for the time being.
    What a small world based on your (confidential) e-mail address. How’s that house you guys are working on in Houston coming along? Rick had sent me some drawings several months back for that project. But the client tried to haggle the rate, so I told her that her best option would be to have you guys do it since it was already built into her fee. Don’t tell me you’re the 3D guy over there? I guess Rick has already left huh?

  • Tim says:

    Great tutorial! my only problem is that I get a error message when I try to render my maxwell proxy trees. maxwell.exe application error the instruction at “0x0042055b” referenced memory at “0x00078db8”. The memory could not be “read”

  • Tim says:

    Okay sorry just read the previous comments… I was using multi-sub object materials

  • Thomas says:

    I have problem with proxy , when I use proxy my maxwell going to crash after few min of rendering , also as was said before proxy are vanished , this problem happens with maxwell plugin 2.0.30 and maxwell render version 2.1 and 2.0.3

    I will try 2.0.27 version as I remember it was stable

    Best Regards

  • Thomas says:

    I have tried 2.0.27 version but the same problem appears all the time , I have noticed that problem derive from proxy , when I delete proxy everything is right.

    Proxy = low memory / crash
    No proxy = high memory / stable

  • Tom Rusteberg says:

    Hi, Thomas. Proxies should work just fine now using maxwell 2.1 with max plugin 2.0.3 (both latest as of this post)
    You can download THIS ZIPPED FOLDER containing a (2009) max scene with corresponding .mxs to see if it works on your end.

    It’s a simple scene consisting of a multi sub material applied to a teapot proxy which is scattered over a plane using the latest plugin/version mentioned above. If you have problems running either of these, then there’s something wrong.

  • Thomas says:

    I have tried these configurations :

    maxwell 2.1 + 2.0.27 plugin , 2.03 + 2.30 , 2.03+ 2.0.27 , 2.1 + 2.30.

    all give me crash , I have many proxy in the scene , 3gb ram and p4 3,4 GHz . Generally I have noticed that when I check protect geometry option it give me possibility to export huge scene without crash and without any proxy.

    I actually make scene for evermotion competition , you can find it here :

    thanks for reply

    PS: your scene crash immediately

  • Tom Rusteberg says:

    hmmmmmm…. if that scene crashed immediately, then i presume something is wrong. because i just ran the same scene from the original post with the latest plugin/version (2.1 & 2.0.3) and it ran just fine, without ever going over 5.5mb memory consumption, and without crashing at all (the scene i just tested, the one posted here contains just under 6500 proxies, each at close to 1million polygons or so)

    that being said, i haven’t played with the export options that you mention. i hate to sound like a broken record, but your best bet is to contact the support team over at next limit to see if they can assist with the problem. considering the test scene i posted here didn’t work, then i’m willing to say the problem is out of my hands….

    i know this probably isn’t much help to you right now, but that’s the best i can do without seeing what exactly you’re trying to render/accomplish.
    p.s. the stuff you did for evermotion looks absolutely great! :-)

  • Kevin says:

    Thomas, sweet evermotion submission. May i ask you a question? At what resolution/render time are you getting those things to resolve?! Never ever have i been able to use Maxwell at resolutions higher than 5000px and get such nice clean renders.

  • Thomas says:

    I have never used maxwell with big resolution , you are right about noise it is extremely important in maxwell because no setting are available to interpolation samples. My resolution usually is not big and even with that I need many hours to make it clean. It is maxwell. Maybe with render farms it is possible to render with higher res. try rebusfarm , send scene with farminizer and maybe it works.

    about export , the problem comes from maxwell side and it is not hardware blame because I am betatester of nox and at early stage of progress it was impossible to export even medium scene and it was bug after some programming improvements it works fine and that’s issue is connected to maxwell.

    best regards

  • Thomas says:

    Hi again , I use only maxwell proxy and turn ‘use max instances’ option off , I also disabled motion blur for global render dialog and for each layers individually and I hide majority of objects then check render hidden geometry and Hit render button and …. it works ….

    but until I saw refresh , there is a big error , black big triangle or some untitled geometry object appear opposite to camera and it mask almost whole scene. Render also slow down significantly. So , what cross my mind , is good way to use proxy very rarely and it is better to choose real geometry instead of proxy , if you have enough memory of course.

    PS : I do not have enough , I have a big problem . :(

    p4 3,4 Ghz HT , 3GB ram

  • Thomas says:

    hi again , after several tests I have found simple solution to avoid crash , only I have to do is disable view during rendering and render still in progress without interaptions like crash.

    Ii works espacially when maxwell require a little more RAM than I can offer.

    that’s it , hope it will be helpfull

  • Malik says:

    Really nice tutorial bro! Thank You!

    Got a quick question for you. How did you unifiy the objects just prior to converting to proxy objects?

    I ask because everything was working unitl I tried to proxy a revit building. My goal is to proxy multiple buildings of different types into a large scene. So far I tried to use “group” and “attach” command(in 3ds max) without any luck. I am able to proxies seperate object of the building but when I erase the original, the proxy dissapers.

  • Tom Rusteberg says:

    hi malik, proxies must be a single object. to do this with a revit building import (which i’ve never tried) you’ll have to convert the building into an editable poly/mesh then attach all the parts together so that the building is one entity opposed to several… grouping will not work.

    if you delete the proxy source object, then the proxies won’t know what they’re supposed to be….. hope that helps!

  • Malik says:


    I must have spent all day trying to figure that out.

    Can you suggest a method of rendering 20 different buildings(3d perspective) with streetscapes in a single render?

    Just building geometry alone with “cleaned” Revit buildings are 3million poly and pulls above my 12gb of RAM limit.

    Is this type of large scene possible with Maxwell? I was hoping to use proxies and instancing to make this happen but I’m having alot of trouble figuring out if it is even possible without doing multiple renderings and compositing in photoshop.

    Thanks bro!

  • Comments closed


    ©Tom Rusteberg | tom[at]wanderplay[dot]com