PRT Loader Particle Culling and Normals Acquisition

Available in Krakatoa v1.0.0 and higher

Particle Culling

../../../_images/krakatoa15_prt_loader_culling_controls.png
  • The Particle Culling group of controls in the PRT Loader object provides a powerful method to determine which particles to be loaded and rendered based on an arbitrary number of geometry volumes.
  • This can be used to render only a small portion of a complex particle system, to sculpt particle systems by removing particles or creating holes in particle systems, for special effects like animated reveals and so on.
  • The rollout provides the following controls:
    • On checkbox - when checked, the particles will be checked against the specified culling nodes. When unchecked (default), no culling will be performed.
    • Invert - Cull Inside - when unchecked (default), only particles INSIDE the volumes will be loaded. When checked, particles outside of the volumes will be loaded, removing particles inside.
    • Culling Volumes Named Selection Sets list - the list is set to None by default. It will contain all Named Selection Sets defined in the scene. Select a named selection set and check the On checkbox to start culling particles.
    • Make Culling Named Sel.Set… - this pickbutton allows you to quickly create a Named Selection Set from one or more geometry objects. Simply press the button and pick a scene geometry nodes from the Select By Name dialog and a new Named Selection Set will be created using the node’s name, the On checkbox will be enabled and the new Named Selection Set will be set as the current one, thus enabling the Culling immediately.
      • Moving the PRT Loader’s icon or any of the Culling Nodes in the currently selected Named Selection Set will update the particle display dynamically. Culling Nodes can be freely animated - the top of the stack world space mesh will be used to determine which particles will be loaded.
      • When rendering, particles culled by this feature will be completely skipped and not loaded into memory.
      • In the viewports, all particles requested by the PRT Loader will be loaded in a memory buffer, then a second buffer will be created from them using the culling nodes.
NOTE: Culling is performed AFTER all deformation modifiers, node transforms and Space Warps have been applied to the Particle Loader, because the result depends on the transformation of both the Particle Loader and the Culling Nodes. In a way, the Culling effect could be seen as the top-most Space Warp.

Culling By Distance Threshold

Available in Krakatoa v1.1.0 and higher

  • Culling Dist - when the checkbox is checked, only particles within the given distance to the culling surface will be loaded.
    • When Culling is OFF but a valid selection set of culling volumes is specified, particles on BOTH sides of the culling surface within the specified threshold will be loaded.
    • When Culling is ON, only particles inside the culling volume AND within the threshold distance will be loaded.
    • When Culling is ON and INVERTED, only particles outside of the culling volume AND within the threshold distance will be loaded.

Acquiring Normals From The Culling Geometry

Available in Krakatoa v1.1.0 and higher

  • Normals From Surface - when this option is checked and a valid culling selection set is specified, particles within the culling threshold will acquire the normals of the culling surface. You can use the new Display Normals mode to visualize the result.

Exploring Culling and Normals Acquisition

../../../_images/krakatoa_culling_viewport_base.png
  • This is a PRT Loader with a file containing a box of 100000 particles, showing 10% of them.
  • A sphere has been picked as the Culling Volume, with a small portion of the particles inside the sphere.
../../../_images/krakatoa_culling_viewport_cullingon.png
  • When Culling is turned ON, all particles outside the sphere are culled and not loaded at all.
../../../_images/krakatoa_culling_viewport_cullingon_inverted.png

When Culling is ON and the Invert-Cull Inside checkbox is also ON, the particles Inside the sphere are culled, leaving only the outside particles.

../../../_images/krakatoa_culling_viewport_cullingoff_dist10.png

When Culling is OFF but the Culling Dist. is ON and the Threshold is set to 10, we load only particles at 10 units both Inside and Outside of the sphere, while all other particles are culled.

../../../_images/krakatoa_culling_viewport_cullingon_dist10.png

When Culling is ON and Culling Dist. is also ON with a Threshold of 10, only particles that are BOTH inside the sphere AND at a distance less than 10 units are loaded, all others are culled.

../../../_images/krakatoa_culling_viewport_cullingon_inverted_dist10.png

When Culling is ON, Invert is ON and Culling Dist. is ON, only particles outside the sphere AND at a distance less than 10 units are loaded, all others are culled.

../../../_images/krakatoa_culling_viewport_cullingoff_normals.png
  • Let’s turn culling and Culling Dist. OFF and set the Display to Display Normals.
    • Since the PRT Sequence does not contain a valid Normals channel, no particles are actually drawn (the Normal length is zero).
../../../_images/krakatoa_culling_viewport_cullingoff_normalsfromsurface.png
  • If we turn Normals From Surface ON, particles inside the Culling Dist. Threshold of 10 units will acquire the normals of the sphere even though the Culling Dist. checkbox is unchecked.
  • If it were checked, particles outisde the threshold (those with the zero-length Normals) would be culled.
../../../_images/krakatoa_culling_viewport_cullingon_normalsfromsurface.png
  • If we turn Culling ON in addition to getting the Normals from the surface, only particles inside the sphere and within the Threshold will get new normals, particles inside the sphere but outside the threshold will not get new normals and particles outside the sphere will not be loaded at all.
  • If the Culling Dist. checkbox is turned ON, particles inside the sphere but outside the Threshold would be culled, too.
../../../_images/krakatoa_culling_viewport_cullingon_inv_normalsfromsurface.png
  • Now we invert the culling and get normals only within the Threshold on the outside of the sphere.
../../../_images/krakatoa_culling_viewport_cullingon_inv_normalsfromsurface20.png
  • Here we increased the Threshold from 10 to 20 - more particles outside the sphere get new normals.
../../../_images/krakatoa_culling_viewport_cullingon_inv_normalsfromsurface20_scale2.png

This is the same as the previous example but with Scale Normals set to 2.0 instead of 10.0