NEW!
VRML v2.0 World Saver Plugin Lightwave3D 
Version 1.0 Beta
by Arnie Cachelin, NewTek, Inc.

10/8/96

Features:

LW Keyframed heirarchical animation support
Touch activated behaviors
3D Sounds
Background Solid/Gradient/Image
Fog
Light envelopes, including ambient
Object Instancing
Custom VRML Nodes
Morphing*
Proximity/Visibility* activated behaviors
Objects output as Prototypes (PROTO) definitions
Color Texture Mapping
Standard Object Viewpoints (Optional)
Object Ignore
Optional VRML v1.0 Object Creation

*not yet supported by browsers

The VRML v2.0 World Saver plugin (vrmlout.p) works from Layout with 3 separate modules, one for saving VRML objects, one for setting VRML characteristics associated with particular objects in a scene, and one for saving the current scene as a VRML 2.0 World. The VRML output complies with the final 2.0 Specification.
.  
Making VRML worlds is as easy as loading an appropriate LW scene, and selecting the SceneToVRML plugin. Enter a name for the VRML scene, and a directory for the VRML objects.  The plugin will automatically create objects in this directory as needed. You can also create the objects individually  using the ObjectToVRML plugin. Objects in your LW scene which had motion keyframes will be given linear motion keys in the VRML file, through a "MotionInterpolator" node. The 'End Behavior' of the set for the LW motion has a critical influence on the VRML behavior of an object:  If the end behavior is set to 'Reset', the motion will begin when the world is loaded, and keep on playing.  'Stop' and 'Repeat' end behaviors result in an animation which, when triggered, either runs to completion, or loops forever. The default triggering is a click(TouchSensor)  on the object. In the case of 'Stop' every click causes the animation to run from the beginning, whether it has completed its motion or not. Currently the 'TouchSensor' switch is placed on the highest-level animated object in a heirarchy, and triggers the animation of all the children simultaneously (as one would expect).  

Another Layout plugin which is useful for VRML world creation is comment.p.
This plugin  adds comments to LW Scene files, on an object-by-object basis. The SceneToVRML plugin will interpret some of these comments as specific instructions for generating that object's VRML. Comments should be formatted as <Tag>=<value> where the Tag is one of the following:

URL		 URL=<url>           
Item URL, overrides object and children's URLs  

SOUND		 SOUND=<url> [<volume> <loop?> ]                            
Sounds can be added to objects. Currently these are triggered with any animation.

TOUCH		
Over ( mouse grope)    
                        
PROXIMITY	PROXIMITY=W H D  
Trigger when viewer enters active region (WxHxD) .  

VISIBILITY 
Trigger when viewer sees object. (not supported by browsers yet)  
                                           
INCLUDE	  INCLUDE=<filename>                 
Dump file into output  

IGNORE	 //
Skip this one                           

TRIGGER	    	TRIGGER=<object>
Other object for sensor                 

VRML		 VRML=nodeName { node fields }                          
Node creator, dump nnode from comment into file  

*LABEL                                              
*BILLBOARD                                             
*LOD		 

* = sorry, not yet


The new VRML 2.0 specification allows a variety of animation and interaction techniques, as well as script-driven behaviors. Unfortunately, the current crop of VRML2 capable browsers is severely limited, and some critical parts of the spec remain unimplemented, or in the case of scripting languages, unresolved.  
This plugin supports animation of LW heirarchies, but the motions are all LINEARLY interpolated from the keyframe values. Spline interpolation will be added via scripts.  Displacement mapping of objects will also be handled in the future with scripting, and remains unsupported.  I am not making ANY promises about support for bones. Note that morphing will work right when EXTERNPROTO is supported by browsers. In corrent form, one must paste the object into the world in place of the inline, so the morph CoordinateInterpolator and find the object points by name.