Voxel Rendering Mode

Introduction

  • Voxel Rendering is the alternative rendering mode of Krakatoa.
  • It was originally added to Krakatoa 1.5 to enable the volumetric rendering of huge FumeFX simulations in 3ds Max because Krakatoa’s implementation uses a fraction of the memory typically associated with voxel rendering.

Pros And Cons Of Voxel Rendering

  • The main benefits of Voxel rendering are:
    • Can render very large contiguous volumes using relatively few particles as long as there is at least one particle in each voxel.
    • Perfect for rendering smooth, puffy and pyroclastic clouds which would require orders of magnitude more particles to produce the same result.
    • Does not dissipate into points when the camera is flying through a cloud.
  • On the negative side,
    • Generally slower than Particle mode and less heavily multi-threaded.
    • Has to perform a separate drawing pass for each light, and one for Emission/ Camera space effects.
    • Does not support Point lights due to the plane marching nature of the rendering algorithm.
    • The Voxel Size is currently fixed in world space and does not change with distance.
    • It Voxel Size must be selected according to the desired quality and cannot be animated over time or space.

Workflow Considerations

Spatial Density

  • The Voxel rendering mode typically requires less particles than Particle mode for the same type of rendering.
  • Loading less particles can help decrease the overal rendering time, so it is quite possible to achieve the same rendering times in Voxel mode by adjusting the particle counts respectively.
  • In the following set of images rendered using Krakatoa MY, you can see a PRT Volume with spacing of 0.5, 1.0 and 2.0 rendered as Particles.
../../_images/KMY_ParticlesVsVoxels_PRTV1SD1_Part.png ../../_images/KMY_ParticlesVsVoxels_PRTV1SD0_Part.png ../../_images/KMY_ParticlesVsVoxels_PRTV2SD0_Part.png
2,829,138 particles, 3.276s 353,482 particles, 1.108s 43,960 particles, 0.858s
PRT Volume Spacing 0.5 PRT Volume Spacing 1.0 PRT Volume Spacing 2.0
  • The following images show the same particles rendered as Voxels with Voxel Spacing of 1.0 Filter Size 1, 1.0 Filter Size 1, and 2.0 Filter Size 2:
../../_images/KMY_ParticlesVsVoxels_PRTV1SD1_Voxel1_1.png ../../_images/KMY_ParticlesVsVoxels_PRTV1SD0_Voxel1_1.png ../../_images/KMY_ParticlesVsVoxels_PRTV2SD0_Voxel2_2.png
2,829,138 particles, 6.646s 353,482 particles, 4.696s 43,960 particles, 3.292s
PRT Volume Spacing 0.5 PRT Volume Spacing 1.0 PRT Volume Spacing 2.0
Voxel Spacing 1.0, Filter Size 1 Voxel Spacing 1.0, Filter Size 1 Voxel Spacing 2.0, Filter Size 2

Regular Grid Vs. Jittering

  • Since the rendering is performed using a regular grid, rendering PRT Volume objects with Jittered option turned off is recommended - PRT Volume also produces a regular grid and the result will look smoother in Voxel mode.
  • In the following screenshots, the left image is from a PRT Volume with Spacing of 1.0 and Jitter on, rendered in Voxel mode with Spacing of 1.0.
  • The right image uses the same settings, but Jitter off:
../../_images/KMY_ParticlesVsVoxels_PRTV1SD1Jitter_Voxel1_1.png ../../_images/KMY_ParticlesVsVoxels_PRTV1SD0_Voxel1_1.png

Voxel Size Vs. Particle Spacing

  • The particle distribution should be selected such that there are enough particles to fill the desired volumes.
  • This means that the distance between neighbor particles should be generally less than the Voxel Size value.
  • In the following example, the same PRT Volume with Spacing of 2.0 was rendered with Voxel Spacing of 1.0 (left) and Voxel Spacing of 2.0 (right):
../../_images/KMY_ParticlesVsVoxels_PRTV2SD0_Voxel1_1.png ../../_images/KMY_ParticlesVsVoxels_PRTV1SD0_Voxel1_1.png