There are many places in Phoenix where you can insert a texture and affect the simulation or rendering of fluids - fire/smoke or liquids:

However, if you simply map the smoke, fire or liquid colors or opacity with a texture, by default the texture will stay static in space and will not move with the fluid and follow it. The texture can be animated to change throughout the timeline and Phenix will read this animation, but still, if you need the texture to move and follow the fluid precisely, you need some extra steps to set up a TexUVW simulation, which we will describe below.

Also, 3D textures get mapped over the volume automatically, but 2D textures usually expect to be mapped over a mesh, so mapping them over the fire/smoke requires some extra steps.

In this page we will go over everything you need to know about texture mapping in Phoenix.

3ds Max texture mapping specifics

In 3ds Max, 2D textures have a Mapping option which can be any of the 4:

  • Explicit Map Channel
  • Vertex Color Channel
  • Planar from Object XYZ
  • Planar from World XYZ

The default 'Explicit Map Channel' will look for UVs on the mesh and map the texture over them. However, the fire/smoke in the Simulator box don't have UVW coordinates by default, so if you plug a texture using this Mapping mode, it would probably not render correctly - it would be too squashed or too spread out, to the extent that it would probably even render just using one color over the entire simulator. Explicit mapping is useful for Phoenix together with Phoenix's TexUVW simulations.

Thus, you can use Object XYZ and World XYZ for textures mapped over the Phoenix Simulator. Object XYZ means that the texture will always be stretched over the Simulator box - e.g. if the Simulator is flat and wide and you map it with a checker, it would squash the checker vertically, and stretch it horizontally. If your simulation uses adaptive grid and it expands and shrinks over time, the texture will also expand and shrink together with the grid when Object XYZ is used. On the contrary, when using World XYZ, the texture will be fixed in world space, so the features of the texture will remain in the same place even if the grid grows or even if the grid is animated to move around in space - it would 'swim' through the texture. World XYZ mapping is useful for the Phoenix Ocean Texture whose waves should be tied to the world space and in most cases should not be carried around with a moving simulation grid.

Phoenix TexUVW

When you want your texture to move together with the fire/smoke or liquid, you need to simulate with Phoenix's Texture UVW.

For this, you need to:

Then you can run the simulation and it would generate the needed UVW coordinates and carry them around with the fluid.

Once this is done, you can adjust the rendering settings of the texture you use without the need to simulate again, and once the simulation has UVW coordinates, you will be able to use them in Explicit mapping mode finally.

For example, if you want to simulate colored mixing liquid or particles, one way would be to simulate with Grid RGB or Particle RGB on and then render this out, but if you decide you need to change any color, you would need to simulate all over again, or the alternative would be to simulate using TexUVW and then map a colored texture using Explicit mapping and adjust the texture or change colors without the need to run the simulation again.

Example uses of TexUVW would be:

  • Increasing the detail of Fire/Smoke simulations at render time by adding displacement which moves along with the fluid.
  • Increasing the detail of Fire/Smoke simulations at render time by modulating the opacity of the smoke, the smoke color, or the fire color and intensity with noise maps which move along with the fluid.
  • Re-coloring of Fire/Smoke or Liquid simulations at render time, after the simulation is complete.
  • Transporting images or texture color details with Fire/Smoke or Liquid simulations.

Technically, the Texture UVW channel values represent the UVW coordinates of each Cell in the Simulator, with a range of [ 0 - 1 ]. The channel is initialized when a simulation is started in one of two ways:

  1. By inheriting the UVs from the source geometry, when Inherit TexUVW from Geom is enabled on the Phoenix Source. The UVW channel will be based on the UVs of the emission geometry. This option is useful when simulating melting objects – textures assigned to the Volumetric Shader (for Fire/Smoke simulations) or the material (for Liquid simulations) will be carried by the simulation.
  2. When inheriting of UVs is disabled on the Source - depending on the position of the emitting object in the Simulator's bounding box. If Grid rollout → Adaptive Grid is enabled, the Texture UVW coordinates in expanded voxels beyond the initial grid will be greater than one if the grid is expanding in a positive direction (+X, +Y, +Z), and less than zero otherwise. This means that textures assigned to simulations using the Adaptive Grid feature will be automatically tiled/repeated as many times as the final size of the Simulator is larger than its initial size.

Table of Contents