Mark's 3d studio max VRML97/X3D Exporter

Release Notes - Version 1, Revision 010

Change Log

Version 1, Revision 010

Revision 10 contains several very important lighting fixes and support for additional max lighting features. These fixes will change the appearance of your world, if you use max Spot lights or use attenuation with Spot lights and Omni lights. These fixes make the VRML97 output much more faithful to the lighting in max. They are unquestionably bug fixes. However, if you are concerned about the effect of these changes on your world, you may want to keep a copy of the previous version of the exporter until you have adjusted the lighting. The exporter is found in the directory stdplugs\mcvrmlexp.dle in the max directory (usually C:\3dsmax4).

Revision 10 fixes these lighting bugs:

Revision 10 provides a very close mapping of max's Attenuation curves to VRML97. The author gratefully thanks Robert Mueller of Lightspeed Design Group for writing a terrific paper illuminating the problem and demonstrating a suitable solution. Unfortunately most VRML browsers have attenuation specifications that do not follow the spec. See Known Problems for more information.

Revision 10 adds support for the following max lighting features:

Revision 10 will output a warning comment before Spot lights with rectangular beams since this beam shape cannot be displayed in VRML97. All Spot lights will appear with a circular beam.

See Lighting Tips in max to VRML97 for more information about lighting.

Revision 10 adds support for the following max Environment features:

Revision 10 fixes a legacy bug causing incorrect output, in Quad, Ngon or Visible Edges mode, of objects using multi-materials. Objects using multi-materials are output as a set of IndexedFaceSets, one IFS for the set of faces using each material. The bug caused all faces of an object to be output in each IndexedFaceSet instead of just those faces using the particular material being processed.

Revision 10 fixes a legacy bug that caused faces with less than 3 vertices to be generated when outputting Quads, Ngons or Visible Edges from geometry with holes in it.

Revision 10 DEFs and USEs the Color arrays output when Color Per Vertex is checked in the Generate group. If max is selected as the color source and you have not assigned vertex colors in your scene, a warning comment is written into the output file.

Lastly, Revision 10 fixes a legacy bug that caused mirrored objects to be animated in the wrong direction.

Version 1, Revision 009

DEFs and USEs Appearance nodes (3ds max materials) using the 3ds max material names. For multi-materials, adds comments indicating the name of the parent multi-material and the sub-material slot number.

Slightly changes the format of DEFed node names.

Fixes several minor problems:

Works around a problem with certain geometry where 3d studio max generates an incorrect number of vertices and fails to initialize the extra vertices. This could result in bad output "1.#NAN" when the uninitialized vertices do not contain valid floating point numbers. The unexpected comment introducing character '#' obviously causes problems in the output file.

Fixes a legacy bug of exporting the geometry of nodes whose Renderable property is false.

Version 1, Revision 008

Fixes a crash that happened with certain geometry configurations when exporting normals.

Fixes output for objects with mirror transforms.

Version 1, Revision 007

Fixes several legacy problems with export as quads, ngons and visible edges:

Version 1, Revision 006

Fixes use of an incorrect DEF name in a USE request for an instanced object.

Version 1, Revision 005

Fixes a crash when typing into the edit boxes on the Sample Rates dialog.

Corrects the documentation describing the "once per animation frame" radio buttons on the Sample Rates dialog.

New Features vs. discreet's Standard Exporter

Scales to VRML units
The exporter scales from the world coordinates of the max file to world coordinate system of VRML. (Scale is misnomer. This feature maintains the sizes of your models in their real-world coordinates.) You no longer have to work with tiny models (inches for meters) or risk overflowing the VRML browser's z-buffer resolution.
CreaseAngle Support
You can output a creaseAngle value. This is a bit of a hack but I have found it useful. It puts the single value you specify into every IndexedFaceSet generated.
Colors, Normals and TextureCoordinates now DEFed and USEd
This exporter generates Colors, Normals and TextureCoordinates once per object, gives them a DEF name and USEs them in subsequent IFSes for the same object. This greatly reduces the size of the output when exporting per vertex colors or normals, or exporting a scene that makes extensive use of textures.
DEFs/USEs 3ds max Materials
Instead of outputting the definition of a material (as an Appearance node) every time it is used, this exporter only outputs the definition the first time the material is used. It assigns a DEF name to the definition and thereafter reuses the definition via a USE statement.
Supports Environment Settings
If the Background Color set in the Environment Dialog is not black, a suitable Background node is exported. max's global light level and tint, also set in the Environment dialog, are applied to all exported lights.
Supports Decay
Decay applied to Omni and Spot lights is exported using the attenuation field of VRML97 PointLights and SpotLights.
Improved NavInfo helper
The NavInfo helper now supports "ANY" and also supports selection of a subset of navigation types. You can for example select "WALK" and "EXAMINE" but not "FLY". This feature is disabled in the trial version. Trial version users will see the standard discreet NavInfo helper. This prevents users being left with max files they can not read at the expiration of the trial period.
Context Sensitive Help
Context sensitive help is provided for all controls on the export dialog.

Bug Fixes vs discreet's Standard Exporter

Normals Correctly Generated.
The discreet exporter writes more normals than there are faces or vertices causing VRML browsers to abandon the normals list and render faceted objects.
Material Editor's Coordinates Roll-up Settings Correctly Output as TextureTransforms
This exporter generates a TextureTransform that correctly reflects the values in the material editor's Coordinates roll-up. Unlike the discreet exporter's output, rotations and scales of the texture will look the same as in max. This exporter also supports the roll-up's Tiling control. Note that, unlike VRML, max does not use the border pixels to fill the surface outside the 0 to 1 coordinates of the texture. To make the VRML output look close to the appearance in max you must use a texture whose border pixel is the same as the diffuse color of the surface.
This exporter does not support the roll-up's Mirror control which has no obvious equivalent in VRML.
 The generated TextureTransform is compliant with the VRML97 specification but does not work correctly with Cortona up to and including v3 or with OpenWorlds up to v2.5. These browsers interpret the center field with a sign opposite to that required by VRML97. This is fixed in Cortona v3.01. All versions of Cortona also ignore the repeatS and repeatT fields so the setting of the Tiling control has no apparent effect.
 Neither exporter supports the settings of the Bitmap Parameters roll-up because max's internal public programming interfaces do not provide access to these settings. If you need to crop or place your texture maps, use the Coordinates roll-up instead.
Mirrored Objects Correctly Output
Objects which are instanced and have mirror transforms are now correctly output. Since VRML97 does not support negative scale values, the instanced geometry has to be duplicated in the output file with the vertices modified as needed by the mirror transform.
Output as quads, ngons and visible edges now works correctly.
When writing meshes as quads and ngons, the discreet exporter often generates bad VRML, bad polygons, mismatches faces and materials or crashes 3ds max. Now you can take advantage of these alternate forms to reduce the size of your output file.
No More Empty IndexedFaceSets
For each object, the discreet exporter writes an IFS for each material in a multi-material even for materials not used by any faces of the object. This causes it to generate IFSes with empty coordinates.
No More Duplicate DEF named IndexedFaceSets
The discreet exporter writes IFSes with duplicate DEF names when outputting objects with multi-materials.
Hidden Bindable Nodes No Longer Exported
The discreet exporter writes VRML for all the NavInfo, Background and Fog helper objects and all the Camera objects regardless of whether or not they are hidden in the max file. This exporter will not export these objects or show them in the "Initial ..." List Boxes unless they are unhidden or "Export Hidden Objects" is selected. The List Boxes are updated whenever the Export Hidden Objects control changes.
Does Not Generate Bogus Vertices in Coordinate Nodes
With certain geometry, 3d studio max generates an incorrect number of vertices and fails to initialize the extra vertices. This can result in bad vertex data in the output, "1.#NAN", when the uninitialized vertices do not contain valid floating point numbers.
Does Not Export Geometry of Nodes Whose Renderable Property Is FALSE
The discreet exporter exports a node's geometry when the node's Renderable property is FALSE.
Exports Lights Correctly
The discreet exporter generates incorrect values for Omni lights' attenuations (PointLight's attenuation) and Spot lights' Hotspots and Falloffs (SpotLight's beamWidth and cutOffAngle).

Known Problems

Uninstalling & Restoring the Original discreet/discreet Plug-In

Use add/remove programs to uninstall the software.

When the software is installed the original Kinetix/discreet version of the plug-in is moved to vrmlexp.discreet in 3d studio max's stdplugs directory (usually C:\3dsmaxN_N\stdplugs, where N_N is your max version number). Rename this file to vrmlexp.dle to restore the original plug-in.

When the software is installed, it adds an entry to max's plugin.ini file (usually C:\3dsmaxN_N\plugin.ini) to make the help file available via Additonal Help ... in max's Help menu. Unfortunately the version of InstallShield included with Visual C++ does not support automatic removal of .ini file additions during uninstallation. If you care, you will have to remove this entry by hand.


For technical questions and problems, send e-mail your questions to .

Please send your suggestions for improvements and enhancements to .