6.5 Changes Table of Contents

6.0B Changes

May 11, 2000

This is a list of the changes in the LightWave® 6.0B patch that affect the SDK. In most cases, the changes are additions to global services that won't affect the operation of existing code. In some cases, however, you will have to recompile, and in a few, it may be necessary to rewrite a small amount of your code that was written prior to the release of the patch.



  • Added LWBUF_MOTION_X and LWBUF_MOTION_Y for vector blur feature. The buffers will be filled in with the image coordinate movement at each pixel during the time the shutter was open. For example, if part of an object has moved 11 pixels right and 6 pixels down since the previous frame, and the blur length is 50%, the motion buffers will contain 5.5 and 3.0 in that part of the frame. Camera motion is also taken into account. This information can be used by filters to perform a Photoshop-style vector motion blur.


  • Generic plug-ins are now first activated with a version number of 4. If that doesn't work, the saveScene function is replaced with one that saves old format scenes, and version numbers 3, 2, and 1 are tried.


  • Added new dialog types to Message Functions global, incremented the service name. (3/23)
  • The new Locale Info global has been implemented (but the old Language ID global is still supported as well).


  • Added sceneLoad and sceneSave to Image List global, now "Image List 2".
  • Changed LWImageID to LWPixmapID in Image Utility functions.


  • Added LWMAST_LAYOUT type for masters that survive scene clearing.


  • mode and vmap functions added to the state query global, incremented the service name.




  • Changed close to accept void arg.


  • New API.
  • Removed obsolete functions setDraw, setMesh, remParticle.


  • Only items matching the current edit mode are now eligible to have their LWITEMF_SELECTED bit set by the Interface Info itemFlags function.
  • Added LWIP_PIVOT_ROT to let plug-ins get pivot rotation.
  • If the Item Info param function is called while the user is dragging items in a viewport and the time argument matches the current time, the function can now return temporary, non-keyframed data. One benefit of this change is that expressions can react to interactively moved items even if Auto Key is turned off.
  • changed flag name to LWOBJF_UNSEEN_BY_CAMERA.
  • A server function has been added to the Item Info global. It takes an item ID, a class name, and an index (which starts with one, as in the tag functions). The return value is the name of whatever server is applied in the specified "slot" (or NULL if there isn't one). Naturally the ID is ignored for classes like volumetrics, filters, etc.
  • Added flags and fog to Object Info.
  • Corrected "LW Comp Info" to "LW Compositing Info".
  • Added renderCamera to LWSceneInfo structure.
  • Added type, color, and squeeze to LWBackdropInfo structure.
  • A function to get the ID of the camera used for rendering has been added to the Scene Info global. It accepts a time argument in order to be ready for automated camera switching in the future.
  • Added serverFlags and controller to Item Info.
  • The first frame, last frame, and step size used by the frame slider and by Layout previews can now be obtained through the Interface Info global.
  • The vectors returned by the Item Info param function now take pivot rotation into account.
  • Attempts by plug-ins to look up information about their items while in the process of being created due to cloning should no longer fail.



  • New API.
  • Removed closed notification function typedef.
  • Removed closed notification from shelf subscription.
  • Added isOpen.


  • The byName function now has an additional object name argument. If the object name is set to NULL, the function will return all the surfaces that share the same name, behaving as before.


  • layerEnvGrp renamed layerEnvGroup.
  • Input parameter type defines added.
  • polygonID added to LWMicropol structure.
  • setParam and getParam functions added.
  • Added evaluateUV, which sets the UV values given the 3D position of the point in world and local coordinates, plus the world and local dominant axis. This does the coordinate transfromation and projection from 3D to 2D.
  • Added new tags to set and get images and vmaps.
  • Added vertsWPos to LWMicropol.
  • Added setEnvGroup and envGroup functions.
  • Added layerType function.
  • Added tags for getting and setting opacity, reference object, repeat options, pixel blending, AA, AA strength.


  • setParam and getParam functions removed (put into lwtxtr.h).
  • Added refresh, which refreshes the editor if some parameters have been changed without user interaction. The clientID should be NULL if trying to update surface textures (= default client). That's what texture guide is doing.
  • Added currentLayer, which gets the currently selected layer in the texture editor. If client is NULL, uses surface's texture editor.


  • Removed adaptive flag.
  • The flags function of each volumetric plug-in is now called to determine whether to include it in reflection, refraction, or shadow computations.
  • The LWVEF_RAYTRACE bit in the LWVolumeAccess structure is now set when evaluating volumetric plug-ins for a ray.


  • Added focus event code.
  • Added refresh codes.

Commands: Layout

  • The usage string for the AddPlugins command now shows that it accepts a filename argument.
  • The AddToSelection and RemoveFromSelection commands have been added to allow plug-ins and scripts to create and manage multiple selections. They accept a hexadecimal item ID as an argument, and the usual selection rules apply (for example, if only one item of the current type is selected, it can't be deselected).
  • Other new commands include SubdivisionOrder and ResolutionMultiplier, which work just like the identically named scene file lines.
  • A RemoveServer command has been added. Like ApplyServer, it takes a class name argument, but it differs in that it takes an index rather than a server name (in case there are multiple instances of the same server). Consistent with the Item Info server function, these indices count from one. Item-specific plug-ins like motion and displacement handlers are removed from the current item.

Commands: Modeler

  • The SaveCommandList command in Layout has been duplicated in Modeler.
  • A new batch command maketesball2 has been added which takes the new segments parameter for tesselated spheres. The old maketesball command still works using the old level parameter. The segments parameter directly sets the number of segments along the the edges between the 12 polyhedral vertices. Power of two segment values are equivalent to the old level values: 1 = level 0, 2 = level 1, 4 = level 2, 8 = level 3, 16 = level 4, 32 = level 5, etc.
  • A new maketext2 batch command has been added which accepts alignment settings. It also takes fonts as zero-based indices, fixing a long lived bug.
  • Added more arguments to the bevel batch command to bring it more in line with the options of the Bevel tool.
  • There are new plug-in commands for selecting the current object and for setting the vmap for the current morph, texture or weight map.

Commands: Surfaces

  • The Surf_SetSurf command now has an additional object name argument. This specifies in which object library the surface should be set (there can be multiple surfaces with the same name in different objects).
  • Surf_RemoveShader command now works this way: Removes all shaders that use the specified name, and if name is NULL, removes all shaders.

Commands: Envelopes

  • Added Env_ApplyServer <classname> <servername>.
  • Added Env_RemoveServer <clasname> <index>.

Sample Code

  • modlib: Added object name argument to mgGetSurfacesByName in surface.c.
  • rapts: Changed layerEnvGrp to layerEnvGroup.


  • A new Plug-in Options panel has been added. It contains the controls for generic and master plug-ins that used to be on the General Options panel, as well as an Add Plug-ins button and some UI ranch space for the masters.
  • There is now a dedicated options button which calls ServerInterface for the current animation saver. This is intended to be the official way to edit compression settings, etc. Saver plug-ins whose interfaces are in their load or open functions should be rewritten.
  • The DirectoryType config file entry for images is now used as the default location for image loading, replacing the ImagesDirectory line. Several other old config file lines have also been discontinued in favor of new DirectoryType entries.
  • Envelopes for displacement and clip map channels are now added to the envelope groups of the objects they belong to. This makes them appear in the right place in the Graph Editor hierarchy.