RSS< Twitter< etc

Data Channels - Krakatoa For Maya

Last Edited on 2013/12/23 @10:30 pm PST

Introduction

The Krakatoa renderer was built on top of a sophisticated data channel system which is shared between many Thinkbox Software tools and plugins including Krakatoa, Frost, Genome, XMesh and Ember. 

In some of these tools, arbitrary channels with custom names, data types and values can be defined, but in the case of Krakatoa, a few channels are necessary for the renderer to function. Some of them are mandatory (Position, Color and Density), others are optional (Velocity, Lighting, Emission, Absorption, Normal, etc.) and will be allocated only when required by a certain rendering feature.

Krakatoa MY automatically remaps the Maya channels into Krakatoa native channels. The mapping is described further on this page. Note that Krakatoa channel names are also case-sensitive and are Capitalized.

The Krakatoa renderer also supports some shader-related per-particle channels, but these are currently not exposed in the Maya version.

Mandatory Channels

The following channels will always be allocated and are absolutely necessary for Krakatoa to function.

Position float32[3]

This channel contains the 3D position of the particle.

It is expected as a 32 bit vector and its bit depth cannot be changed.

The data is taken directly from the position channel of Maya particle systems and PRT objects.

Color float16[3]

This channel contains the Scatter color of the particle. This value defines the color that will be reflected into the eye when the particle is illuminated by a dynamic light source.

It is usually provided as 16 bit vector representing the R, G and B components of the color value. In Krakatoa MY, it will always be allocated as a 16 bit vector, even if provided at a higher depth. 

The data is taken from the rgb or rgbPP channel of Maya particle systems, or from the Color channel of PRT objects. It can be overwritten using the Override Color controls in the Global Render Values panel.

Density float16

This channel contain the Density value of the particle. This value defines the contribution of the particle to the Spatial Density at the point in space defined by the Position channel, or in the voxel when rendering in Voxel mode.

It is usually provided as a 16 bit floating point number. Negative values are un-physical (will boost light instead of absorbind it), but are not explicitly forbidden.

For a more in-depth discussion of the Density channel and its role, see the Volumetric Rendering topic.

Feature-Specific Channels

Lighting float16[3]

This channel contains the lighting information of the particle resulting from the dynamic lighting calculations. 

It will be allocated when the Ignore Scene Lights option is unchecked.

It is an internal channel managed by the renderer and does not map directly to Maya particle data channels.

Emission float16[3]

This channel contains the incandescence  (self-illumination) data of the particle. This data is used by the renderer to add lighting to the particle without a specific dynamic light source.

It will be allocated only if the Use Emission option is checked.

It maps to the Maya particles' incandescence / incandescencePP channel, or the Emission channel of PRT Loader objects.

It can be overwritten using the Override Emission controls in the Global Render Values panel.

Absorption float16[3]

This channel contains the Absorption value of the particle. 

It will be allocated only if the Use Absorption option is checked.

It can be overwritten using the Override Absorption controls in the Global Render Values panel.

Normal float16[3]

This channel contains the Normal vector of the particle.

It will be allocated only when the Phong Surface phase function has been selected.

It maps to the Maya particles' normalDir / normalDirPP channel, or is taken from the Normal channel of PRT Loader and PRT Volume objects. The Normal channel in PRT files is typically generated from the X axis of the particle's orientation (for example in 3ds Max). The PRT Volume generates the Normal channel automatically from the surface of the volume mesh source.

Tangent float16[3]

This channel contains the Tangent vector of the particle.

It will be allocated only when the Marschner Hair phase function has been selected.

Currently, it is not mapped to any Maya channels and can only be imported from PRT files via the PRT Loader. It is typically generated from the Y axis of the particle (in the case of 3ds Max Krakatoa MX).

Hair shading is currently not usable due to the lack of Maya Hair support in the initial build of Krakatoa MY.

Velocity float16[3]

This channel contains the Velocity value of the particle.

It is usually provided as a 16 bit vector and describes the direction and magnitude of the particle's motion at the current frame. Given linear motion, the vector describes where the particle will be a second later.

This channel is only allocated by the renderer when the Enable Motion Blur option is checked.

MBlurTime float16

This channel is allocated internally when the Jittered Motion Blur option is enabled. It is used by the Renderer to track the timing of the particle to produce the random sampling along the Velocity vector.

It is not provided by the user and does not map to existing Maya channels. 

Mapping from Maya Particle Systems

Maya's particle systems use particle attributes with their own naming convention. There is a pre-defined mapping from Maya's particle attributes into Krakatoa particle channels. The mapping is as follows:

positionPP -> Position
velocityPP -> Velocity
particleIdPP -> ID
opacityPP -> Density
rgbPP -> Color
normalDirPP -> Normal
rotationPP -> Rotation
incandescencePP -> Emission
agePP -> Age
lifespanPP -> LifeSpan

Optional Shader-Specific Per-Particle Channels

Available in Krakatoa MY v2.3.0 and higher.

The Krakatoa renderer supports several channels to provide per-particle shader-specific information. These channels are typically provided using the Magma Channel Editor and/or Channel Modifiers.

These per-particle channels are allocated in memory only if explicitly enabled via the Shader's user interface. The initial value will be set to the global shader value for the respective property and will then be set to the particle channel's value if available. 

If the channel is not allocated, the global shader value will be used for all particles without allocating any additional memory.

SpecularPower float16

Defines the Specular Power of the Phong Surface and Kajiya-Kay Shaders.  

SpecularLevel float16

Defines the Specular Power of the Phong Surface, Kajiya-Kay and Marschner Shaders.

SpecularGlossiness float16

Defines the Specular Glossiness of the Marschner Shader.

Eccentricity float16

Defines the Phase Eccentricity of the Schlick and Henyey-Greensteen Shaders.

SpecularShift float16

Defines the Specular Shift of the Marschner Shader.

Specular2Level float16

Defines the Specular2 Power of the Marschner Shader.

Specular2Glossiness float16

Defines the Specular2 Glossiness of the Marschner Shader.

Specular2Shift float16

Defines the Specular2 Shift of the Marschner Shader.

GlintLevel float16

Defines the Glint Level of the Marschner Shader.

GlintSize float16

Defines the Glint Size of the Marschner Shader.

GlintGlossiness float16

Defines the Glint Glossiness of the Marschner Shader.

DiffuseLevel float16

Defines the Diffuse Level of the Marschner Shader.

User-Defined Channels

Using the Krakatoa MY channel modifiers system, it is also possible to create channels with arbitrary names to store intermediate data. For example, you can copy an existing channel coming from a particle source into a user-defined channel in order to convert a vector to a float, to provide texture coordinates and so on.