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
UV Maps
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 realworld 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 plugins 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.
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}
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)
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...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.