Newtek LIGHTWAVE 8.2 user Manual

LightWave [8] version 8.2 release notes

Welcome to the second free update to LightWave [8]. This new release offers new functionality in the form of brand-new interpolation methods for UV maps to enable distortion-free subpatch UV mapping and new render modes and also brings improvements to IK Booster, VIPER and the SDK.

Modeler Improvements

LightWave version 8.2 has introduced several new features and functionality to UV maps. The new LightWave Team has completely redesigned the way UV coordinates are managed and implemented in the core LightWave mesh engine, which is used by both Modeler and Layout. The changes make creating and editing UVs much easier and more powerful, but also preserve compatibility with previous versions.
The changes we have in progress with the UV tools are going to improve work flow and make the creation of UV maps much more straightforward and effective. However, you may find that a few of the tools do not function as they did prior to version 8.2. As we have stated previously, we are committed to advancing the software as quickly and efficiently as possible, and to make any new functionality available to you without delay. Please note that this is a work in progress and many more UV changes are on the way.
In our first round of changes to LightWave's handling and management of UV coordinates and maps, the geometry core has been updated to include a number of new UV map interpolation options: Linear, Subpatch, Linear Corners, Linear Edges, and Across Discontinuous Edges.
Previous to LightWave version 8.2, UV maps were always interpolated linearly, even if the mesh was subpatched. This meant that the UV map would be projected along a line instead of the curve, causing a distortion. LightWave version 8.2 addresses this problem by offering Subpatch-interpolation for the UV map.
LightWave [8] version 8.2 update 1
Subpatched cylinder with UV map applied
However, there can be problem areas on a UV map that require special treatment. UV maps can have edges that are open in a map but closed on the mesh. A single edge on a mesh can be two edges on a map, or a discontinuous edge. These edges are usually along the UV unwrap seams. This usually depends on the UV unwrapping method and the UV editing done, which means that each UV map is unique to every mesh. Discontinuous edges usually surround a so-called UV island. A single UV map can contain multiple UV islands. These UV islands can be rotated and positioned freely in the UV space (by you, or using unwrapping methods like Atlas). A single island or even a single polygon can also be part of multiple UV maps (with different positions and orientations in each UV map).
Usually Subpatch-interpolation behaves differently on the outer edge of a mesh than inside a mesh. Since discontinuous edges are outer edges relative to a UV map or UV map island, but are inside edges relative to the mesh, it is not always possible for LightWave to automatically perform a correct Subpatch-interpolation over discontinuous edges or over edges that are shared by multiple UV maps. For these types of situations, the following interpolation types have been offered to get the least distortion out of a UV map.
Interpolation Type Linear: The UV map is interpolated linearly, most similar to the original
mapping option and does not use any subpatching at all.
LightWave [8] version 8.2 update 2
A UV map with two UV islands enclosed by a 3rd large UV island. Linear Interpolation Mode
The edges on the very left and right of this UV map are discontinuous, as are the edges along the two small islands in the centre. In this case the biggest problem is that some vertices are shared by all three UV islands. This makes many of the interpolation- methods fail. The situation would be even more severe, if each UV island was in its own UV map.
Subpatch: All Edges are interpolated along the subpatch lines, as if the UV map was a subpatch mesh. (Note that the discontinuous edges do not line up.)
Subpatch Interpolation Mode
LightWave [8] version 8.2 update 3
Linear Corners: Corner-Points that are along the outer edge of the UV map,
but not the edge of the mesh, are interpolated linearly. Notice that it looks better than subpatch, but the discontinuous edges still do not meet up.
Linear Corners Interpolation Mode
Linear Edges: Edges that are along the outer edge of the UV map, but not the edge of the mesh, are interpolated linearly. Discontinuous Edges now line up, but due to lack of cubic interpolation, some distortion may still occur.
Linear Edges Interpolation Mode
In this special case only the "Linear Edges" method would allow for well aligned discontinuous UV edges. However you would have to allow for some
LightWave [8] version 8.2 update 4
distortion along these edges (similar to the way it used to be before LightWave version 8.2).
Across discontinuous edges: Interpolation occurs along discontinuous edges. This method usually provides less distortion along discontinuous edges. A discontinuous edge can be considered a point that shares two separate polygons on a mesh, yet falls on the edge of the UV map so the two polygons are on opposite edges of the UV map. This option lines up the points so the two edges meet up. Please note that this option still does not work across multiple UV maps.
Across Discontinuous Edges Interpolation Mode
Warning: If heavy scaling is used or parts are rotated, Across Discontinuous Edges can produce errors. However, this solution is recommended first, since most of the time, the least distortion occurs at discontinuous edges.
The Subpatch Interpolations can be further edited in the Assign UV
Coordinates window and the Vertex Maps Panel.
Assign UV Coordinates
Click on the Make UVs button in the Maps>Texture Group to access the Assign UV Coordinates panel.
LightWave [8] version 8.2 update 5
Assign UV Coordinates Window
Move Control Points (old)—Enables the “classic” way of dealing with Subpatch UVs. The subpatch positions of the vertices were used instead of the control-cage position if the mesh was in subpatch mode.
Warning: In contrast to the Interpolation settings above, Move Control Points (old) is irreversible.
Vertex Maps Panel (default keyboard shortcut F8) Selecting the Vertex Map Panel, found in the Windows Menu, opens the Vertex Maps window. The UV maps Interpolation options are available here.
Vertex Maps Window
The Interpolation type can be interactively changed. Clicking on a selection under Interpolation will update the UV map to the interpolation choice selected.
LightWave [8] version 8.2 update 6
Sketch Color
The colour of the wire frame mesh in the UV map can also be changed here. This makes it easier to see each individual UV map when multiple maps are selected.
Sketch Color
Multiple UV Map Selection
You can select multiple maps by holding SHIFT or CTRL then left clicking on the appropriate maps. The multiple maps will also show up in the UV Texture view mode. When multiple maps are selected, Interpolation type and Sketch
Color will be updated for all UV maps selected.
Hint: It is now possible to edit discontinuous points without unwelding,
although you still must do this for separating parts of the UV map.
Free Move
A new feature named Free Move is available in LightWave version 8.2. When you have polygons selected in the UV map then activate and use an edit tool, such as the Move tool, a new UV island will be made out of the selected polygons. A new button named Free Move is in the UV Texture Viewport and will toggle Free Move on and off.
Additional UV Map Features
Weld UV will check that points are on top of each other and then will weld the points in place in the UV map.
In addition, the Heal UV command, introduced in LightWave version 8.2, will calculate the average of all Vmap entries of a point and will set one continuous entry at that average position, deleting all discontinuous entries. Discontinuous vertices are now marked in red, which gives immediate feedback if the commands are working correctly.
A new box in Display Options give you the choice whether to show Discontinuous Points or not.
LightWave [8] version 8.2 update 7

Layout improvements

VIPER (default keyboard shortcut F7)

VIPER, the Versatile Interactive Preview Renderer, has been updated for all versions of LightWave post 8.0. You can now change VIPER resolution on the fly without needing to re-render your frame with an F9 render (although you will need to hit render in the VIPER to see the new resolution) and also there are new render modes discussed below.
VIPER Window
Render Modes
VIPER now has a new Mosaic render mode to help with visualising complex scenes quickly, and a render timer to give you a clue as to how long it will take to update the image, allowing you to decide which mode will be best for you. The render time is displayed in all modes, in milliseconds.
Draft: Fastest mode, but renders at one-quarter resolution
Normal: The “classic” setting for VIPER
Mosaic: Starts with a 16x16 pixel resolution and progresses to higher
resolutions until full VIPER resolution is reached. This is good for scenes with items that take longer to calculate (e.g. Hypervoxels) and gives you a good impression of the final render in faster time.

Render Enhancements

Pixel Lattice Deformation
Major changes have been made to the core of the industry-leading LightWave renderer. In keeping with our tradition of innovation in this area, NewTek has introduced a new technology to allow significant improvements to antialiasing called “PLD antialiasing” (Pixel Lattice Deformation.) The technology allows
LightWave [8] version 8.2 update 8
rendering to be undertaken with a much smaller number of passes, but without sacrificing quality.
Camera Properties Window, Antialiasing and Reconstruction Filters options
A demonstration of this is shown below, where a close-up of an image is shown with single pass rendering. On the left an image is shown that was rendered in a single rendering pass using LightWave 8.0 while the right, an image is shown that was rendered with single pass PLD antialiasing. These images took the same time to render. It is important to note that the improvements to image quality occur in all segments of the rendering, including shadows, reflections and volumetrics.
(Left) The results of single pass rendering in previous LightWave versions. (Right) The results of single pass rendering using PLD antialiasing.
PLD takes information about how the edges in the scene fall onto the lattice of output pixels. The pixel lattice is then deformed and realigned to best represent the underlying geometry. This generally helps with edges in images and textures. One limit to this method is that it cannot reconstruct details that have not been sampled at all, such as highly undersampled data. The advantage gained with PLD is that it gives you an image with some level of antialiasing without the need for extra samples being taken.
LightWave [8] version 8.2 update 9
Each PLD level increases the number of antialiasing passes for a render:
Antialiasing levels
Compared to the “Classic” modes:
Low and Enhanced Low: 5 passes Medium and Enhanced Medium: 9 Passes High and Enhanced High: 17 Passes Extreme and Enhanced Extreme: 33 Passes
FUN FACT: The theoretical limit for the number of passes is infinity, but most of you probably do not have that amount of time, so a number of finite choices have been offered.
HINT: Something to ask yourself, “What is going to be my final output?” If the answer is something with a low resolution, say to NTSC video, then you might try rendering with more passes to avoid undersampling.
Reconstruction Filters
In addition to these significant changes to the raw antialiasing engine, the LightWave renderer now includes a full implementation of reconstruction filters. These filters determine how the rendering data is combined into a final image at a sub-pixel level in order to produce a final image. Reconstruction filters have been a subject of research over many years and the names of these filters are often derived from the research that led to their development. The new LightWave filters include the most important “state-of-the-art” techniques and are outlined in the table below.
LightWave [8] version 8.2 update 10
Box Filtering This is the most common form of filtering, and the
method that most traditional applications use to reconstruct an image from raw rendering samples. These samples are simply places in a pixel “box” and averaged. Although this technique is fast, it can exhibit significant artifacts on motion and when there is fine image detail. From a signal processing point of view, this is a very poor technique for reconstructing an image from the raw data that comprises it. This mode is very close to the traditional LightWave modes.
Gaussian Filtering Gaussian filter based image construction takes the
samples that compose the image and builds the final pixel data by weighting their contributions based on a Gaussian kernel of approximately one pixel in size. This technique typically performs quite well, although images tend to have a “soft” look. In practice this mode can be very valuable for video output where it can help hide some of the artifacts introduced by fielded or reduce bandwidth content.
Mitchell Filtering Mitchell filtering is a technique that is now very popular
and was suggested as an alternative to Lanczos filtering (see below.) It does not suffer many of the ringing artifacts of Lanczos filtering and generally is a very good starting point for most situations.
Lanczos Filtering Lanczos filtering is arguably the technique that yields the
closest to the perfect results for image reconstruction. This technique is based on a windowed sinc function (a sinc function being the optimal infinite image reconstruction filter.) Unfortunately in practice Lanczos image reconstruction tends to produce overly emphasized edges and “ringing” in high contrast areas of the image.
The filters listed above are all implemented in “Sharp”, “Normal” and “Smooth” modes that give users a huge variety of options to fine tune the look of their rendering to their particular needs and desired look. These settings are available in the “Camera properties” panel, as shown in figure 3.
NOTE: Reconstruction Filters can be used with Classic and PLD antialiasing and even work with no antialiasing option selected.
LightWave [8] version 8.2 update 11
Reconstruction Filters
NOTE: Each of the Reconstruction Filters renders differently, so you might want test each of the different filters to see which one best fits your project.
NOTE: Motion blur is now possible in just one pass with a PLD filter, but it is recommended to use more passes. Also, you must use dithered Motion blur if you plan on using one pass. The soft reconstruction filters help reduce noise created by dithered motion blur and the banding in DOF, but this can blur the frame even more.
All of LightWave’s “Classic” rendering modes and options are still available to ensure that scenes rendered with previous versions of the product can be rendered identically; or for use in rendering scenes where some of the advanced new options might not be applicable. For example, complex real­world scenes that require photo-realistic rendering will most likely look best with the new PLD options, while the classic antialiasing methods would be more suitable for a flying logo animation.

IK Booster Enhancements

IK Booster is not a replacement for the original Inverse Kinematics system, but, as the name implies, is a tool to enhance the IK system. The IK Boost Tool is located in the Modify/Tools section and provides advanced controls for an IK/FK chain directly in the Layout window, freeing you from the need to open additional panels. The chain is usually a set of connected Bones, but can also be other Objects that are parented together. Benefits of IK Booster include a speed-up of the IK system, advanced menus for editing IK chains, and allowing the user to define portions of a given rig as IK-driven and others as FK-driven on the fly during the course of an animation.
Bake Spot Menu
This menu is activated when right clicking on a Bake Spot.
LightWave [8] version 8.2 update 12
Bake Spot Menu
Bind Motion: The selected object will be fixed to the current location along its pivot point within the range of the Bake Spot.
Re-Bind all: Applies Bind Motion to all within the Bake Spot in an IK Booster session.
Controller Right Click Menu
This menu is pulled up when right clicking on a controller and IK Booster is activated.
Controller Right Click Menu
Handle: Moves the selected item along the Handle selected, either along the selected plane (square shape) or axis (bar shape). Right clicking on the axis handle brings up a new menu where you can choose to have the axis handle along the X, Y or Z axis or to remove the handle altogether.
Motion Tools
File Tools has been renamed Motion Tools since the initial 8.0 release.
Motion Tools Menu
Pose Copy: Copies pose data from one item to another.
LightWave [8] version 8.2 update 13
Pose Copy Menu
Copy Item: Specifies which item will be copied. Bone_3<= Null would mean data from Bone_3 connected to Null would be copied over to the currently selected item.
Paste Item: When Child Item is selected, all item data that are a child of the Copy Item will also be copied over. Current Item will only copy the item selected.
Paste Frame: Pastes data to the selected frame. The default is the current frame. You can also key in a specific frame or move the slider left or right. Notice that using the slider will also be indicated in the Dope Track.
Mirror: When Pose information is copied from one IK Chain to another, it will be mirrored along the specified Axis.
Key: Selecting OverWrite will allow writing to channels even if those channels are locked. Lock&Limit will not overwrite the channels.
Motion Save: Saves the motion data of an item and any children along the chain within the specified range.
Save Motion Menu
Motion Load: Loads a Motion data file to the selected item.
LightWave [8] version 8.2 update 14
Motion Copy: Copies motion data within a given time frame from a
chain
Motion Copy Menu
Start: Chooses the frame to start copying motion data from
End: Chooses the frame to stop copying motion data from
Copy Item: Specifies which item will be copied. Bone_1<= Null
(2) would mean data from Bone_1 connected to Null (2) would be copied over to the currently selected item. If you want the entire chain to be copied, be sure to select Child Item in the Paste Item section.
Paste Item: When Child Item is selected, data that is a child of the Copy Item will also be copied over. Current Item will only copy the item selected.
Mirror: When motion information is copied from one IK Chain to another, it will be mirrored along the specified Axis.
Keys: Selecting OverWrite will allow writing to channels even if those channels are locked. Lock&Limit will not overwrite the channels.
Options…
Rename: The selected controller can be renamed using this
function.
Set goal…: When the currently selected item is set to fixed, Set goal will make the last selected item in the chain the goal for
current item.
Reset Goal: If Set goal was used for the currently selected item, Reset Goal will undo Set goal.
LightWave [8] version 8.2 update 15
IKB Menu
Found in the bottom right corner of the Layout window when IK Boost Tool is activated.
IKB Menu
AutoApply: When AutoApply is checked on, IKB will automatically apply the settings to the surrounding keys for a more continuous curve. Checked off, only the selected channel will be affected.
AutoBind: Automatically applies Bind Motion to all Bake Spots. If an IKB session has two or more Bake Spots, the first bake spot takes priority.
Commands
Re Bind Motion-all: Applies the Bind Motion operation
automatically to all Bake Spots. This gives you more control rather than using Autobind.
Set RIG for Comments: Takes the IKB setting to LW_Comment for use in another command. If you use mirror tools in IKB, the comment will copy to the target. However, with some plugins such as Mirror Hierarchy, Copy Hierarchy, Import RIG, and Export RIG, this command will run before the plugins do their work, so you will not need to use the SET RIG command. Use this command when you would like to apply the data for other clone operations. This adds the IKB prefix to LW_Comment so it can be edited. Without the prefix, IKB information cannot edit another comment.
Get RIG for Comments: Imports IKB information from LW_Comment
Clear RIG Comments: Clears all comments exported by Set RIG command
Options…
Ghost Mode
With Ghost Mode activated you can see where the chain will be placed a number of frames before and after the current frame. The number placed in Ghost Size will determine how many
LightWave [8] version 8.2 update 16
frames before and after will be ghosted with an image of the chain.
Ghost Mode Menu
Ghost Mode Options
None—No ghosting will occur Current Bone—Only the current bone will be ghosted All Bone—All bones in the chain will be ghosted
Ghost mode activated with all bones

Dope Track Menu Enhancements

When the Dope Track is active while in IK Booster mode, two different menus are available, the Right Click menu and the Right Click and Drag menu.
Right Click and Drag Menu
Activated when you right click and drag across a number of frames in the
Dope Track
Copy Keys—Opens the Paste Motion Key panel.
Paste Motion Key Panel
LightWave [8] version 8.2 update 17
Paste Motion Key: Pastes motion data onto a given chain
Start, End: The range from which motion data will be copied. Paste Key At: Determines at which frame the data will be
pasted.
For: The direction along the chain data will be pasted.
Pre Mix Frames, Post Mix Frames: The range of frames to
smooth overlapping keys.
Save Motion: Saves the motion data within a given time range for a chain.
Save Motion Panel
File Name: The name of the motion file.
Save Item: The direction of the chain to be saved.
Start, End: The range of frames to be saved.
Right Click Menu
Activated by right clicking on the Dope Track
Right Click Menu
Load Motion: Loads saved motion data file.

Master-Class Plug-in Loader

Layout-type Master plug-ins, by definition, are not associated with scene files but, previous to version 8.2, Master-class plug-ins were being saved to the scene file. In version 8.2, this has been changed so the Master-class plug-ins are associated with the application and can be configured to load automatically when the application is launched.
The new configuration file type for these types of plug-ins is “LWMASTERS#.CFG” under Windows and “LightWave Masters #” under Mac, where “#” indicates the product version. The installers will not create this
LightWave [8] version 8.2 update 18
file, but rather it will be created or deleted as necessary when running the application.
When Layout terminates, any active Layout-type Master plug-ins are processed and any particular plug-in data are stored in a configuration file that specifically exists for them. When Layout starts up, the configuration file is read, the previously active Layout-type Master plug-ins are activated again, and the data restored.
Master-Class Plug-in Loader Autoload check
You now have the ability to control this new “Autoload” behaviour. In the “General Options” panel a new selection is named “Enable Master Autoload”. It is enabled by default, but you can decide to disable this function. At times when a Master plug-in does not function as planned, this feature can be disabled.

SDK Improvements

There are an extensive set of changes in the LightWave [8], version 8.2 release that affect the SDK. There are also changes that were made in the
8.0 or 8.0.1 releases but that were not previously documented, and those have been included in this listing. You can check the SDK documents for full notes.
Lwhandler.h:
For those plug-in handlers that offer a ‘save’ callback (as defined in ‘lwhandler.h’), it is now optional to actually provide one. Doing so will prevent the handler from existing in the saved file. Therefore, when the file is loaded, there will be no reference to the plug-in, and it will not get instanced. This is useful for Master Class handlers that are meant to be LAYOUT types (they survive a scene clear); saved scenes would not contain the plug-in; and therefore, loading the scene would create a duplicate instance of it. Another use is for third party plug­ins that wish to ‘save-disable’ their demo plug-in.
lwspreadsheet.h:
This header was provided as a means to append datatypes to the spreadsheet.p plugin. This plug-in, however, has become a legacy plug-in. The scene editor now takes over that functionality, so this header should not be used. The ‘lwsceneeditor.h’ header can be used instead.
Lwtool.h:
The ‘LWToolEvent’ structure has added a new member int viewNumber; /* New For LightWave 8.*/
Each viewport available has an index ranging from 0 to 3 to make
identification possible.
Lwsurf.h:
LightWave [8] version 8.2 update 19
typedef void *LWSurfaceID; typedef void *LWSurfLibID; // these two have been retyped to avoid internal naming of structures
lwrender.h:
The OBJECTFUNC_GLOBAL version has been bumped up to version 5 and 6.
In version “LW Object Info 5": double (*shrinkEdgesNominalDistance)( LWItemID objectitem, LWTime time);
This obtains nominal distance value when shrink edges is enabled.
In version “LW Object Info 6”: double (*maxDissolveDistance)( LWItemID objectitem);
This obtains the maximum dissolve distance for use when distance dissolve is enabled.
double (*bumpDistance)( LWItemID objectitem); This obtains the bump distance when bump displacement is enabled.
The following flags are now available from the ‘flags’ callback:
LWOBJF_ALPHA_CONSTANT_BLACK
This flags indicates the object alpha is set to 'Constant
Black'.
LWOBJF_DISTANCEDISSOLVE
This flag indicates that distance dissolve is enabled for the object.
LWOBJF_BUMPENABLE
This flag indicates that bump displacement is enabled for the object.
LWOBJF_FASTERBONES
This flag indicates the ‘faster bones’ feature is enabled for
the object.
LWOBJF_USEMORPHEDPOSITIONS
This flag indicates the ‘use morphed positions’ object option
is enabled.
LWOBJF_CONTAINS1POINTPOLYGONS
This flag indicates that the object contain one or more one-
point polygons (polygons having only one vertex).
LWOBJF_CONTAINSPATCHES This flag indicates that the object contains one or more sub-
patch polygons.
LWOBJF_CONTAINSMETABALLS
This flag indicates that the object contains one or more meta-
ball polygons.
LWOBJF_CONTAINSPARTIGONS
This flag indicates that the object contains one or more
partigon polygons.
LWOBJF_CONTAINSCUSTOMPOLYGONS
This flag indicates that the object contains one or more
custom (not internally defined) polygons.
LightWave [8] version 8.2 update 20
The LWLIGHTINFO_GLOBAL has been bumped up to version 4 and is named "LW
Light Info 4".
The structure now contains a light quality callback that is time dependent, whereas before it was not time dependent. int (*quality)(LWItemID, LWTime);
The LWCAMERAINFO_GLOBAL has been bumper up to version 3 and is named "LW Camera Info 3".
It include some new callbacks and new flags.
unsigned int (*motionBlur)( LWItemID);
This retrieves motion blur setting for a camera item. See the LWCAMMB_ defines for possible return values. This value is only valid when a multi-pass anti-aliasing approach is used.
LWCAMMB_OFF
LWCAMMB_NORMAL
LWCAMMB_DITHERED
unsigned int (*fieldRendering)( LWItemID);
This retrieves the field rendering state of a specific camera. See the LWCAMFIELDR_ defines for possible return values.
LWCAMFIELDR_OFF
LWCAMFIELDR_EVENFIRST
LWCAMFIELDR_ODDFIRST
New flags are available via the ‘flags’ callback:
LWCAMF_DOF
This indicates that the camera has enabled depth of field.
LWCAMF_PARTICLE_BLUR
This indicates that the camera has enabled particle blurring, which is the simulated trajectory of one-point polygons over time
LWCAMF_LR_NOBORDERS
This indicates that limited region is being used without borders when limited region is enabled
LWCAMF_FIELD
When field rendering is enabled, this indicates which field (0 or 1) is being processed
The LWSCENEINFO_GLOBAL has been bumped up to version 4 and is named "LW
Scene Info 4".
Although notes were made in the March 2004 change log for these changes,
there is not much detail about them yet.
int antialiasing; /* added for version 4: current antialiasing setting
0=off, 1-lowest, increasing for higher values (currently up to 4=extreme)*/
int enhancedAA; /* added for version 4: 1=enabled, 0=disabled */ int adaptiveSampling; /* added for version 4: 1=enabled,
0=disabled */
float adaptiveThreshold; /* added for version 4: only valid when
adaptiveSampling is enabled */
int filter; /* added for version 4: 1=soft filter, 0=no filter */
The LWINTERFACEINFO_GLOBAL has been bumped up to version 5 and is named
"LW Interface Info 5"
New callbacks are available:
void (*setItemColorIndex) (LWItemID item, int color);
LightWave [8] version 8.2 update 21
This allows setting an item’s user interface display color using a color index. This is not a surface color for final rendering. It is preferred to use setItemColorCustom instead since custom colors will be supported in the future, whereas color indexes may not. You may also use a 24bit color (RGB) by setting the upper byte of a 32-bit value to 0x01. For example, yellow can be specified as 0x01FFFF00.
void (*setItemColorCustom) (LWItemID item, double *color);
This allows setting an item’s user interface display color using a floating point values from 0.0 to 1.0 for each of the red, green, and blue components. For example: yellow would be { 1.0, 1.0, 0.0}
void (*defaultItemTypeColor) ( LWItemType itemtype, float *color,
int set); This will get or set the default user interface display color for an item type. Set ‘set’ to 1 to set or ‘0’ to get. The ‘color’ must be a float[3] array. Be aware that a float array is used here instead of double array.
There is a new object visibility mode:
LWOVIS_TEXTURED_WIRE
This is the textured wire mode with combines the textured and front face wire-frame draw modes.
This is a new general flag:
LWGENF_IKENABLE
This indicates that IK (Inverse Kinematics) is enabled.
lwimage.h:
More documentation needed for changeEvent(). void (*changeEvent) (LWImageEventFunc,int);
Allows adding or removing an event function to be called when changes occur. The first parameter is the callback function to use, and the second parameter determines to either register (LWERC_REGISTER ) or unregister (LWERC_UNREGISTER) the callback function.
lwmeshes.h:
These return size_t instead of int now (64bit compatibility)
typedef size_t LWPntScanFunc (void *, LWPntID); typedef size_t LWPolScanFunc (void *, LWPolID);
In the LWMeshInfo structure: size_t (*scanPoints) (LWMeshInfoID, LWPntScanFunc *, void *); size_t (*scanPolys) (LWMeshInfoID, LWPolScanFunc *, void *);
lwmaster.h:
There are some new event codes available to master handlers via the event callback.
These will only appear when the ‘flags’ callback returns the correct flags. These new
events can occur in ScreamerNet as well as Layout. The flags available are:
LWMASTF_LAYOUT
This flag signals that this master handler should be considered a layout level plugin instead of a scene level plugin for the purposes of saving handler data.
LWMASTF_RECEIVE_NOTIFICATIONS
LightWave [8] version 8.2 update 22
This flag signals that this master handler wants to receive
LWEVNT_NOTIFY_ events.
LWMASTF_RECEIVE_NOTIFICATIONS_MESHPOINTS
This flag signals that this master handler wants to receive the LWEVNT_NOTIFY_MESHPOINTS_ALTERED event. It is necessary to specify the LWMASTF_RECEIVE_NOTIFICATIONS flag as well, in this case.
When the LWEVNTF_RECEIVE_NOTIFICATIONS flag is returned, the following
events will be received:
LWEVNT_NOTIFY_MOTION_UPDATE_STARTING
This indicates item motion is about to be computed. ‘eventData’ is the item id being affected or LWITEM_NULL for all items. This will be received during mouse manipulation of an item as well.
LWEVNT_NOTIFY_MOTION_UPDATE_COMPLETE
This indicates item motion is done being computed. ‘eventData’ is the item id being affected or LWITEM_NULL for all items. This will be received during mouse manipulation of an item as well. This notification is also useful to indicate that all meshes are in their final position. So, the MeshInfo::pntOtherPos() values are valid at this point. The pntOtherPos() values do not include any transformations of the mesh’s owner such as item position, rotation, and shearing.
LWEVNT_NOTIFY_MESH_REPLACED
This indicates an object's mesh source has been replaced. This is a more drastic mesh change than just transforming an existing mesh by displacement. ‘eventData‘ is the item id the object whose mesh has changed.
LWEVNT_NOTIFY_MESH_UPDATE_STARTING
This indicates a single mesh is about to be transformed. ‘eventData’ is the object item id being affected. This does not mean that the mesh is actually going to change from its current shape, however. MeshInfo::pntOtherPos() values are not valid at this point.
LWEVNT_NOTIFY_MESH_UPDATE_AFTERMORPHING
This indicates a mesh vertexes represent their 'after morphing' positions. 'eventData' is an item id. MeshInfo::pntOtherPos() values may be used.
LWEVNT_NOTIFY_MESH_UPDATE_AFTERBONES
indicates a mesh vertexes represent their 'after bones' positions. 'eventData' is an item id. MeshInfo::pntOtherPos() values may be used.
LWEVNT_NOTIFY_MESH_UPDATE_AFTERLOCALDISPLACEMENTS
indicates a mesh vertexes represent their 'after local displacements' positions. 'eventData' is an item id. MeshInfo::pntOtherPos() values may be used.
LWEVNT_NOTIFY_MESH_UPDATE_AFTERMOTION
indicates a mesh vertexes represent their 'after motion' positions. ‘eventData' is an item id. MeshInfo::pntOtherPos() values may be used.
LWEVNT_NOTIFY_MESH_UPDATE_COMPLETE
This indicates a single mesh is done being transformed. ‘eventData’ is the object item id that was affected. This does not mean that the mesh was actually altered from its previous shape.
LightWave [8] version 8.2 update 23
LWEVNT_NOTIFY_RENDER_FRAME_STARTING
This indicates a frame is about to be rendered. ‘eventData’ is the time being rendered.
LWEVNT_NOTIFY_RENDER_FRAME_COMPLETE
This indicates a frame has completed being rendered. ‘eventData’ is the time being rendered.
LWEVNT_NOTIFY_RENDER_STARTING
This indicates a sequence of frames are about to be rendered.
LWEVNT_NOTIFY_RENDER_COMPLETE
This indicates a sequence of frames has completed being rendered.
LWEVNT_NOTIFY_SCENE_CLEAR_STARTINg
This indicates a scene is about to be cleared. Of course, an existing master handler needs to exist to detect this. ‘eventData’ is the name of the scene before it was cleared.
LWEVNT_NOTIFY_SCENE_CLEAR_COMPLETE
This indicates a scene has just been cleared. Only a master handler that survives a scene clear (LAYOUT type) will still be around to detect this. ‘eventData’ is the name of the scene as it exists as a cleared scene.
LWEVNT_NOTIFY_SCENE_LOAD_STARTING
This indicates a scene is about to be loaded. ‘eventData’ is the name of the scene file being loaded. If you wish to retain this name, you must make a copy of it.
LWEVNT_NOTIFY_SCENE_LOAD_COMPLETE
This indicates a scene has just been loaded. ‘eventData’ is the name of the scene file that was loaded. If you wish to retain this name, you must make a copy of it.
LWEVNT_NOTIFY_SCENE_SAVE_STARTING
This indicates a scene is about to be saved. ‘eventData’ is the name of the scene being saved. If you wish to retain this name, you must make a copy of it.
LWEVNT_NOTIFY_SCENE_SAVE_COMPLETE
This indicates a scene has just been saved. ‘eventData’ is the name of the scene file that was saved. If you wish to retain this name, you must make a copy of it.
LWEVNT_NOTIFY_ITEM_ADDED
This indicates an item has been added. An item is considered an object, light, camera, or bone; null items and objects. ‘eventData’ is the item id that was added.
LWEVNT_NOTIFY_ITEM_REMOVING
This indicates an item is about to be removed. ‘eventData’ is the item id that is going to be removed.
LWEVNT_NOTIFY_ITEM_REPARENTED
This indicates an item’s parent has changed. ‘eventData’ is the item id that had its parent changed.
LWEVNT_NOTIFY_SURFACE_ALTERED
This indicates a surface was altered in some way. ‘eventData’ is a SurfID
LightWave [8] version 8.2 update 24
LWEVNT_NOTIFY_MESHPOINTS_ALTERED
This indicates a change to the world position of a vertex in an object was altered. 'eventData' is an item ID. The world vertex position can be altered by simple movement or rotation as well. By looking for constant movement and orientation, one can rule out those as being the cause of the alteration.
lwpanel.h:
A new parameter type is now available:
LWT_POINTER
This is for pointers (64bit compatibility). Older approaches used an LWT_INTEGER, which is only 32-bits.
The ‘LWPanKeyHook’ callback now returns an int instead of void.
typedef int (*LWPanKeyHook)(LWPanelID, void *, LWDualKey);
Returns int instead of void (indicates if key was handled (1) or not (0)).
The following MACROS have been altered to support the LWT_POINTER type (64bit compatibility) #define CON_PAN(ctl) ((*ctl->get)(ctl, CTL_PANEL, &sval),sval.ptr.ptr) #define CON_PANFUN(ctl) ((*ctl->get)(ctl, CTL_PANFUN, &sval),sval.ptr.ptr)
Lwcustobj.h:
The following custom object flag now exists:
LWCOF_OVERLAY
This is useful for custom object handlers attached to cameras or
lights. When used, the internal camera or light drawing will be drawn
before the custom one. When not used, the internal drawing of the
light or camera is not used at all.
lwcmdseq.h:
These functions have been added to ‘LWModCommand’ void (*undoGroupBegin) (void);
This allows for multiple actions to be classified under a single undo
operation. Call this before the first action.
void (*undoGroupEnd) (void);
Call this to complete a series of actions that are part of a single undo
group.
lwobjimp.h:
These functions have been added to ‘LWObjectImport’ void (*vmapsubp)(void *, unsigned int subpint); Set the vertex map subpatch interpolation method. 0 linear 1 subpatch 2 – subpatch linear corners 3 – subpatch linear edges 4 – subpatch disco edges
void (*vmapskco)(void *, unsigned int sketchcolor); Set the vertex map sketch color index.
lwobjrep.h:
The following data member was added to ‘LWObjReplacementAccess’
int force; // force object replacement even if filename or file contents have not
changed
LightWave [8] version 8.2 update 25
Loading...