Avatar (imdb)
Weta Digital (Wellington, NZ)
Senior FX Technical Director.
Contents |
R&D work
Development of the FX vegetation system
Simulation done on a hierarchical curves approximating the plant or tree.
Simulation essentially done with RnR (very fast hierarchical curve solver by Florian Hu), Maya Cloth and Maya Hair.
Simulation is then baked in a file: a renderman dso then read for each plant or tree the associated simulation (animation) and rigging (binding) files and deform it accordingly with a custom skinning.
- full preview of the simulation in Maya (OpenGL)
- very fast custom skinning based on dual-quaternions with some tweaks to handle very heavy motions and extreme deformations
- automatic rigging that will try to match the topology of the vegetation and the topology of the curve representation and smoothing the junctions
- effective caching system to use a very small memory footprint and a small file i/o (since deformation is done during render, we need to use a very small amount of memory to make sure we have enough memory to render the shot) - plants are sorted based on redundancy and family - redundant plants or trees sharing the same topology and rig are cached to avoid re-reading or recomputing several times the same data
- very easy setup and pipeline to easily select trees or plants and start a simulation on the farm or pick-up a simulation from the library - can setup dynamics on a shot in few seconds
This system has been used on several hundreds of shots on Avatar. Most of the shots were handled by shots TDs themselves, key shots were done by FX TDs or ATDs.
700 plants and trees have been rigged for simulation. Most of them have been rigged automatically, very few required human intervention.
Rigging was done outside Maya since some tree geometries could not be loaded in memory (the full-scale hometree for example was taking more than 24GB of memory).
A library of simulations was done for most of the plants (quiet wind, strong wind, helicopter wash, etc.) to make it easy for shot TDs to add dynamics in their shots.
The largest shot rendered was using 21,000 simulated plants and trees.
Total polygon count was just above 1 billion polygons.
Total computation time done at render-time was around 5 minutes to move all the polygons, with a memory footprint around 40MB.
Development of a fast raytracer command
Using the fast grid cache structure described in the Fluid retimer tutorial.
Using 8 threads, I was able to trace 300,000 rays/sec on Neytiri.
Was used in particle expressions during the rain shots for the water drops on Jake and Neytiri.
Development of a plant growing system
Used for Grace death sequence.
- full simulation and GL preview in Maya
- either generate ribs from Maya (RiBlobby, RiPoints or RiCurves) or use a custom renderman dso to generate the geometry at render-time based on simulation in Maya
- plant growing from particule points
- plant able to split and give birth to 2 children
- path tracking from the geometry target, choosing the randomly a direction based on the closest point on the geometry
- using the same fast raytracer to track its distance from the target shape
- fully controllable from particle expressions to choose offset from surface, speed, chance to split at each frame, main direction, noisyness, etc.
- very fast: wrap completely Grace with thousands of children in few seconds
Development of a fluid retiming system
Mainly used for fire, smoke and explosions.
Described in the Fluid retimer tutorial.
Shots
Worked on 2 sequences: the bulldozer sequence (vegetation destruction) and the air battle sequence (Quaritch's Dragon gunship destruction).
Bulldozer sequence
Rigging and simulation setup of the "spagetti trees".
- Simulation of the "spagetti branches" done with Maya Cloth for close-up trees and my cloth solver for background trees
- Simulation of the tree and branches done with RnR
- Simulation of the vegetation done with RnR
- Wood splinters added from particle simulation
- All the deformations and destructions done at render-time using the vegetation system renderman dso
Air battle sequence
- Deformation of the ship (mainly animated by hand with lattices)
- Destruction of the rotor simulated with nVidia PhysX
- Smoke trails with particles
- Explosion, fire and smoke simulations with Maya Fluids