Phew, the Necromancer’s staff is finally done:
The far left shows the high definition mesh and textures in 3ds Max 2011′s viewport. It maintained ~30 fps in spite of the object being 770k polygons and using 28 textures with a combined resolution of 45k by 45k.
The second image is the MentalRay rendering. It is still necessary to do from time to time because the viewport can’t show the effect of bump or displacement mapping (or use any other UV set other than the first one due to a bug).
I spent considerable amount of time tweaking displacement values so I didn’t run out of memory during baking… 4Gb is just not enough anymore.
The last two pictures are from Unreal, showing the low poly mesh (7000 polys mapped with four 2k textures). They are pretty close to the original although there is a slight loss of saturation for some reason.
So that’s it. The workflow got tested pretty thoroughly and now I’m sure that the idea is worth pursuing. Adjusting the surface properties with instant feedback is just awesome… it encourages experimentation and following design changes is fast. Of course some pre-processing is required (baking ambient occlusion, convexity and concavity onto the high definition mesh) but that can be automated.
Unfortunately there are a few problems which degrade the user experience:
- After a certain shader complexity, the slate editor slows down Max’s UI quite much. For example in this scene selecting a mesh takes around one minute if the slate editor is open.
- The real time viewport can’t use multiple UV sets, everything is mapped with the first one. (Rendered images are fine.)
- Before starting the final object bake certain nodes must be manually linked for every texture used.
- The final object baking can use huge amounts of memory if displacement is enabled.
I decided to hold off with the tutorial on all this and see what advances/bug fixes Max 2012 will bring in this regard.
This week I’ll focus on the design document and help our recently found animator with the unreal side of things.