6.5 Changes

LightWave

6.0B Changes 6.5B Changes Table of Contents

6.5 Changes

November 4, 2000

This is a list of the changes in the LightWave 6.5 patch that affect the SDK. In most cases, the changes won't require you to rewrite or recompile your existing code. The most significant exception is for variant parameters, which have been updated to support parameters modulated by textures.

lwenvel.h

lwfilter.h

  • New buffers (LWBUF_REFL_RED, LWBUF_REFL_GREEN and LWBUF_REFL_BLUE) have been added to the list of buffers available to image filters and pixel filters. These contain the RGB levels for reflections calculated by raytracing and environment mapping.

lwimage.h

  • LWIMAGELIST_GLOBAL (Image List) has been incremented to "LW Image List 3".
  • Added LWImageList functions: hasAlpha, alpha, alphaSpot, evaluate.

lwio.h

  • Added File I/O type LWIO_BINARY_IFF. This type supports 4-byte chunk sizes for block reading and writing of IFF files.

lwmeshedt.h

  • LWMESHEDIT_VERSION (MeshDataEdit) has been incremented to 4.
  • Added MeshEditOp functions pointVPGet, pointVEval, pntVPMap. These are for per-polygon vertex mapping.
  • The second argument to initUV is now float * rather than float[2] so that initUV can be used to initialize per-polygon UVs.

lwmeshes.h

  • Added vertex map types for color vmaps: LWVMAP_RGB and LWVMAP_RGBA.
  • Added LWMeshInfo function pntVPGet for per-polygon vertex mapping.

lwobjimp.h

  • LWOBJECTIMPORT_VERSION (ObjectLoader) has been incremented to 3.
  • Added LWObjectImport function vmapPDV for per-polygon vertex mapping.
  • The second argument to pivot and the third argument to vmapVal are now const.

lwrender.h

  • New illuminate special item types LWITEM_RADIOSITY and LWITEM_CAUSTICS allow callers of illuminate to get information about global illumination at a spot.
  • LWOBJECTINFO_GLOBAL (Object Info) has been incremented to "LW Object Info 3".
  • The texture IDs of the displacement and clip maps of each object can now be obtained using the new dispMap and clipMap Object Info functions.
  • LWINTERFACEINFO_GLOBAL (Interface Info) has been incremented to "LW Interface Info 2"
  • New Interface Info function schemaPos returns the positions of items in schematic viewports. (Use the new SchematicPosition command to set them.)
  • New Interface Info field dynaUpdate contains Layout's Dynamic Update setting, which can be LWDYNUP_OFF, LWDYNUP_DELAYED or LWDYNUP_INTERACTIVE.
  • Added a Time Info global that returns the frame and time for the image currently being rendered.

lwserver.h

  • ServerUserName has been replaced by ServerTagInfo, which among other things allows plug-ins to specify how they should be added to LightWave's menu system.

lwshelf.h

lwsurf.h

  • LWSURFACEFUNCS_GLOBAL (Surface Functions) incremented to "Surface Functions 2".
  • Added surface channel SURF_VCOL for color vertex maps.
  • Added Surface Functions routines getColorVMap and setColorVMap.

lwtexture.h

  • LWTEXTURE_VERSION (ProceduralTextureHandler) has been incremented to 5.
  • Texture class plug-ins can now return RGBA levels, in support of which added LWTextureAccess field txRGBA[4], LWTextureHandler flag LWTEXF_SELF_COLOR and LWTextureAccess flag LWTXEF_COLOR.

lwtxtr.h

  • New LWTxtrParamDesc flag LWGF_AUTOSIZE for gradient textures that can automatically adjust their min and max.

lwtxtred.h

  • LWTXTREDFUNCS_GLOBAL (Texture Editor) has been incremented to "Texture Editor 2".
  • New callback type LW_GradAutoSizeFunc for gradient autosizing.
  • New Texture Editor functions for supporting multiselection (selectAdd, selectRem, selectClr, selectFirst, selectNext) and automatic ranges for gradient textures (setGradientAutoSize).

lwvparm.h

  • New header (variant parameters were formerly defined in lwenvel.h).
  • Added LWVPDT texture data types.
  • Added arguments (texture context, event callback, plug-in name and userdata) to the LWVParmFuncs create function.
  • Added a micropolygon argument to getVal for texture evaluation.
  • New functions getState, setState, editTex, initMP, getEnv and getTex. getState and setState replace the hasEnv and setEnvState functions, which have been removed. The new functions support textures in addition to envelopes.

lwxpanel.h

Commands: Layout

  • SaveSceneCopy and SaveObjectCopy save a copy of the scene or the object in a file with a new name without affecting the current name in Layout.
  • PreviousSibling and NextSibling allow easy navigation among a set of items that share the same parent.
  • AddEnvelope and RemoveEnvelope allow plug-ins and scripts to "press the E button" for a Layout parameter. Each command takes a channel name as its argument (the same names that appear when channels are expanded in the Scene Editor).
  • By passing AutoConfirm an argument greater than zero, plug-ins and scripts can use this command to automatically respond affirmatively to all confirmation requesters before commands are issued to clear items, etc. This feature should be used with care, and it should be turned off by passing it a zero before control is returned to the user.
  • EditPlugins opens the new dialog for displaying, adding, and deleting servers.
  • SaveObject and SaveTransformed now accept a filename argument.
  • CommandInput now accepts a command argument.
  • MaskPosition allows plug-ins and scripts to set exact pixel values for the left, top, width, and height of the camera mask. One potential use is to create scene files for portions of a frame which can be rendered separately and then perfectly recombined by summing the resulting images (assuming the mask color is black).
  • SchematicPosition sets the X and Y of the current item's schematic node. This and the schemaPos function added to the Interface Info global allow plug-ins to arrange items in Schematic viewports.
  • Antialiasing takes an argument from 0 to 4, as in scene files.
  • Other new commands:
    TopView              CacheRadiosity           RayTraceShadows
    BottomView           CacheCaustics            RayTraceReflection
    BackView             EnableVolumetricLights   RayTraceRefraction
    FrontView            RadiosityTolerance       MorphTarget
    RightView            EnhancedAA               IncludeLight
    LeftView             FogType                  ExcludeLight
    SchematicView        FogMinDistance           PolygonEdgeColor
    CenterItem           FogMaxDistance           CacheShadowMap
    FitAll               FogMinAmount             MaskColor
    FitSelected          FogMaxAmount             LightIntensityTool
    ShowSafeAreas        FogColor                 EnableVIPER
    ShowFieldChart       AddPartigon
    
    

Commands: Modeler

  • The revert command reloads an existing object file.

Miscellaneous

  • When items are moved, rotated, or scaled, using either the mouse or the numeric fields, the appropriate position, rotation, or scale commands are now added to the command history, which in turn generates events for master plug-ins.
  • The newTime callbacks of shaders, volumetrics, and pixel filters are now called only after all geometry has been finalized. This fixes a problem that occurs when plug-ins of one of those classes depend on the results of displacement plug-ins.
  • There can now be any number of custom object plug-ins per object, and they are added using a server pane rather than a popup.
  • RGB and alpha image savers are now recorded in scene files by name rather than by index, preventing problems caused by different machines having different saver lists. Image saver indices in existing scene files will continue to work as before.
  • When the newTime functions of shaders, environment plug-ins, volumetric plug-ins and lights, pixel filters, custom object and displacement plug-ins are called, inverse kinematics have already been computed. Therefore, the Item Info param function now simply returns existing vectors in such cases (assuming the time argument matches the current time), allowing those plug-ins to properly account for IK.
  • When a subpatch object is being deformed and its Subdivision Order is later than the deformation, the interior patch points are no longer deformed. In particular, the evaluate functions of displacement plug-ins will no longer be called for the patch points.