| Description | Currently, LuxRender has limited voxel rendering support through the PBRT-inherited "volumegrid" object. Presumably, at some point, volumegrid will eventually upgraded to use the new volume interfaces. When that is done, there are few improvements that could be made as well as functional upgrades.
First of all, it's worth noting that many times with a voxel object (typically a gas/fire/fluid simulation output) there is often a need to have it appear to be suspended within another volume, such as a smoke and fire in a hazy atmosphere, or an ink diffusing through a glass of water. Because of this, it may not work for the "grid medium" to simply be a normal unique medium that is set to the interior of it's "tank". It would need some kind of "joined volume" to show volume should be used in the low-density areas.
The other issue is dealing with the extra data many simulators encode into the voxels in addition to density. There are usually "temperature" and "velocity" values encoded as well, and possibly others. (Maya's fluid simulator includes a "fuel" value, for instance). It would be useful for the future grid medium to be able to store this data, and for there to be some way to use it to influence something like the color of the volume at different locations. A possible way to do this would be to have some sort of "voxel data" texture that would receive the name of the volume to use and a selection of which dataset to read (density, temperature, velocity, etc) and output a 3D float texture base on the values at that point in the cloud. This texture could then be used to control a mix or band texture to give, say, an emission color gradient based on temperature of the smoke/flame. |