Krakatoa
RSS< Twitter< etc

PRT Saver Tool - Krakatoa for Maya

Introduction

The Krakatoa Maya PRT Saving And Partitioning tool implements the caching of Maya particles to disk and the generation of Partitions (a.k.a. Wedges) by modifying parameters of the same simulation and saving it multiple times to multiple file sequences.

This feature is similar to the "Save Particles To File Sequence" mode and the "Partitioning" rollout of Krakatoa MX, but is implemented as a stand-alone tool independent from the Krakatoa MY Render Settings.

To launch to the tool, press the PRT SVR icon on the Krakatoa shelf.

  

User Interface

Main Controls

SAVE PARTICLE OBJECTS TO PRT FILES button 

  • Pressing this button performs the saving process according to the other settings.
  • The button will be disabled if no objects are listed in the right list (SAVE These Objects, see below) 
  • Currently, each object will be saved to a separate file sequence named according to the object's name. Combining multiple objects into a single PRT file will be supported in the future.
  • Selecting "Submit as DEADLINE Job" will perform the saving over Thinkbox DEADLINE renderfarm manager software.

Particle Objects lists 

  • The Do NOT Save These Objects: list shows the objects that could be saved to disk but have been selected not to be saved. 
  • By default, the left list will contain the PRT Volume objects which are supported, but usually rendered directly without pre-caching.
  • The SAVE These Objects: list shows the objects that will be saved to disk. 
  • By default, the right list will be populated with the Maya Particles and nPraticle objects found in the current scene.
  • The content of these lists is currently NOT saved with the scene and will be reset each time the tool is launched.
  • Double-click an object name to move it from the one list to the other. 

File Output 

Save Frames drop-down list 

  • It controls the animation range to be processed.
  • Default is Scene Range.
  • Alternatively, it can be set to the Render Range.

Sequence Output Folder text field 

  • PRT files are saved in the "PRT" sub-folder of the Maya "Project Path".
  • The "Sequence Output Folder" field defines the sub-folder to save the PRT file sequences to.
  • It defaults to "v001" and can be used to specify incrementing versions, but could be any string, including multiple sub-folders delimited by "/".
  • It could be set to empty string "" in order not to create a sub-folder below "\PRT\".

Sequence Filename Prefix text field

  • This text field defines the filename prefix (base file name) for all sequences saved in the current session.
  • It defaults to "Particles", but could be set to anything including empty string "" - in that case, the file names of all files will end up start with an underscore which is a delimited added automatically behind the Filename Prefix.

File Format

  • Defines which file format the particle files will be saved as.
  • Options are: PRT (Thinkbox' PRT Particle File Format), CSV (Comma separated values), BIN (Realflow).

Resulting Output File Name

The output filename is built from the above components and some hard-coded elements. 

  • The output filename starts with the Maya "Project Folder" plus the Sequence Output Folder.
  • Then the Sequence Filename Prefix is added and an underscore is added.
  • If a partition is being saved, the Partition pattern "_partMMofNN_" will be appended where MM is the partition index and NN is the total number of partitions requested.
  • If one sequence is saved per object, no Partition pattern will be added. Instead, an underscore will be appended behind the object name to delimit it from the frame number.
  • The frame number will be padded with zeros automatically to 4 digits.

Partitioning panel

 Enable Multiple Partitions

  • This "Enable" checkbox controls either saving multiple Partitions per particle system, or just one sequence per particle system.
  • Default is to enable Multiple Partitions.

Total Patitions Count value 

  • Default is 10.
  • The Slider Range is between 2 and 100.
  • The Field Range is between 2 and 1000.
  • This value controls the total number of particles to be generated. It will be reflected by the second number in the partition name pattern - _partMMofNN_. The value is used to auto-load multiple partitions in the PRT Loader and gives the user information about the expected total number of partitions even before they have been generated.
  • You can generate sub-sets of the partitioning range, but you cannot produce a partition with a higher ID than this total number, so make sure you set it high enough from the beginning.
  • When the value changes, the Save From and Save To Partition ranges will be updated accordingly. 

Increment Emission Random Seeds 

  • Default is checked.
  • When checked, the Random Seed parameters of Maya Particles, nParticles and PRT Volume objects will be modified for each partition in order to change the particle distribution and produce variations in the saved Partition files.
  • When unchecked, the Random Seed parameters will not be modified.
  • This approach will only work with particle simulations that do NOT employ an Initial State. When Initial State is used, consider using the Channels Randomization options to achieve similar results.
  • Note that modifying the Random Seeds is generally faster than randomizing the Channels, resulting in shorter Partitioning times.

Enable Channels Randomization 

  • Default is unchecked.
  • When checked, the Position and Velocity channels will be enabled for randomization at particle birth. Note that there are additional checkboxes and values to control each channel's randomization.
  • This is especially useful when employing particles with saved Initial State that cannot be changed via the Emission Seed parameter.

Randomize Position checkbox 

  • Default is checked.
  • When checked, and only if the Enable Channels Randomization checkbox is also checked, the Position channel of Maya Particles and nParticles systems will be randomized within the range specified by the Position Jitter Radius value.
  • When unchecked, the Position channel will not be affected.
  • The randomization of the Position will be performed only on newly born particles. Once the Position is randomized at birth or on the first frame of the simulation, the particles will be driven through the simulation and will produce slightly different results due to the variation in their initial state. 

Position Jitter Radius value 

  • Default is 0.01.
  • This value defines the amount of randomization to be applied to newly born particles' Position channel if the Randomize Position and Enable Channels Randomization checkboxes are both checked. 

Randomize Velocity checkbox 

  • Default is unchecked.
  • When checked, and only if the Enable Channels Randomization checkbox is also checked, the Velocity channel of Maya Particles and nParticles systems will be randomized within the range specified by the Velocity Jitter Radius value.
  • When unchecked, the Velocity will not be affected.
  • The randomization of the Velocity will be performed only on newly born particles. Once the Velocity is randomized at birth or on the first frame of the simulation, the particles will be driven through the simulation and will produce slightly different results due to the variation in their initial state.

Velocity Jitter Radius value 

  • Default is 0.01
  • This value defines the amount of randomization to be applied to newly born particles' Velocity channel if the Randomize Velocity and Enable Channels Randomization checkboxes are both checked.

Channels To Save panel

This panel contains controls to enable the saving of various supported particle channels, and to change the bit depth of the data. The channels are listed with their Krakatoa standard names and the corresponding Maya particle channel names in parentheses. Both global and per-particle channels are supported where necessary.

Position (position) checkbox and drop-down list 

  • Defaults are: checked and float32[3]
  • The controls are disabled and cannot be modified because the Position channel is mandatory and its format is locked to 32 bit Vectors. 

Velocity (velocity) checkbox and drop-down list 

  • Defaults are: checked and float16[3]
  • When checked, the velocity channel of Maya Particles and nParticles will be saved to PRT. 
  • If a PRT Volume is specified for saving, it won't save a Velocity channel even if the option is checked since it has no such data.
  • When unchecked, no Velocity channel will be saved in the PRT file.

Color (rgb) checkbox and drop-down list 

  • Defaults are: checked and float16[3]
  • When checked, the color channel will be saved to PRT. This included shader data applied to the particle system, or per-particle rgbPP data. If both are available, the per-particle data will prevail.
  • When unchecked, no Color channel will be saved. 

Density (opacity) checkbox and drop-down list 

  • Defaults are: checked and float16[3]
  • When checked, the opacity channel will be saved to PRT as Density. This included shader data applied to the particle system, or per-particle opacityPP data. If both are available, the per-particle data will prevail.
  • When unchecked, no Density channel will be saved in the PRT file.

ID (particleID) checkbox and drop-down list 

  • Defaults are: checked and float16
  • When checked, the particleId channel of Maya Particles or nParticles will be saved to PRT as ID channel.
  • When unchecked, no ID channel will be saved in the PRT file.
  • If the object being saved is a PRT Volume, no ID channel will be created even of the checkbox is checked. This is because PRT Volumes do not generate a valid ID channel.

Normal (normalDir) checkbox and drop-down list 

  • Defaults are: unchecked and float16[3]
  • When checked, the normalDirPP channel of Maya Particles and nParticles, as well as the native Normal channel of PRT Volume particles will be saved to PRT as Normal channel.
  • This channel is required by the Phong Surface shader and must exist to produce correct results in that mode. 
  • When unchecked, no Normal channel will be saved in the PRT file. 

Emission (incandescence) checkbox and drop-down list 

  • Defaults are: unchecked and float16[3]
  • When checked the incandescence channel will be saved to PRT as Emission channel. It can come from the object's shader or the per-particle channel. If both sources are available, the per-particle data will prevail.
  • When unchecked, no Emission channel will be saved in the PRT file.

 

Sub-Sampling Particle Animations 

The PRT Loader object allows the retiming of the particle sequence by interpolating from the existing frames. The Position channel of the particles will be interpolated using the closest Position sample and the respective Velocity sample. The interpolation can be linear (default), or cubic ("Interpolate Sub-Frames" option in PRT Loader checked), in which case the Positions and Velocity samples of the two nearest files are used to produce a smooth motion curve, but at cost of performance (reading from two files instead of one).

When performing extreme slow downs using the Playback Graph option of the PRT Loader, it is sometimes useful to save the PRT file sequence with a higher sampling rate than once per frame. For example, without subsampling, a simulation of a particle explosion taking place over only 24 frames could be stretched two times over 48 frames or 10 times over 240 frames, but the data used to interpolate the particle motion would still be the same 24 samples, and might not be enough for a precise look especially in cases of collisions and abrupt direction changes.

To support sub-sampling, the PRT Saver tool currently uses the Maya playbackOptions -by value to advance the time slider when saving particles to a PRT sequence. The caveat is that because PRT sequences don't support sub-frame file numbering yet, a sequence sampled over 24 frames with a time slider step of 0.5 will save 48 frames with integer file name suffixes 0001 to 0048. Obviously, retiming such a sequence to play over 48 frames via Playback Graph in the PRT Loader will encounter one actual sample for every interpolated frame, producing perfect motion in the final rendering, and twice the precision of a simulation saved with only 24 samples.

If you intend to retime an animation playback 10 times, you can of course call playbackOptions -by 0.1; or set the Preferences>Time Slider>"Playback By" field to 0.1 to produce 10 times more samples. The file numbering in the above example will be from 1 to 240, but when retimed to play over 240 frames, it will once again provide enough resolution to get a sample on each interpolated frame.

In many cases of mostly linear motion though, the "Interpolate Sub-Frames" option of the PRT Loader will be enough to produce good enough motion from a sequence saved with one file per frame without sub-sampling. It is typically the cases where particles change direction quickly within the simulation that will require sub-sampling.