HyperVoxels

This type of HyperVoxel is a legacy from previous versions of LightWave. The new Volumetric Primitives are far more physically accurate and give great results that couldn't ever be achieved with this version of HyperVoxels. These legacy HyperVoxels still have a place since they are rapid to create and easily understandable thanks to years of practice.

 Click here to expand Table of Contents...


Introduction

With ordinary polygonal objects, realistic effects like liquids, smoke, clouds, and fire are difficult, if not impossible, to achieve without HyperVoxels. It simplifies the creation of volumetric rendering effects such as photo-realistic clouds, flames, explosions, dust, nebulae, contrails, fluids, smoke, ash, pyroclastics, gelatin, electro-microscopic images, rusted materials, detailed solid and rocky surfaces, and much, much more.

HyperVoxels have computed mass, as opposed to the modeled mass of normal LightWave objects. This opens the door to effects of greater complexity. You can now transform objects dynamically, like merging and slicing objects, without modeling multiple geometries. A common example of this is the action of the substance inside lava lamps.

HyperVoxels can be a surface, volume, or sprite. Surface HyperVoxels are similar to standard LightWave objects. They have a defined surface, but no interior. If you go inside such an object, there is nothing. Volume HyperVoxels, on the other hand, have computed volume. You would use this option to create effects like gases, flames, clouds, explosions, or even short hair or fur. Your camera can go inside these HyperVoxels and still see the texture. The Sprite Mode is a “slice” of a volume HyperVoxel. It renders more quickly, but lacks much of the volume mode’s 3D quality.The HyperVoxels volumetric filter is usually applied to a points-only object or a null object. The reason is that polygons may be visible after rendering and usually this is not desired. However, having polygons may make the object easier to see in Layout. In such cases, you can use the Unseen by Camera object property.

HyperVoxel textures are 3D algorithmic textures, unlike normal surface Bump Maps, which only appear to have depth. This means you can actually get very close to the surface and the textures will look three dimensional. HyperVoxels feature sub-pixel displacement, which results in surface details no matter how close you get. However, HyperVoxels get slower the closer into the them the camera is and for such uses LightWave's HyperVoxel Volumes are recommended.

You can determine the position of HyperVoxels by using a null object or an object’s points. Moving the object will move the HyperVoxel object. Changing the position of an object’s internal points will also change the look of a HyperVoxel object. HyperVoxels will appear around each point and their proximity to each other affects how the object appears on the whole.

A particle animation system is not required. You can achieve many spectacular effects using null objects or points animated by conventional means. However, HyperVoxels are unable to achieve realistic liquid effects.

Image courtesy Christophe Desse

HyperVoxel objects exist just as normal objects do. Thus, they cast shadows, are reflected, and so on. However, currently, plugins do not have access to all lighting information. As a result, HyperVoxels will continue to receive shadows, even if the Receive Shadows option on the Object Properties Panel is disabled.


Here are some short exercises to jump-start you with HyperVoxels.

Example - Starting with HyperVoxels

This exercise gives you a quick hands-on feel for how to use HyperVoxels.

Example - HyperVoxel volumetrics

This exercise will give you a flavor of some of the volumetric features.

Example - Blending HyperVoxel Objects

This exercise shows how different HyperVoxel objects can interact with one another.

Sprite Texture Resolution

The Sprite Texture Resolution setting (on the main HyperVoxel Panel) is a Display setting and does not affect your rendered HyperVoxels. It allows you to set the quality of textures used on HyperVoxel particles in OpenGL in Layout.

HyperVoxels Setting Management

Load/Save buttons allow you to retrieve and store HyperVoxels setting files. This can be used to create a library of attributes.


Use the Copy button to copy the settings for the selected HyperVoxel object to a memory buffer. These can be pasted to the currently selected HyperVoxel object using the Paste button.

Save will save the complete settings for a HyperVoxel, while Load will allow you to be selective about what you want from the file loaded.

Once you hit OK you will be presented with a further choice:

You can enable/disable HyperVoxels for an activated object by clicking in the checkmark column and you will not lose your settings. The Activate button will activate the selected object and set all settings to their defaults. The Deactivate button places the object in an inactive default state. With Activate and Deactivate, you will lose any existing settings.

If the Show pop-up menu is set to All Objects, then all objects in the scene will be listed. HyperVoxels Only will list only HyperVoxel objects; however, this includes disabled HyperVoxel objects.

HyperVoxel types

Surface

The type you will most often use, these are HyperVoxels that appear to be solid objects, although they can blend with their neighbors.

Sprites

The Sprite mode is a simplified two-dimensional slice (or slices) of a HyperVoxel, so it can quickly produce results to give you a fast sketch of the HyperVoxel’s rendered appearance. You might think of it as a slice of a Volume that has been mapped on a polygon that always faces the camera.You may want to use Sprite to accelerate the setup process for Surface or Volume modes. It’s even great for instances where you don’t need a full 3D volumetric effect, like a smokestack in the distance.

Although Sprites are two-dimensional in nature, you can still fly a camera through them. The sprite will begin to dissolve when the camera gets into it and eventually fully dissolve when the camera hits the slice.

Volume

Gaseous HyperVoxels. They can appear as wisps of vapor or clumps of foggy material.

Geometry Tab

Enter a specific radius for the individual particles in the Particle Size field. Click Automatic Sizing to compute an average size - this is a handy way to find a starting point. The average particle size is based on the shape of the entire object - HyperVoxels surfaces will not intersect at this setting.

When you first activate an object, automatic sizing is performed for you.

Rendering time is related to how much the particles intersect each other - the more intersections you have, the longer the rendering time. For fastest rendering, always try to use the smallest number of particles and the smallest Particle Size that achieves acceptable results.

Size Variation sets the maximum percent that the particle size can vary. For example, a particle size of 1m with a variation of 100% can be as small as 1m and as large as 2m. Using a variation of 50% would yield particles ranging from 1m to 1.5m in size. Use this setting to create random disturbances in the surface.

Stretching and Rotating HyperVoxels

You can stretch HyperVoxels on a selected axis or based on velocity (Stretch Direction). The amount of stretching is determined by the Stretch Amount setting, which may be animated. When using nulls, you may stretch HyperVoxels by animating normal Layout XYZ size values.

Left: Without Stretch Direction, Right With Stretch Direction

HyperVoxels also respect the rotation of the object. The Maintain Volume option on the HyperVoxel Panel Geometry Tab will cause the HyperVoxels to maintain their volume. This means that when they get squashed, they will maintain the same area.

Align to Path

Align to Path causes the HyperVoxels to rotate as they follow a path. This can be particularly important when using particles.

Blending HyperVoxels

Separate HyperVoxel items can interact with one another. You can individually set how the selected object interacts with other HyperVoxel objects. In order for HyperVoxels to interact:

  • All must belong to the same Blending Group.
  • All must have a Blending Mode selected.

Here, the two objects are shown separately:

Left: Object 1, Right: Object 2

(none) means it will not interact with other HyperVoxel items.

No Blending

Additive will smoothly blend HyperVoxels.

Object 1 Additive, Object 2 Additive

Negative will make the object push away portions of other HyperVoxel items that it comes in contact with - sort of like an animated boolean effect.

Object 1 Additive, Object 2 Negative

Effector is kind of a cross between Additive and Negative.

Object 1 Additive, Object 2 Effector

A Blending Group is the group of HyperVoxel objects which you want to interact with each other. You can select an existing group or create a new one.

The Metaball blending method can be used with all HyperVoxel types. Rather than just retaining the two former preset choices (Metaballs 1 and Metaballs 2) the implementation was revised to allow for control of the algorithm via a percentage entry field and animation of the value using an envelope.

To enable, first check on the Blending toggle. The Blending Scale field now allows for control of the blending algorithm. The former Metaballs 1 option can be matched with a setting of 75%, and the Metaballs 2 option with a setting of 100%.

It is now possible to use any value, including values above 100%. This helps to provide quite a range of looks, including more fluid-like HyperVoxels setups. The setting can also be animated.

The upper limit for particles has been removed. Although there is now no fixed upper limit, bear in mind that each particle can take 2.5 KB or more per second of animation at 30fps. Increasing the number of particles to more physical memory than you have available will result in LightWave crashing

Show Particles

The Show Particles option will display a bounding sphere in viewports.


The Blending Box will enable/disable the surface tension of HyperVoxels. Checked, Blending will result in the HyperVoxels connecting in close proximity. Unchecked, the HyperVoxels will not connect in close proximity.

With Blending off, you can create things like sand, gravel, and other loose particulate matter.

Shading Tab

Surface Mode

The parameters on the Shading Tab work just like their cousins on the Surface Editor.

Self Shadows lets the HyperVoxel cast shadows on itself. (The HyperVoxel will cast shadows on other objects in the normal way.) Full Refraction forces rays to bounce each time a new refracting (i.e., transparent) surface is found. If this option is inactive, one refraction bounce is computed, which is enough most of the time. Full Refraction will, of course, increase render time, but will result in more sophisticated effects.

You might try the (faster-rendering) corresponding bump textures on the Shading Tab without HyperTextures, if you don’t need the true surface details. Remember this: “Don’t get hyper if bumping will do” or “A bump in the night is not worth getting hyper over.”

Volume Mode

The options on the Shading Tab are different for Volume HyperVoxels, which are gas- or cloud-type effects. Use Color, Luminosity, Opacity, and Density settings to change those parameters for the volumetric object.

The Thickness setting, which defaults to 50%, lets you adjust the general heaviness of the volume. Higher Smoothing values yield less of a hard-edged look and volumes will appear more wispy.

Volume Mode Advanced

The various items on the Render Quality pop-up menu determine the level of detail HyperVoxels uses to render the volume. The default is Medium and should be adequate for most situations. Near Clip is the distance from the camera where the rendering starts. The default value is normally fine. A lower value will render finer details, but take longer to render. You might adjust this setting if the camera was inside a cloud. It really depends on the scale of the HyperVoxel objects and the scale of the details you want to see.

The Volumetric Shadows option creates shadows within the volume, which add detail and realism. However, it can increase render time significantly, especially when you are trying to simulate very dense clouds, like volcanic smoke. The Texture shadows option yields a very realistic shading of the hypertexture, but increases rendering time significantly. If you disable this option, you will miss all of the hypertexture shadow details.Use the Shadow Quality pop-up menu to choose the render quality of the shadows. The Shadow Strength sets the darkness of the shadows.

The Illumination pop-up menu determines how the HyperVoxels volume is lighted. Self acts as if the light comes from the viewer. It can be useful to see more details on the object. With Constant, the scattering of light is constant, that is, the amount of light scattered at one point is proportional to the amount of light received at that point.

Rayleigh simulates a strong forward scattering of light within the volume. Light scatters in the direction of the light relative to the viewer, which means that illumination will be at its maximum when the light faces the viewer. This is perfect for back-lit clouds, smoke, and so on.

Beer uses the pattern’s sample density amount as the illumination value, dramatically reducing contrast between lighted areas. The setting uses the physical model for scattering of light inside a gas, and is a good setting for clouds. For a more “cartoony” look, try CelShade.

You can choose to have all lights affect the HyperVoxel with Use All Lights, or choose one or two specific lights.

Try to avoid using these Light options, if you are ray tracing shadows. Ray-traced shadows on volumetrics is incredibly computationally intensive and will often result in unacceptable rendering times. A single pixel in volumetrics requires 20 or more samples and a shadow is ray traced for every sample. Try to fake lighting with Ambient Intensity and surface Luminosity or use Shadow Map Spotlights.

Ambient Color lets you specify the ambient light color of the volume. This setting works hand-in-hand with the Color setting on the Shader Tab.

Ambient Color is similar to ambient light in Layout, except that it applies only to the selected HyperVoxel object. Basically, the shading process is very similar to what happens with regular object surfaces.

Because of the way illumination is calculated inside volumetrics objects, Ambient Intensity can be higher than 100% without overexposing the image.

Sprite Mode

The options on the Sprite Mode Basic Subtab are similar to the options available for the Volume mode. This makes sense since the Sprite mode is just a slice of a Volume mode HyperVoxel.

Density on sprites is a multiplier for both Opacity and Luminosity. It is essentially the opposite of Dissolve.

With the Number of Slices setting, you can “thicken up” the effect by increasing the number of slices used for sprites from the default setting of 1. This allows you to get something a little closer to the Volume Mode while still retaining the speed of the Sprite Mode.

Left: 1-Slice, Right: 3-Slice

You may choose to light the Sprite using all lights in your scene or up to two specific lights.Orient Slices to Ray orients the sprite’s coordinate system with the ray, rather than the default of aligning with the camera.

On the Clips Subtab, you can map an image directly onto a sprite using the Add Clip button. Any image available to the scene may be selected. Use the Image Editor to load an image not already available.

Clips are added to the HyperTexture. If you want to see only the clip, set the Texture option to (none) on the HyperTexture Tab.

Some options on the Alpha pop-up menu let you cut away parts of the image you don’t want to use. If the image file includes an alpha channel, choose Embedded to use the alpha channel. Use Luminosity to leave brighter parts of the image. The Black mode will cut away black areas. The Threshold level lets you increase the range for what is considered black.

The Rotation setting sets a rotation speed for your clips. This is perfect for effects like billowing smoke and explosions. The higher the setting, the faster the rotation. Positive values make the clip rotate clockwise. Rotation always faces the camera.

If you do not want to use the color information in the image, uncheck Use Color. Then, only the greyscale information will be used. Antialiasing will yield better-looking edges, but it significantly increases render time and memory requirements.

When Solid is checked, the sprite is rendered as a solid object, preventing the normal additive result of overlapping sprites.

Sprite Clip Frame Offset

If you use HyperVoxels with particles, you can use multiple clips. The Frame Offset setting determines how you want to map an image sequence to a given particle. Particle Age starts the sequence for a particle at birth. Thus, the image will likely be different for particles at a given frame. Uniform will use the layout time as the time in the sequence. Thus, the image used is the same at each frame. When the bottom of the list is reached, it starts again from the top. Random will assign a random offset to each particle.

Frame Offset is an important control for sprite animations. It allows you to decide how to attach images to particles. Particle Age is probably the most useful. You can have literally hundreds of particles, each mapped with distinct image sequences. For example, you could have particles with independent water-splash image sequences, creating a complex and rich visual effect.

HyperTexture Tab

The Texture pop-up menu determines what the texture will look like. The textures in this menu correspond to the identically named procedural textures, although not all of them will be available here.


The big difference is when you are using a Volume (Object Type) HyperVoxel. In this case, you can animate the texture effect.

In the Texture Effect pop-up menu you have several options. Turbulence makes the texture move towards the viewer. It is like animating a texture with the texture velocity parameter. Billowing animates the texture by rotating outward along a velocity vector (à la Dante’s Peak). It is very good for explosions. Displace adds variations to the texture. The effect is best seen when the texture is moving. Dissolve gradually lowers density, making particles disintegrate.

Velocity Translate moves the texture in the direction of the particle velocity. Since each particle has a different velocity, this can result in a cool and complex texture motion. Dissolve & Expand might be used on explosions. It dissolves the effect as it expands. Some trial and error may be necessary to get the desired look.

The Effect Speed setting is the duration of the looping cycle. The value is equal to a percentage of Layout’s Default units, on the General Options Tab of the Preferences Panel, per frame.

Gradient Input Parameters

Special Input Parameters will be available for texture gradients on HyperVoxel parameters. Particle Age is simply the age of (Particle FX) particles, in frames. Particle Speed is the particle speed in default LightWave units (usually meters) per second. Use Time to change the setting over a range of frames.

The Particle Weight Input Parameter is used with regular objects that use HyperVoxels and requires them to have a Weight Map. The object must also have the HyperVoxels Particles Displacement plugin added. Set Particle Weight should be checked and the Weight Map selected.

For HyperTexture and Shading settings, gradient textures can use a distance to particle (along a specific axis) input parameter. This is the surface distance from the actual particle position along the selected axis.

Particle Weight Input Parameter

  1. Create an object in Modeler.


  2. Create a Weight Map and add some random weighting to the points.


  3. Load the object into Layout.
  4. Choose Window > Volumetrics and Fog Options.
  5. Open the HyperVoxels Panel and activate the object.
  6. Open the object’s Properties Panel, add the HyperVoxels Particles Displacement plugin. Open its options, activate Set Particle Weight and choose the Weight Map.


  7. On the HyperVoxels Panel, add a texture to the Particle Size and set the Layer Type to Gradient. Choose Particle Weight as the Input Parameter. Create some keys.