Environmental FX
Week 1
Dominoes Playblast
Setup
The simulation was created using Bullet, a plugin for Maya that is good at computing rigid body physics simulations. When doing any sort of simulation in Maya it is important that the playback speed in the time slider preferences is set to play every frame. This ensures that Maya computes every frame, for example, if the playback speed was set to 25fps x1 Maya would be forced to play at 25fps, this would mean that if a frame of simulation was unable to be computed the simulation would be skipped, this can result in inaccurate simulations, the simulation to stop being computed or crashes.
The Bullet solver uses different units to the Maya world, this means that a cube that is 7 untis high in the Maya viewport is viewed by Bullet as 7m tall. This means that simulations can look slow and inaccurate. To get around this scaling issue the gravity of the solver can be changed, the default value is 9.81ms², the physically correct value, multiplying the value by 10 would result in a 7 unit high cube being viewed as 70cm tall by Bullet. In this example the gravity value is multiplied by 100, this means that the dominoe model is viewed as 7.5cm tall by Bullet, a more accurate representation of a dominoe.
When changing the gravity value to much higher value the simulation can start to show a lot of unwanted vibration, to fix this issue the 'Internal Fixed Frame Rate' needs to be changed from 60hz to 240hz, this changes how many calcuations the solver makes, this results in a more accurate simulation which in turn eliminates the unwanted vibrations.
In order to start the dominoe fall an intial force has to applied to the first dominoe in the chain. A force of -20 is applied in the Z axis to the dominoe, this is what kickstarts the simulation.
Glass Smash
This effect was also created using Bullet. First the glass was modelled, then was split into induvidual chunks using the Maya Shatter effect. A rigid body set was then created including the original glass mesh and the mesh with shatter effect applied.
The reason that both the whole and shattered glass are simulated is because the shattered object shows obvious cracks when a shader is applied. To get around this problem both states of the glass are simulated, they then have induvidual shaders applied to them. These shaders then have their opacity attributes keyframed, this means that the whole glass is visible before it hits the ground plane, becoming invisible the moment it shatters, with the shattered glass being keyframed the opposite way.
Week 2
nCloth Flag
nCloth is Maya's built in soft body simulation solver. To create the flag a basic plane mesh is created with an adequate amount of subdivisions. An nCloth is then created with the mesh selected. To attach the flag to the 'flag pole' an nConstraint feature is used. The point to surface option allows you to attach a vertex or verticies to a different 3D object, in this case several vertices at the top and bottom of the flag mesh are connected to the pole. The pole also has a larger than expected amount of subdivisions as the point to surface option attaches the selected to points to faces, meaning have too few faces can result in strange outcomes. A volume axis field is then used to apply dynamics to the flag, the volume axis field applies a directional force and adds turbulence to the field, this gives the flag realistic motion.
Tearable Cloth
Another feautre of nCloth when used with the nConstraint system is being able to create tearable surfaces. This is done by creating a selection of verticies that you want to tear, in this case the paint selection tool was used. Once selected the selection is made tearable by going through nConstraint > Tearable Surface. Once the tearable surface has been created a directional wind force is applied, once the tearable area has enough force applied to it will tear and continue to simulate.
Week 3
nParticles - 'Fairy Dust Trail'
(Using a ground plane)
nParticles is Maya's built in particle simulation tool. In this exmaple the particle system is connected to an animated mesh sphere. To create the 'fairy dust' effect a combination of the particle system and emitters attributes have been edited in combination with a volume axis field that adds turbulence to the simulation. The settings used can be seen below. The particles have also been shaded using a linear ramp connected to the age of the particles.
NParticles - Mug Pour
In the example above a single static emitter is used to fill up the mug, the mug is then animated in a way that pours the particles out of the mug into a bowl. Both the mug and bowl have been set as passive colliders, this is done by going nCloth>Create Passive Collider. This option isn't inside of the nParticles dropdown menu but instead in the nCloth menu, this is because all of the various 'n' elements of Maya work alongside eachother, meaning that nParticles can be made to interact with nCloth simulations.
Week 4
AOV Passes and Compositing
When rendering Arnold can create AOVs, or Arbituary Output Variables. These AOVs contain data for specific, component parts of a render. When combined these passes will create the same image as the default 'Beauty' pass produced by Arnold. AOVs are incredibily useful when compositing as they give a compositor control over induvidual aspects of a rendered image, AOVs like the Z depth pass can also be used to create other effects like depth of field after rendering. The image above shows an AOV setup for an example image, including a Z depth passs, and the direct and indirect passes of coat, diffuse, specular and transmission.
The above images show the Node graph and final image of the combined AOVs. The AOV's were sperated and combined using Nuke. You can also see how the Z depth pass was extracted and used to create depth of field and a depth fog effect.
Week 5
Maya Fluids
Initial Simulation
Added initial velocity in Y-Axis
Added turbulence
Emitting from object
Emitting from particles; result
Emitting from particles; particles visualised
Emitting from particles; zero fluid falloff
Week 6
BiFrost Fluids
Week 7
BOSS and BiFrost Fluids
Assignment 1
Destruction Simulation
The first step for the assignment piece was to record a real event showcasing destruction. I chose to use a falling Jenga tower. You can see the reference video below.
The first step in recreating the in 3D was to model a single Jenga block. I measured the real world counterpart and used these measurements to scale a cube primitive in Maya.
Next I duplicated and arranged two more blocks, this created a single layer of the Jenga tower.
I then grouped the first layer, this allowed me to centre the pivot in the centre of all three blocks making rotating and stacking the layers easier. I then use duplicate special to create and position enough copies to complete the tower.
Then using the video as reference I deleted the blocks that had been removed in order to make the tower fall.
I then created a Bullet rigid set. This makes all of the blocks dynamic and groups them together, allowing for their attributes to be changed from one place.
Next I changed some of the Bullet Solver's properties. In order to match the scale of the Bullet simulation with the real world scale of the Jenga blocks the gavity has to be changed. To accurately change the scale the gravity would have to be set to -980, however when testing the simulation this setting caused the tower to immediatley explode. So I instead used a value of -98, this produced a believable result while not being 100% accurate. The internal fixed frame rate also had to be upped to 240Hz.
To get the tower to fall I changed the intial conditions of the rigid set. I applied a velocity of 5 in the negative Z direction, this produced enough force to knock the tower over.
I then added a mesh plane and created a passive collider, this acted as a ground plane. The collider shape for this object was set to mesh.
I then created a lighting setup for the scene. I used one main white light to fill the scene and used a number of blue and red lights, placed on opposing sides of the tower. This created red and blue highlights on the sides of the tower and also creates a purple where the lights crossover.
Before rendering the shot I added a Z depth AOV. This would allow me to add a DoF after the render was completed.
Once rendered I took the sequence into Nuke. I then added motion blur and a DoF effect. To create the DoF effect I first took the Z depth pass and, using a copy node, copied the data from the red colour channel into the Depth.Z of the beauty pass. Then using a ZDefocus node driven by the depth information copied into the pipeline I changed the focus point and amount of blurring to create the final effect. Motion blur was added using the motion blur node, the virtual shutter time was set to 0.75 and the samples set to 15. Before rendering out the result I also added a grade node, I used this node to bring the brightness of the render up slightly.
Final Video
Week 9
XGen Hair & Instancing
XGen is plugin for Maya that can be used for hair, fur and geometry instancing. In the image above you can see the first step of creating hair using XGen. The placement of the hair is driven by guides, these guides act like normal CV curves, this allows for the shape to be adjusted easily.
Above you can see the placement of the hair, the amount of hair is driven by the density multiplier in the primitives attributes. As you can see the shape of the hair is currently very static and uniform.
This is where modifiers are used. Modifiers help to create a much more realistic and organic look to the generated hair. The image on the right shows an important step when using the clump modifer. You need to tell the modifier that the hair has been generated using guides, this is done by generating clumping maps, making sure to click the guides button under the points attributes.
To get a realistic render an AiStandardHair shader should be applied to the XGen hair geometery. The shader uses realistic and accurate Melanin values to generate real hair colours, there are also several other attributes similar to the AiStandardSurface shader.
Week 10
BiFrost Graph Editor
The BiFrost graph editor is a relatively new addition to Maya. It is a very powerful visual programming language that allows you to create complex and realistic simulations, ranging from aero simulations like, fire, smoke and explosions, to ripping cloth and particle simulations like snow and mud. Below is an example of a smoke simulation created using the BiFrost graph.
Below is the graph for the smoke simulation seen above.
One of the main ways of changing the look of a smoke simulations in the BiFrost graph is to change the 'style' setting in the aero solver settings, you can see how the various settings change the look of basic smoke simulation. In the example simulation the 'Fluffy' setting was used. This gave a good base to develop a more realistic and complex simulation from.
A key part of making a believable simulation is adding variation. This is done in the BiFrost graph editor by adding 'vary_source_property' nodes, these nodes take properties of the 'source_air' node and add randomness to the values within assigned parameters. In the example below the speed direction, initial speed, temperature and fog density properties are being affected.
Another way of adding variation to a simulation is by adding a 'vorticity_influence' node. Unlike legacy Maya fluid solvers where a volume axis field would be used to add wind and turbulence e.t.c. the BiFrost graph editor uses 'influences'. Each type of influence has its own node which allows you to change any settings you need to. In the example simulation a 'modulate_influence' node has been used. This controls the amount of vorticity added to the simulation.
Week 11
BiFrost Graph Editor - Combustion
A source fuel node is used to turn a normal aero simulation into a combustion simulation, the temperature of the source air also has to be modified for the combustion to take place.
The influences on the left are part of the 'rebel pack', these are new, experimental influences that add more complex turbulence and vorticity to the simulation.