This page is a part of continuing efforts to make the LightWave documentation complete. If a link takes you back to the main page, it leads to a page that hasn't yet been created. Let us know if you find one!
Items common to multiple pages, or items written but not yet placed. Items on this page are snippets designed to be placed in other pages, you don't need to trawl through them individually, unless you're the kind of person that enjoys that kind of thing
Parenting
tip
If you select multiple objects in Layout and hit the E key, the objects selected will be parented to the last object selected.
The E key is pressed after each lasso selection to parent one null to the other selected
Rotofix
RotoFix is a Layout generic LScript, added to 2019.0.2, that adjusts the rotation keyframes of a selected item, in order to correct for rotation value wrap-around (e.g. heading jumping from 179 degrees to -179 degrees, instead of going from 179 degrees to 181 degrees). This is important for correct interpolation (e.g. 179 degrees to -179 degrees is a change of 358 degrees, while 179 degrees to 181 degrees is a change of only 2 degrees, even though the initial and final orientation of the item is the same in both cases).
It does this by minimizing the change in rotation values between keyframes while keeping the resulting orientation of the item unaffected.
Affect Diffuse
Deactivate to prevent a light from affecting the general color or brightness of a scene. This is particularly useful when you add lights to a scene for creating specular highlights. Often you want a light that creates a nice specular highlight on a surface, but you don’t want it to affect the rest of the lighting.
Affect OpenGL
This option is for display purposes only. It will not change the effect a light has on a rendered image. With this option you can prevent the light from affecting Layout’s display, which uses OpenGL. This is important since the number of lights that can affect an OpenGL display is usually limited to 8 depending on the graphics card (if your card supports more, see the GL options tab of the Preferences Panel to increase your maximum).
Affect Specular
Deactivate to prevent the light from creating specular highlights; the light still affects the color and brightness of the scene, however. This is very nice for adding lights in a scene to approximate the look of radiosity. A scene often needs a very high number of lights to give it the appropriate realism and warmth. However, adding too many lights can cause objects with a high Specularity setting to reveal the light’s presence with multiple hot spots. By disabling specularity for these lights you can overcome the problem.
MIS Samples
Some lights perform Multiple Importance Sampling, a more accurate version of the Importance Sampling introduced in LightWave 2015 that is available through the Global Illumination tab in Render Properties. It is more accurate because it is directly sampling the environment image, whereas the GI version is one step removed sampling the GI result of the environment map.
Visible to Camera
A light with this option will be presented in the render as a visible light in the shape and size of its OpenGL representation. A light's size and shape can be altered in the Light Properties panel, or, in the case of Area and Linear lights, by using the Scale and Stretch tools in the viewport.
note
Though the Visible to Camera option may not be set in Light Properties, lights will still appear in reflections unlike earlier versions of LightWave.
Volumetric Distance
The Volumetric Distance setting, added in LightWave 2019, is the distance the volumetric effect reaches from the ray.
Obj Options
The OBJ tab contains options for importing and exporting OBJ file objects.
OBJ One Layer - imports the object as a single layer
OBJ One VMap - imports the object with a single vertex map
OBJ Pivot at Center - creates the pivot of the object at the center of the object
OBJ Write Normals - writes the normals associated with the object when saved
OBJ Merge Points - merges points sharing the same space
OBJ Reverse Ka & Kd - Reverses Ambient Occlusion and Diffuse channels
OBJ Double Sided - Creates double-sided geometry
OBJ Parts - Keeps LightWave Part Polygon tags
OBJ Foreground Layers - Only saves layers marked as foreground to OBJ
OBJ Continuous UV - UVs have shared points rather than duplicated
OBJ Smoothing Groups - Supports the new Smoothing Groups system
OBJ Remove Hidden - Polygons that are hidden will not be exported (Hiding layers does not have any effect)
OBJ Import Scale - sets the scale of an object when it is imported
OBJ Export Scale - sets the scale of the object when it is exported
note
Modeler can create vertex normal maps by exporting an object in OBJ format with smoothing groups unchecked here.
Sliders
(default keyboard shortcut Ctrl D)
Sliders (Modify > Tools > Sliders) are slider gadgets that are displayed over viewports. An individual slider is tied to a specific animation channel. A slider will indicate the current value of a channel and also let you interactively adjust that channel value. Sliders are useful for all kinds of animations, especially character animations. A good example can be an animated hand, with multiple bone movements for multiple fingers.
To use sliders in a scene:
Add the Sliders custom object (Object Properties Panel) to any object.
To display and interact with the sliders, choose Modify > Tools > Sliders. The sliders for the last current object (with the Sliders custom object) will be editable when the Sliders tool is active. Keep this in mind if you have more than one object with the Sliders custom object.
tip
Remember, as with all Layout tools, you’ll need to select another tool (Move, Rotate, etc.) to deactivate the Slider tool.
To configure your sliders:
Open the Sliders Custom Object settings dialog from the Object Properties Panel.
The left window (Channels List) will list all of the channels in the scene. To attach a slider to a channel, simply select the channel in the left window and double click or click the Add Channel button. Selected channels in the right window can be removed with the Remove Channel button.
The Range Min and Range Max settings define the interactive range of the slider. The underlying channel can go beyond these values, but the slider’s range of control and feedback will be limited to this range. If the underlying channel goes outside the range, the slider value will turn red.
Clicking on the slider handle will immediately change the channel to the slider’s corresponding value.
The description Label will default to the channel name, but you may edit that if you desire. You can also set the color used for the slider with the Color preset pop-up menu or specific RGB values.
Working with OpenGL Sliders:
There are three controls along the top. Drag the far-left one to move the slider group. The Envelope (E) button will display the Graph Editor with the associated channels in the curve bin. The right/left arrowhead (<>) button can be dragged to scale the size of the slider group. The arrowhead button on the right will minimise/maximise the slider display.
In the individual slider entries, the handle can be grabbed to slide to any value in the range set up and the arrows at the right end are to jump from keyframe to keyframe.
tip
To simplify using sliders, use the Add Slider Bank generic plugin command (Not assigned to the interface by default). It will add a null object, apply the sliders custom object to it, and open the sliders interface, all in one step.
Move TCB
Another tool in the Modify menu will directly affect your motion path. At the bottom of the Modify list you will find Move TCB. This allows you to set the biases discussed in the Graph Editor section of the manual, but from Layout, rather than having to visit the Graph Editor itself. To use it, move to a keyframe, click on the Move TCB tool and you will notice that the lower left corner now displays T, C, B instead of the more familiar X, Y, Z or H, P, B.
You can enter figures in here for what you wish your TCB settings to be, or you can use the mouse:
LMB: Moving left and right alters the Tension
Ctrl+LMB: Moving left and right controls the Continuity
RMB: Moving left and right controls the Bias
Image Sampler
An image node that allows more external control than the standard Image node. It uses the Projection nodes to determine how the image will be attached to the surface. A Projection node isn't needed for intrinsic Object UVs so the Image Sampler's Color output can be plugged straight into the Color Input on a primitive shape.
Invert Alpha inverts the alpha portions of the image so that the alpha region becomes solid and non-alpha becomes transparent.
Invert Color inverts the color of the image.
2019.1 brings separate color channel outputs to the Image Sampler node.
Texturing the plane does not need a projection because the plane is a primitive with intrinsic default UV map.
Dynamics Part Info
The Dynamics Parts Info node allows you to control an individual element of a Bullet Parts object. You need to attach an Item ID node pertaining to the Parts object into Item ID on this node and an Integer node to determine the part you wish to use.
In this screenshot we show the Pyramid-shaped Null has the Nodal Motion modifier attached. When we press play on the scene, the null will jump to the Part indicated by the Integer node. We have it set to the default 1, which means the Null will jump to the middle front box. As the boxes fall, the null will match movement and rotation to the part.
Inputs:
Item ID - The dynamic item in the scene that uses Parts
Part Number - The ID of the individual part
Polygon Index - The polygon index for the part
Outputs:
Part Number - Index number of the part
Internal Polygon - 1 if the polygon is a boundary between two parts which have not separated yet (i.e. the polygon is inside the volume, not on an outside surface), 0 otherwise. This is what you would use to clip away polygons that shouldn't be visible yet
Part World Position - World position of the center of mass of the part
Part World Right/Up/Forward - Right/Up/Forward vectors of the part in world coordinates. Parts start off with the same orientation as the item
Part World Rotation - HPB rotation of the part in world
note
Taking the Internal Polygon output to the Surface Clip input will hide internal polygons for a fractured object in Bullet
Fine Adjustment - Rotation
note
Using the RMB (and Ctrl) for controlling motion will result in much finer rotation increments.
Fine Adjustment - Stretch
note
Using the RMB (and Ctrl) for controlling motion will result in much finer stretch increments.
Preferences
The Edit menu contains three entries designed to ease preferences management:
Revert to Startup Preferences - This entry will revert to the menu, shortcut and plugin options you had set when you started this session of Layout or Modeler
Import Preferences File... - Opens a requester to look for a valid preferences file. The keyboard shortcuts and menu files that accompany it will also be loaded
Export Preferences File... - Exports a set of three config files: the main preferences and accompanying keyboard shortcuts and menu configs
Package Scene
Package Scene, found in the Save menu, gathers information from your scene and locates the items into the specified directory. You can choose to Package Files for transporting it to a different hard drive location, either locally or on another machine; Consolidate Files, which will bring any files that are currently not in your content directory into it; or Create a Zip Archive of your scene. This last is like Package Files but with the addition of archiving the content directory.
Typing a path name works, just remember to hit Tab once you are finished typing
Package Scene is a Python script that will organize your scene content. It will also deal with .MDD, .BDD, and .PFX files, and works whether or not your content is actually in the current content structure. If a content element is currently loaded into your LightWave scene, Package Scene will find it.
VDB files and sequences are not copied with content directories
Select the destination folder and if you want a new level under that for each subdirectory, type the name in the Subdirectory box. The paths will be updated after tabbing or pressing the Enter key.
Preserve Existing Structure - When checked, Package Scene will keep any specific content directory structure you are using, preserving subfolders and naming conventions
Copy Image Sequences - Image sequences can often get very big so are often defined outside the normal content directory structure. If you'd like to keep the scene package integral, you can check this option to bring a scene's image sequences into the content directory structure. The choice of using a named subfolder for sequences is yours
Copy UDIM Sequences - As above, but for UDIM image sequences.
Copy Radiosity Cache File - If a cache has been generated it makes sense to include it with the package so it doesn't need to be regenerated.
Reload Original Scene After Export - if you are using Package Scene to prepare files for sharing, it may be that you want to reload the original scene, if so check this option. If you want to make sure the Package has worked, you will probably want to use the packaged scene so leave this option unchecked.
Export for 2015 - Saves a version of the scene that can be loaded in LightWave 2015. The scene file version is converted to one 2015 can load and objects are saved in LWO2 format. Be aware that 2018+ have many features that don't exist in 2015, from lighting to surfacing so further editing of the 2015 version of the scene will no doubt be needed.
After the interface in which you select the target directory for the export, the script:
Gets a list of all images and their paths.
Copies these images to the target directory.
Replaces all the images with their new location.
Changes the content directory to the target content directory.
Saves each object to the target location.
Saves the scene to a temp location.
Parses the scene file to find .MDD, .BDD, and .PFX references.
Finds and copies the dynamics files to their target location.
Rewrites the scene file, changing the respective dynamics paths, to the target location.
Loads the new scene file. This means at the end of operations, the user is now active in the newly exported and saved version of the scene, not the original scene from the original location.
If Reload Original Scene is checked, it will instead load the original scene.
Intro
OpenVDB nodes may have the following common settings:
Voxel Size - Size of the voxel grid in meters (LightWave supports uniform grids); the size of the voxel "blocks" that will make up your object
Inner Bandwidth - Inner Bandwidth for level set in voxels
Outer Bandwidth - Outer Bandwidth for level set in voxels. For fog volumes, this defines the "softness" until maximum density is reached.
Fill Interior - Toggle for whether the volume will be solid when cut into or just a shell - like polygons are. Turning on Fill Interior with a Fog Volume will soften the outside of the fog
Coordinate System - How the voxel will be transformed. There are three choices
Local - No transform
World - Transform into world space
Parent - Use the parent item's space
Grid Name - the base name of savedgrid.vdb files. Files will be appended with the frame number and written with temperature, density, and velocity grids
Solid Volumes from Meshes and other Scene Items
tip
Creating volumes from meshes relies on polygons being tris or quads. NGons are not supported
Creating a volume this way requires a target mesh, primitive shape or Particle emitter that needs to be in the scene. It can be out of camera view, hidden from render and hidden in OpenGL and the Object Replacement will still work. To create a volume from this item requires adding a null and using the Object Replacement entry OpenVDB Evaluator. Clicking Properties for it will bring up a Node Editor window.
Mesh To Volume
In the OpenVDB nodes group, Mesh To Volume will be the node to convert your mesh objects into volumes. There are two choices for conversion, **Fog Volume ** will convert a mesh into a volumetric fog, much like the image at the top of this page, but you need to use an OpenVDB primitive. The second option is Level Set, which creates a volumetric mesh object. The Voxel Size setting will determine the resolution of your volumetric object. For the Logo Rezzing Up example, a Scalar Constant node was used with an envelope that went from the default 1 down to 0.0025 to create the increasing resolution of the volume.
Particle Radius is where you set the size of individual particles if you will be outputting a particle system from this node.
The new Attributes tab, added in 2020, is where you can transfer details like vertex maps or surfacing information from the original mesh to your OpenVDB object.
Surfaces will all be added. You cannot just choose one.
Shape To Volume
Will create a volume from LightWave primitive objects.
Fog To LevelSet
Converts a Fog grid to a Level Set mesh object. A fog grid can be imported using the OpenVDB Info node. Double-clicking the node brings up its window with Iso setting and Normalize toggle. From Particles
There is now a Particle System output to send particles directly to the Editor Input. You can choose to represent particles as individual spheres or a trail (of connected spheres). When you select Trail, a Trail Resolution setting becomes available. Higher values mean more trail particles and might be needed for high-velocity trails.
The Morphology tab includes elements that are found in the Filter node that can be applied directly, without needing a discrete Filter node.
warning
When you have a particle emitter being meshed, you cannot bring up the particle properties, as upon meshing (the OpenVDB Evaluator being an object replacement procedure), the PFX Emitter server pane will close. The only way to adjust particle properties, in this case, is by using the modal FX Browser panel.
The same is true for other server pane items - changing the subdivision level, for example - but in that case, the only workaround is to disable the VDB object in the Scene Editor by unchecking the render flag.
warning
FX Emitter particles must have a Size, and that size must be output with the Output Size toggle. You don't need to Show Size; it just helps visually.
This node will create a volumetric object from a stream of particles created using the FX Emitter or the Scatter or Solver nodes here. You have the option to either create sphere shapes or a trail per particle derived from their position, radius, and velocity. Each trail is generated as CSG unions of sphere instances with a decreasing radius.
tip
The direction of a trail is inverse to the direction of the Velocity vector, with a length of |V|. The radius at the head of the trail is given by the radius of the particle and the radius at the tail of the trail is Rmin voxel units which has a default value of 1.5 corresponding to the Nyquist frequency.
Particle System - A dropdown for choosing the specific particle system you want to use. Using the Input ghosts this control
There are two tabs next:
Surface - Details how the particles look:
Particle Count - A readout of attached particle system particle count
Space - Choose whether your particles are situated in Local, Parent or World Space
Particle Type - Choice between 'Sphere' and 'Trail'. 'Sphere' will create distinct bubbles, whereas 'Trail' will attempt to use particle velocity to create a trail of diminishing size. Each trail is generated as CSG unions of sphere instances with a decreasing radius
Trail Resolution - Only available when the Trail Particle Type is chosen. The default of 1.0 trails off " normally". Less than 1.0 means fewer trail particles and separation might be noticeable. More than 1.0 means more trail particles are created. Higher trail speeds might need more particles to stay stream-like so separation doesn't show
Voxel Size - Size of the Voxel for the particles. Voxels sizes in a network should be the same, especially combining or collisions between VDB grids
Iso Surface - Iso sizes in a network can be different but the editor input node will create the final meshing
Morphology - Operators so additional nodes are not needed
Dilation - Dilate the grid along its normals making it bigger
Closing - Dilate the grid to close holes then erode closing openings
Smoothing - Gaussian smoothing
Gaseous Volumes from Scene items
Gas Solver
Gas solver. Use Stam's stable fluids method to advect density and temperatures. Both the density and the temperature affect the fluid’s velocity. Heavy smoke tends to fall downwards due to gravity while hot gases tend to rise due to buoyancy. We use a simple model to account for these effects by defining external forces that are directly proportional to the density and the temperature.
buoyancy = (-densityscale * density * Vec3f(0, 1, 0)) + (temperaturescale * temperature * Vec3f(0, 1, 0));
External forces can be added on the Force Grid input. This input accounts for external forces like gravity, wind, turbulence and merely is added onto the end of the momentum equation.
Temperature Tab
Ambient Temperature - Ambient air temperature
Clamp Temperature - Clamps the temperature to the minimum value set below (otherwise the gas cools to the point where it falls like dry ice)
Min - The minimum temperature (in Celsius) for the gas to fall to
Normalize Temperature Grid - Outputs the temperature grid as a scale between 0 and 1, rather than, say, 60 and 900
Fuel Temperature - Fuel temperature as it is emitted
Gas Density - Density of emitted smoke from the fuel grid
Fuel Velocity - Velocity of emitted smoke and heat from the fuel grid
Density Scale - Scale of the downward pull on dense smoke
Buoyancy Scale - Scale of the temperature gradient pulling smoke upward
Cooling Scale - Scales the cooling rate
Dissipation - The amount of density that falls off over each iteration so that the gas thins over time
Advection Tab
Spacial - Set the spatial finite difference scheme. In other words, how accurately the gradients of the signed distance field are computed depends on your pick of interpolator. The choices further through the list are more accurate but take more time
Spacial Tracker - Set the spatial finite difference scheme. How accurately time is evolved within the timestep. The choices further through the list are more accurate but take more time
Temporal - Set the temporal integration scheme. How accurately time is evolved within the renormalization stage. The choices further through the list are more accurate but take more time
Temporal Tracker - Set the temporal integration scheme. How accurately time is evolved within the timestep. The choices further through the list are more accurate but take more time
Integrator - Set the numerical advection scheme. The choices further through the list are more accurate but take more time
Limiter - Set the limiter scheme used to stabilize the second-order MacCormack and BFECC schemes
Max Divergence Steps - Maximum number of iterations of the pressure solver
Advection Sub Steps - Substeps per integration step. The only reason to increase it above its default value of one is to reduce the memory footprint from dilations - likely at the cost of more smoothing!
Curl Scale - Curl strength of the vorticity confinement
Domain Tab
Boundary - One of three choices:
Free Slip - Velocity is negated at the boundary axis
No Slip - Velocity is set to 0 at the boundary
Outflow - The grid is clipped at the boundary
The Min and Max domain fields are for setting the minimum and maximum extents (corners) of the simulation's domain.
Cache Tab
Cache Grids - Toggle for enabling the caching of grids to Cache Path folder. Once cached they can be loaded without simulation
Cache Name - Base name of saved grid . vdb files. Files will be appended with the frame number. Files will be written with temperature, density, and velocity grids
Grid Path - Path to save folder
Clear Cache - Clear all files in the cache folder
Behavior - A dropdown with three choices:
Manual - Cache control is completely up to the user
Warn - A message will warn "The cache is invalid, should it be cleared?"
Automatic - The cache is cleared automatically, when necessary
To Fog Volume
Converts an SDF grid (signed) to a fog volume (unsigned) with a filled interior. There are no options.
Tools
You can manipulate OpenVDB volumes with the following included tools.
Advect
Advect a Signed SDF grid with a velocity grid. Requires a Velocity Grid vector to give movement and direction.
Spatial - Set the spatial finite difference scheme. In other words, how accurately the gradients of the signed distance field are computed depends on your pick of interpolator. The choices further through the list are more accurate but take more time
Spatial Tracker - Set the spatial finite difference scheme. How accurately time is evolved within the timestep. The choices further through the list are more accurate but take more time
Temporal - Set the temporal integration scheme. How accurately time is evolved within the renormalization stage. The choices further through the list are more accurate but take more time
Temporal Tracker - Set the temporal integration scheme. How accurately time is evolved within the timestep. The choices further through the list are more accurate but take more time
Integrator - Set the numerical advection scheme. The choices further through the list are more accurate but take more time
Limiter - Set the limiter scheme used to stabilize the second-order MacCormack and BFECC schemes
Normalizing Steps - A number of renormalization passes can be performed between each substep to convert it back into a proper signed distance field. Prevents jerky motion but soften and slows the velocities
SubFrame Steps - Substeps per integration step. The only reason to increase it above its default value of one is to reduce the memory footprint from dilations - likely at the cost of more smoothing!
Rebuild SDF - Toggle to rebuild and retrack the narrow band of the SDF
Advect Points
This node will advect the points in a particle system along a velocity field. The first thing you need is a particle system to use. Node inputs are:
Particle System - Particle system to advect
Velocity Grid - This must be a vector-valued VDB primitive. You can use the Vector Merge node to turn a * vel.[xyz]* triple into a single primitive
Closest Point Grid - Used for projection and constrained advection
In the node's panel, the controls are as follows:
Type - Three types are proposed:
Advection - Move the point along the velocity field
Projection - Move the point to the nearest surface point
Constrained Advection - Move the along the velocity field, and then project using the closest point field. This forces the particles to remain on a surface
Integration - Later options in the list are slower but better at following the velocity field
Iterations - Number of times to try projecting to the nearest point on the surface. Projecting might not move exactly to the surface on the first try. More iterations are slower but give a more accurate projection
Steps - How many times to repeat the advection step This will produce a more accurate motion, especially if large time steps or high velocities are present
Add Particles - At each frame add the input particles to the advection
Lifespan - How many frames the advected points will live for
Analysis
This node presents various grid manipulations. Depending on the input grid type and the operation the output grid type will vary. Once an input is connected and the grid type is known the list of available operations will be collapsed to only show appropriate choices. Finally, if you change the operation the grid output will disconnect (ie scalar to vector).
Gradient - Vector that points perpendicular to the values basically un-normalized normals (Scalar - Vector)
Curvature - A measure of the surface curvature (Scalar - Scalar)
Laplacian - A smoothed version of the input (Scalar - Scalar)
Closest Point Transform - Direction to the closest point (Scalar - Vector)
Divergence - A measure of the change in quantities (Vector - Scalar)
Curl - A direction perpendicular to the input grid vectors (Vector - Vector)
Magnitude - The scale of the input vectors (Vector - Scalar)
There is also a Scale input for further adjustment.
CSG
Takes the Result from two SDF shapes and combines them in the fashion that should be familiar by now -
Union - Combines the two shapes, and is the default option
Intersection - Only leaves the parts of the two shapes that overlap
Subtraction - Removes Shape A from Shape B
The velocity of the input grids will be reconstructed and output.
Combine
Combines grids using scalar operations.
Combination type - The different math operators that can be brought to bear:
Copy A - Use A , ignore B
Copy B - Use B, ignore A
Invert - Use 1 minus A
Add - Add the values of A and B (Using Add for fog volumes, which have density values between 0 and 1, will push densities over 1 and cause a bright interface between the input volumes when rendered. To avoid this problem, try using the Blend 2 option)
Subtract - Subtract the values of B from the values of A
Multiply - Multiply the values of A and B
Divide - Divide the values of A by B
Maximum - Use the maximum of each corresponding value from A and B (Using this for fog volumes, which have density values between 0 and 1, can produce a dark interface between the inputs when rendered, due to the binary nature of choosing a value from either from A or B. To avoid this problem use Blend 1 instead)
Minimum - Use the minimum of each corresponding value from A and B
Blend 1 - (1 - A) * B. This is similar to SDF Difference, except for fog volumes, and can also be viewed as a " soft cutout" operation It is typically used to clear out an area around characters in a dust simulation or some other environmental volume
Blend 2 - A + (1 - A) * B. This is similar to SDF Union, except for fog volumes, and can also be viewed as a "soft union" or "merge" operation. Consider using this over the Maximum or Add operations for fog volumes
A Multiplier - Multiply voxel values in the A VDB by a scalar before combining the A VDB with the B VDB
B Multiplier - Multiply voxel values in the B VDB by a scalar before combining the A VDB with the B VDB
Resample - Multiple options here. If the A and B VDBs have different transforms, one VDB should be resampled to match the other before the two are combined. Also, level set VDBs should have matching background values (i.e., matching narrow band widths):
Off - No resampling
B to Match A - Resample B so that the narrow band width is the same as A
A to Match B - Resample A so that the narrow band width is the same as B
Higher-res to Match Lower-res - Resample the higher resolution data so that the resolutions match
Lower-res to Match Higher-res - Resample the lower resolution data so that the resolutions match
Interpolation - When you choose a resampling option other than Off, the Interpolation choices become available. There are three to choose between:
Nearest - Nearest Neighbor interpolation is fast but can introduce noticeable sampling artifacts
Linear - Linear is the middle ground of speed and quality
Quadratic - Quadratic interpolation is slow but high-quality
Deactivate - Toggle to deactivate active output voxels whose values equal the output VDB's background value. When this option is checked, the field below becomes active:
Deactivate Tolerance - When deactivation of background voxels is enabled, voxel values are considered equal to the background if they differ by less than this tolerance
Prune - Reduce the memory footprint of output VDBs that have (sufficiently large) regions of voxels with the same value
tip
Pruning affects only the memory usage of a VDB. It does not remove voxels, apart from inactive voxels whose value is equal to the background
Prune Tolerance - When pruning is enabled, voxel values are considered equal if they differ by less than the specified tolerance
Flood Fill - Reclassify inactive voxels of level set VDBs as either inside or outside. This option will test inactive voxels to determine if they are inside or outside of an SDF and hence whether they should have negative or positive sign
Filter
This node adjusts the inner bandwidth of a volumetric signed distance field represented by a VDB volume
Filters the level set grid:
Filter Type:
Renormalize - Repair level sets represented by VDB volumes. Certain operations on a level set volume can cause the signed distances to its zero crossing to become invalid. This node iteratively adjusts voxel values to restore proper distance
Mean Value - This performs the equivalent of a simple box blur by taking the mean of the surrounding values
Median Value - This chooses the median of the surrounding values, good for homogenizing noisy data to avoid spikes
Mean Curvature - Finds the average curvature for a location and moves the surface along its normal to smooth out bumps
Laplacian Flow - Uses a local Laplacian value for movement along a normal
Dilate - Dilate the grid along its normals making it bigger
Erode - Erode the grid along its normals making it smaller
Close - Dilate the grid to close holes then erode closing openings
Open - Erode the grid then dilate to create openings
Track - the grid topology is updated by rebuilding the inner band so that it tracks the new iso interface
Gaussian - Gaussian smoothing
Resize - Change the width of the inner band of a VDB signed distance field
Accuracy - Increasingly complex algorithms for the accuracy of the integration
World - Performs the math for creating the levelset in World space, rather than Local
Half Bandwidth - Level sets are normally symmetrical on the inner band. Half Bandwidth uses this fact to halve calculation times but at the cost of accuracy
Iterations - the maximum number of attempts to achieve a divergence-free pressure matrix
Voxel Offset - Offsets the iso surface from the actual value. For instance, using
Level Set Morph
You can morph between polygonal objects. It's not easy because you have to have the same point and poly count, and those points and polygons need to be in the same order; it's a tough job. Now, we have given LightWave the power to do the same using OpenVDB, the results can be very impressive.
You will need to freeze subpatched objects as they are not seen by OpenVDB
In a scene, have two polygonal objects and a null. The point and polygon counts don't have to match, or even be close. In the example above, we are going from the Utah teapot with 1,506 polygons, to the Stanford bunny object with roughly 70,000. Use the Object Replacement > OpenVDB Evaluator entry to convert the two objects to OpenVDB (make sure that their Voxel Size fields match) Level Sets. Pipe the Grid outputs from these nodes into the new Level Set Morph node and from that into the destination Grid node.
Morphing between objects involves the nodes we've already outlined. Morphing from one surface into another requires the two surfaces to be changed as well. To do so, in the Surface Editor, pick your morphing null and edit its surface. Double click on the surface name to open the node editor and add:
The above node tree will synchronize your surface morphing at the same time as the geometry
The first four controls (Spatial, Spatial Normalize, Temporal, and Temporal Normalize) are graded in terms of rapidity and quality. Change up from the first only if it is posing problems with how the Morph is playing out.
Normalizing Steps - After morphing the signed distance field, it will often no longer contain valid distances. A number of renormalization passes can be performed to convert it back into a proper signed distance field
Speed - A scalar to determine how fast your morph occurs
Invert Alpha Mask - If you have hooked up a grid as an alpha mask, this option allows you to reverse what is alpha'ed out
Noise
Add the Bump output from an image or a 3D Texture to this node and pipe the output through.
OpenVDB Info
The values for the Fuel channel of a VDB sequence
You can pipe a Level Set or Fog grid into this node and see the values contained within the file, but this node becomes more useful when you load a vdb file directly in the node. You can see info from whatever channels the vdb file contains.
Partio Node
Partio is an open-source C++ library, created by the Walt Disney Animations Studio, for reading, writing and manipulating a variety of standard particle formats (GEO, BGEO, PTC, PDB, PDA). LightWave cannot support the BGEO format right now, but Houdini can save in the older HClassic format that LightWave will understand. To save in HClassic format, just replace the file extension in Houdini.
The Partio node is simple in that it has one output and no inputs. Double-clicking on the node shows more depth:
Load Path - Where your particles are located.
tip
You should place Houdini files in your content directory's GridCache folder to ensure they can be seen by Package Scene.
Target - If you are using a volumetric object with the particle system, make sure it is targeted here
Start Frame - The frame on which to start the simulation in LightWave
Missing Frames - I have Hold (keep the previous frame's contents?) and Blank (leave a gap?)
Size - The particle size. If using a grid, it should be 1.5 times the voxel size or risk being missed
Attributes list
Using the Houdini "vocabulary" here. If you have particles from a different source, the names may be different. The fields are fairly self-explanatory with name, type, and depth. A Float 3 is three scalars, a color for instance. A Float 1 is a simple scalar.
position - The particle position
Cd - The diffuse color of the particle
v - Particle velocity. Can be used as a color or for post blurring, for example
pscale - The size of the particle
The Partio node has a single output - Particle System. To see these outputs, add an Additional > ParticleInfo node.
tip
Because the outputs are dynamically created, if you are not seeing the outputs you expect, make sure that:
The ParticleInfo node is addressing the right object (double click the node to check the target)
The frame you are on actually has particles. It's not before or after the particles appear
You try stepping the frame forward and back to refresh the node, or moving the ParticleInfo node itself
Once you have exported a stream of HClassic files, you can import them into LightWave using the Partio node. To do so, add a null to an empty scene. Make the null an OpenVDB Evaluator using the Object Replacement dropdown menu. Hit the P button to edit the Evaluator's nodes. Add the Partio node, but you won't see anything until you have chosen from the following
From Particles - Size in the Partio node should be about 1.5 times the Voxel Size in the From Particles node, sometimes a little bigger. This makes sure the particle spans the voxel cube; smaller and you might not see the particle rasterized.
Using the Partio node with a From Particles node
As Particles - You can go straight from the Partio node to the OpenVDB destination node, turn on particles in the destination node and then just get particles that can be used for other purposes - such as with old-fashioned HyperVoxels.
Don't forget to turn on 'Use Legacy Volumetrics' In the Render Properties > Volumetrics tab
You can also use LightWave's own Volumetric objects. Add another null called "vol". Set the vol null Primitive Type to Volumetric. Use an OpenVDB Evaluator Object Replacement in the Partio's Object Properties window. In the Node Editor, add a Partio node and bring in your Houdini HClassic files. Set the Partio node Target to the vol null.
Hook the Partio node directly to the Destination OpenVDB node. This will output a particle system. Add a new null labeled "vol" and make it a Volumetric object. Set the source item here to vol.
Resample
Resample input grid to new voxelsize to output grid.
Interpolation - Different interpolators with increasing complexity
Rebuild SDF - Rebuilds and normalizes the narrow band of the level set
Prune - Removes values from the level set that are smaller than the Prune Tolerance set below
Saver
Pipe a grid into here and the frame or sequence is saved as VDB files upon clicking the Save button.
Save Type - a choice of Frame or Sequence. In both cases, a files or files will be saved using the File Name chosen appended with the frame number
Save Path - Choose a folder for the frame or sequence
File Name - The chosen prefix for the frame or sequence
Save - Immediately saves the frame or sequence. There is no visual confirmation apart from the playhead stepping through the scene in case of a sequence save
tip
To load files saved this way, use the OpenVDB Info node to choose the VDB file and its channel saved.
Scatter
Scatter creates particles on the input grid. The particle system constructed belongs to the scatter target item. Particles can be scattered on or in both SDF and fog volumes.
Scatter Target - The input grid to scatter on
Scatter Mode - Dropdown to specify how the particles will be placed:
Point total - Absolute number of particles to be scattered
Point Density - Percentage of voxels in which to place a particle
Points Per Voxel - Number of particles to put in each voxel
Seed - Sets the random seed
Spread - Distance to randomly move from the voxel center
Depending on the scatter mode chosen:
Point Count - When Point Total is chosen (integer)
Density - When Point Density is picked (percentage)
Points Per Voxel - When Points per Voxel is chosen (scalar)
Multiply - Density multiplier
Animate - Reseed the random generator each frame
Fill Interior - Fill particles inside the sdf narrow band
Size Factor - The size of the particles created
Creating bubbles inside a VDB toroid is simple with the Scatter node. The Filter node has been used here in Erode mode to ensure that the bubbles are created inside the toroid volume and not at the boundary.
Solver
A particle solver that uses a particle system to initialize a temporal PIC/FLIP feedback loop. Particles from the particle system are input as they are born. Then are advected by the integrator using the gravity over the frame substeps. PIC (Particle In Cell) produces smoother motions, and FLIP (FLuid Implicit Particles) is splashier. The two methods can be combined.
The Navier-Stokes equations that the PIC/FLIP system uses do not dictate position but velocity. The vectors contained are not coordinates but velocities. PIC / FLIP is an advection equation, which is how the particles in these objects move within velocity fields.
Particles In Cells (PIC) works by evaluating particles as groups of particles in cells (like voxels)
FLIP stands for FLuid-Implicit Particles and uses a grid rather than particles. Grid-based methods were great for large ocean effects, but not fine detail close up visual effects work. Things can look globby and unrealistic at a small scale (thin fluids).
Inputs
Collision Grid - SDF grid to be used for collisions
Particle System input - Use a separate particle system
Outputs
Grid - Outputs an SDF grid
Particle System Out - Particle system output
Start Only - Only uses the first frame of the particle system
Voxel Size - Size of the gid voxels
Integrator - In short, the upper choices from this dropdown menu are faster but the lower choices are better quality
Subframe Steps - More steps per frame is more accurate but takes longer
PIC↔FLIP - Ratio of PIC velocities to FLIP velocities
Blobby - Check to treat the particles as spheres
Gravity - Downward pull in meters per second squared
Stickiness - Amount of velocity absorbed by contact with collision object
The next three checkmarks are to help visualize the grid:
Show Particles
Show Grid velocity
Show Collider grid
The Solver is time-based so scrubbing the scene will break it, particularly going backward. Create previews to see a smooth animation if your scene is too heavy.
Vector Merge and Split
A pair of nodes to split level sets into three separate dimensions for further manipulation. The Vector Split node takes an incoming OpenVDB grid and splits it into X, Y and Z channels. There is no options panel.
The Vector Merge node will create a vector-valued VDB volume using the values of corresponding voxels from up to three scalar VDBs as the vector components. The scalar VDBs must have the same voxel size and transform; if they do not, use the Resample node to resample two of the VDBs to match the third.
This node offers the following types of operation:
Copy Inactive Values - If enabled, merge the values of both active and inactive voxels. If disabled, merge the values of active voxels only, treating inactive voxels as active background voxels wherever corresponding input voxels have different active states
Velocity
This node will construct a velocity grid for motion blur use.
Reference Grid - Use to populate the velocity grid on the active values
Velocity - Vector of velocity evaluated during grid building
Rebuild Velocity - Rebuild Velocity at each evaluation rather than creating a static field
You can use an envelope or a texture map to adjust the velocity grid over time for more control
Visualize
Additional Destination node to help visualize VDB networks. You can choose any combination of the three choices - Values, Voxels, and Extent. When this node uses a Velocity Grid output as its input, the Vector Options dropdown menu becomes available.
Show Values - Shows the scalar voxel values multiplied by color
Show Voxels - Show the voxel cubes
Show Extent - Puts a box surrounding the voxel object showing the extents
Vector Options - A dropdown menu with three options. This menu is ghosted when the Visualize node is not hooked to a Velocity Grid
Velocity - Shows velocity unclamped transformed
Normal - Shows normals scaled to .4 of box size to prevent overlap. Inverse transformed
Color - Shows the color with no transform
Preferences
The Edit menu contains three entries designed to ease preferences management:
Revert to Startup Preferences - This entry will revert to the menu, shortcut and plugin options you had set when you started this session of Layout or Modeler
Import Preferences File... - Opens a requester to look for a valid preferences file. The keyboard shortcuts and menu files that accompany it will also be loaded
Export Preferences File... - Exports a set of three config files: the main preferences and accompanying keyboard shortcuts and menu configs
Absorption (Scalar)
How quickly light passing inside an object is extinguished. A low value here with indicate greater transparency. Based on Beer’s law of absorption, to give a more realistic and non-linear result.
Anisotropy (Scalar)
Anisotropy is a bias in the direction of lighting a surface. At 0 % a surface is isotropic, meaning there's no bias. As you approach 100 % your surface will become maximally anisotropic. Some degree of Roughness is necessary for anisotropy to be visible, and the amount tells the anisotropic highlight how far to "spread".
warning
Anisotropy requires that there is a Projection node input otherwise you will get strange polygonal shapes in the render.
First: Anisotropy at 100 %, Rotation at 15 %, Roughness at 30 %. Second: No Projection
Rotation (Scalar)
This determines the angular rotation for your anisotropic highlights. At 0 % the rotation will follow the curve of your object and at 50 % will be perpendicular to it.
Asymmetry (Scalar)
Ratio between the amount of forward to backward scattering. With a positive value, more light is scattered from behind the object, with a negative value more light is scattered from in front of the object, relative to the observer.
With this example we have two lights, one in front, one behind our sphere. Both are very strong and the one behind is colored green, the one in front red. With Asymmetry set to 0.5, the light from the green light is scattered forward towards the observer, in this case the camera. When Asymmetry is set to -0.5 the light from the red light behind the camera is reflected toward the observer.
Bump Height (Scalar)
Specifies the bump height or “amplitude” of the Bump directional vectors.
Color (Color)
The surface color, often supplied by texture maps.
Cubic Projection
Cubic projection is essentially the same as Planar, except that you cannot select a Texture Axis. Cubic projects the image from all three axes at the same time. The image is projected like Planar, except simultaneously along all three axes. Use Cubic when you wish to apply the same image to all sides of a rectangular shape, such as an image of tiling bricks wrapped around the sides of a building, or wallpaper on the walls of a room.
tip
Note that Cubic Projection projects along the X, Y and Z axes and objects merely intersect these projections. This means that images like text will only be correct on three sides, the others will be reversed as shown here with the images that have the arrow coming out of them rather than going in. Creating an item like a dice needs six planar projections to be correct.
Cylindrical Projection
Cylindrical projection wraps an image around the selected axis like a paper towel wrapped about a cardboard tube. By default, an image is wrapped so it covers the surface once, allowing the side edges of the image to meet on the back of the surface. A soda can and a tree trunk are both good examples of surfaces that would use Cylindrical projection.
Cylindrical projection is always wrapped around a surface so that the top of the image appears towards the positive axis side of the Texture Axis.
Refraction Dispersion (Scalar)
Controls the amount of light dispersion. Dispersion is a phenomenon that causes the separation of a wave into spectral components with different wavelengths, due to a dependence of the wave’s speed on its wavelength. This will cause the surface to render more slowly as it renders each spectral component separately (red, green and blue).
Dispersion as used in this shading model simulates real light dispersion. The higher the value the greater the amount of dispersion that will be simulated and applied.
Default UV Map
You can now create a default UV map in Modeler. It is represented in the interface with a bullet by the name. The major benefit will be that a specific UV map will not have to be defined, leading to much faster UV workflow. The default UV map will also be used in Layout for the Surface Input node's U, V and dU, dV outputs.
Flatness (Scalar)
Flatness is an alternate, flatter diffuse shape. The effect is subtle and not always easy to see when combined with other material properties. The example has 100 % Roughness, 0 % Specular and 0 % Fresnel.
Front Projection
The concept of Front projection is very simple and quite similar to a chroma-key effect. However, instead of applying an image where a color screen is, it replaces the selected surface(s) with a selected image.
In most cases, the image you select for a Front Projection Map is the same image you use for the Background Image on Layout’s Compositing Tab of the Effects Panel (Windows > Compositing Options).
Scale, Position, and so on, are not relevant with Front projection. It is always the size (and frame/pixel aspect) it would be if loaded as a Background Image. As such, changing the Resolution or Pixel Aspect Ratio on the Camera Properties Panel will also affect the Front projection.Front projection is used primarily for comp (compositing) work where you combine LightWave objects with a live-action background image or sequence. A common example occurs when you want a LightWave object to cast a shadow (believably) onto the image or behind a portion of the background image.
The image used in the surface and the background will pin-register the surface to the background, letting you go in front or behind. Your object then appears to interact with the environment. You can cast shadows or cause reflections from a regular 3D object onto the surface that is front projection mapped.
Front-Projection mapped Ground surface catches the character’s shadow.
The ground object is just a flat box with Front Projection Image Mapping that uses the same image as the background. Its job is merely to catch the object’s shadow.
Another example is to use an image of trees as your background image and fly a UFO between them so the UFO appears to go in front of some trees and behind others. All you need to do is model some rough shapes that match the trees you wish to fly behind (they could even be flat planes).
Another good example for Front projection is to create a flat plane and align it to an image of an ocean or a lake. Front projecting the water surface onto it lets you place an object beneath the water and push it through the surface. Submarines and sea creatures will appear to break the surface this way.
The hardest part of Front projection is aligning the objects, matching lighting, and getting the right camera angle. Using Background Image as the Camera View Background on Layout’s Display Options Tab of the Preferences Panel (Edit > Display Options) will allow you to do all that. You also must search for the right balance of Luminosity and Diffuse for the Front projection surface so that the object’s true shape is not revealed by shading.
tip
NOTE: Don’t use the Soft Filter (Camera Properties Panel) with Front projection. It will soften only the image used on the object surfaces, not the background.
Fixed Projection
Front projection surfaces will always look the same no matter where you move the object or which way you rotate it. The image does not normally stick to the surface. However, if you activate the Fixed Projection option (previously Sticky Projection), it fixes (i.e., locks) the projection from the camera’s perspective at the specified Time.
The default unit of measure for Time depends on the Frame Slider Label setting on the General Options Tab of the Preferences Panel in Layout or the Time Format setting on the Display Options Panel, Units Tab in Modeler. You may specify the unit of measure by appending f for frames or s for seconds to the entered number (e.g., 22f for frame 22, 31s for 31 seconds). You may also enter SMPTE time code, like 00:00:01:16 for one second, frame 16. The entry is converted to the default unit of measure.
Use Fixed Projection to create parallax with two-dimensional images by using a technique called Camera Mapping. (Use the Reference Camera setting to select the camera, if you have multiple cameras in your scene.)
Essentially, you set the frame where the texture will be pin-registered to the background (like normal Front Projection Mapping). On all other frames, the texture is stretched to compensate for more or less of the texture being visible, which is caused by factors like the camera being moved.For example, in a picture of some buildings, you could place the LightWave camera in the same place as the original camera in relation to some simple 3D buildings; then, you could project the picture onto the buildings and lock it at frame 0. You’ll need a doctored background image/object - with Fixed projection - to reveal what’s behind the buildings. If you move the camera forward, it will appear to fly into or around the buildings.
tip
Use your paint program’s rubber stamp function to erase areas where background Fixed projection surfaces will be revealed.
Obviously, there are great limitations in getting three-dimensional data out of a two-dimensional picture. However, short slow-moving sequences can be quite realistic.
How luminous your material is. This value can far exceed the 0-100 % range. Luminous Color (Color)
The color with which your surface will glow. As normal, glowing objects only light others if GI is used.
note
Use luminous geometry sparingly for lighting a scene - using lights is far more efficient. If the luminous object you want to use to light the scene is roughly spherical, add a Spherical Light for the effect instead. If it's more of a box shape, use an Area Light shaped to the rough dimensions. Only use a Primitive Light when you cannot roughly replicate the shape of your luminous object
Lights are directly sampled, and Importance sampled, by a scene's GI. Luminous geometry is not. The scene knows exactly where the lights are and samples them, luminous objects are only sampled when hit by GI calculations.
Planar Projection
Planar projection will project an image onto a surface as if you were projecting the image through a slide projector onto a wall. Planar Image Maps are best used on flat, or nearly flat surfaces like the sides of buildings and the screens of video monitors.
For the X and Y axes, Planar images are projected from the positive axis side of a surface towards the negative axis side. This means that the image appears correct when viewed from the positive side and it appears reversed if you view it from the negative side. For the Z axis, Planar images are projected from the negative side.
If you encounter this reversing effect and it isn’t what you want, you can reverse an image back by making the Scale value negative for the axis that needs to be reversed.
Refraction Index
The Index of Refraction determines how much light is bent when it enters a material. Common values include 1.33 for water, 1.42 for olive oil, 1.52 for crown glass, 2.42 for diamond.
Roughness (Scalar)
This setting is usually paired with Specularity and defines how tight the reflection will be. A high roughness will mean that the surface might be reflective but the reflection will be diffused and unrecognizable.