Version 1.0.4.70: August 22, 2001 Greg: - Added BumpEnv mapper - Added NPatch enable flag for meshes (in the w3dtools command panel) Ian: - Added BumpEnv setting to the shader (in primary gradient) Version 1.0.4.69: January 4, 2001 Greg: - Modified the "bone picker" that the WWSkin space warp uses to allow Max bones to be used. Version 1.0.4.68: December 7, 2000 Andre: - Added a Static Sort Level parameter to the Surface Properties rollup page of the material editor. This parameter must be the same across all materials assigned to one mesh, and is enforced on export. The value is written out as part of the mesh header to which the material is assigned. Version 1.0.4.67: December 6, 2000 Greg: - Added 'Vehicle' collision bit. This will allow us to create meshes which constrain vehicles to certain parts of a level without constraining characters or projectiles. Version 1.0.4.66: November 7, 2000 Greg: - Disabled the "optimize meshes" feature because recent developments in the run-time code seem to have made it un-necessary (and possibly even undesireable due to the extra mesh overhead) The main reason for disabling the feature is that the automatic nature of it makes some of our processes harder to debug. Mesh names are lost so the artist has no way of figuring out which mesh is causing problems when one of the other tools complains about something. - modified the mesh export code to reject meshes that are using multi-pass transparent materials. - fixed error message boxes so they pop on top of all windows (they were appearing behind the log window) Version 1.0.4.65: October 31, 2000 Greg: - Finished code re-organization. - Pat provided new UI for the main export dialog - Fixed the "smooth across meshes" feature - Added the export log window. Version 1.0.4.64: October 20, 2000 Greg: - Fixed a bug in the name editing dialog in the W3D utility panel - Modified the VAlpha behavior so that only the *last* pass with alpha blending gets the vertex alpha (instead of all passes with alpha blending) - Added the Aggregate geometry type. This lets you request external W3D objects to be attached to bones in your model. - Added preliminary mesh optimization features. During the export, meshes can be split into single-material meshes and then meshes which use the same materials can be combined into larger meshes. Version 1.0.4.63: October 19, 2000 Greg: Re-organized the entire DoExport function. - First I unified all of the code to go through the "DoOriginBasedExport" code by using the scene root as the origin when there were no user-defined origins. - Re-organized the Export_Geometry function to use a new abstract class: GeometryExporTaskClass which encapsulates a lot of code that was cut-and-pasted many times through the w3dexp.cpp module. - Broke several classes and functions out of w3dexp.cpp into their own modules. - Modified/Cleaned HierarchySaveClass and MeshConnections class. Version 1.0.4.62: October 11, 2000 Greg: Re-organised the W3DUtility plugin. Moved several dialog boxes used by it into their own modules and created a modeless dialog containing the w3d settings that can be left up when the user is not in Max's utility panel. Version 1.0.4.61: September 26, 2000 Greg: Added copying of the dazzle app data structure to the MaxScript extensions. Version 1.0.4.60: September 22, 2000 Greg: Added dazzle exporting to the plugin. Modified MeshConnnections class and the w3d file format so that HModels are exported in a slightly simpler manner and so that they can support dazzles. The "auxiliary" header for hmodels is now obsolete. Version 1.0.4.59: September 18, 2000 Greg: Modified the code so that collections are exported even when no meshes or other render objects are present. This is used to create collections of proxy objects for the renegade level editor. Also modified the "origin" export code to support exporting collections with origins. Version 1.0.4.58: August 25, 2000 Greg: Fixed a crash bug that happens if you create a PS2 material. The bug was caused by the modifications to the texture pane to replace the NoMipMap and Resize buttons with a single NoLOD button. For some reason, the PS2 material uses a separate dialog template for its texture pane which is the same as the dialog template for the normal material. Since the PS2 version of the template was not updated, the code would crash when initializing the NoLOD button. Version 1.0.4.57: August 18, 2000 Andre: Fixed the loading of version 4 ParameterBlocks so that the value for Stage1MappingType is correct. Version 1.0.4.56: August 16,2000 Greg: Removed the texture flags and buttons for No-Mipmapping and enable resizing. These are all lumped into the setting for No-LOD now. The GameMtl still has the entries in its parameter block for No-Mipmapping and Resize and I use the No-Mipmap setting to set the initial state of the No-LOD flag... This also required a flag in GameMtl indicating that the conversion had been done. Ug... :-) Version 1.0.4.55: August 6, 2000 Greg: Added new colliison type: camera. In renegade we have some physically collideable meshes which the camera should not collide with so I had to make a separate flag for camera collision. When the appdata chunk is first converted to the new version, the camera collision flag is set to the same setting as the current state of physical collision. Added light-glare geometry type. This currently only exports the position of the pivot point of the max object. It will be used to indicate where there should be fancy light glare effects in the level Added NoLOD option to textures in the W3D material. This setting will be used on textures which should not scale down even when texture reduction is being used. Fixed serious bug in the parameter block description for the W3D material plugin (GameMtl.cpp) Version 1.0.4.54: July 13, 2000 Greg: Fixed a bug related to user-defined origins not working when they are rotate or moved from 0,0,0. Version 1.0.4.53: July 12, 2000 Andre: Added support for a different mappers on stage 0/1 of the Vertex Material. Added support for the new silhouette mapper type. These changes can be found in the VertexMaterial panel in the W3d material editor. Version 1.0.4.52: May 30, 2000 Greg: Added support for Max's multiple mapping channels. This can be found in the VertexMaterial panel in the W3d material editor. Version 1.0.4.51: May 22, 2000 Greg: Added AABTree exporting so that we don't have to generate AABTrees at run-time. This is controlled by the "Optimize Collision Detection" checkbox on the exporter options dialog box. Added prefix and suffix features to the naming tool. Added detatch vertices feature to the skin modifier. Version 1.0.4.50: May 8, 2000 Andre: Added a new MAX Script extension: wwInputBox This is a generic way of getting user input in a Windows-like manner (as opposed to typing it in the Listener window as MAX wants to force you to do). Version 1.0.4.49: May 2, 2000 Greg: Fixed a bug in vchannel.cpp. Was writing out garbage animation channels which would crash wdump. Version 1.0.4.48: May 1, 2000 Greg: Changed the way skins are exported so that their vertices are sorted with respect to the bone they are attached to. Also made it so vertices are secondarily sorted by vertex material (this means that non-skinned meshes will sort by vertex material only.) Version 1.0.4.47: April 19 2000 Greg: Added a new geometry option for "shatterable" objects. Wrote a new W3DAppData2Struct which replaces the old AppData1Struct. Whenever the old format app data is encountered, a new one is created to replace it. This new app data chunk has more space in it for future expansion. Also fixed a crash bug in the skin modifier related to deleting bones from the space warp. Version 1.0.4.46: March 28, 2000 Greg: Added "Transform Nodes" to the collection export. We already had "Placeholder" objects which were signified by a '~' after the name. Now we have "Transform Nodes" which are signified by a '*' after the name. Transform Nodes instruct one of the Renegade tools to merge another W3D collection into the file at a given transform. The purpose was to allow us to lightmap certain building interiors only once and then merge them into many levels... Version 1.0.4.45: March 8, 2000 Andre: Changed the Is_Origin() test to check for hidden nodes. If a node is hidden, it will not be accepted as an origin. This means that hiding an LOD prevents it from being exported (as you would expect). Version unchanged: early March Andre: Fixed a couple of crash bugs related to animation exporting. Version 1.0.4.43: February 29, 2000 Greg: Fixed a bug which caused all meshes marked to cast shadows to not get texture coordinates. Fixed meshsave.cpp to detect and properly handle mirrored meshes. Version 1.0.4.42: January 24, 2000 Lytle: Added Playstation 2 material support, including converting W3D materials to PS2 materials. Added support for vertex colors and vertex alpha to exist concurrently. Version 1.0.4.41: January 13, 2000 Andre: Fixed a nasty memory overwriting bug in MeshConnectionsClass that only reared its head under very unique circumstances. It was a copy/paste bug that would lead to writing a W3D file with incorrect data. It would manifest itself by crashing the viewer (and potentially the game engines) when trying to load the file. Version 1.0.4.40: December 16, 1999 Ian: Added 'Export Utilites' group to W3D Utility panel and added a 'Export with Std Mtls' button to this group. This button will first convert all W3D materials in the scene to standard materials, then call the export feature, then, after export, convert materials back to W3D materials. The purpose of this utility is to make it possible to export W3D material attributes to third party file formats (eg. Lightscape Preparation files). Version 1.0.4.39: November 15, 1999 Andre: Changed the mesh LOD naming convention so that we use numbers that correspond to the LOD number (highest-to-lowest) instead of letters that went from lowest-to-highest. Version 1.0.4.38: November 12, 1999 Greg: Updated MeshConnections class and the hmodel chunk definitions in w3d_file class to not treat shadow meshes as a different type of mesh. Version 1.0.4.37: November 11, 1999 Greg: Removed the GEOMETRY_TYPE_SHADOW settings and UI. Added a EXPORT_CAST_SHADOW flag. This basically means that rather than shadow casting being a completely different "type" of mesh it is now an option on any mesh. This required some tweaking of the AppData structure we're saving and to the w3dutil code. Version 1.0.4.35: November 3, 1999 Andre: Exposed another script extension, called "wwDuplicateSkinWSM". This extension allows the SceneSetup script to copy bone information from the base object's skin WSM to the LODs. Meshes are still unaffected, since the artist will be munging the meshes to reduce their poly counts. Version 1.0.4.34: November 2, 1999 Andre: Exposed two new script extensions, named "wwCopySkinInfo" and "wwFindSkinNode". These extensions allow the SceneSetup script to copy the skin/vertex/bone binding information from the base model to the LOD and Damage models. Version 1.0.4.33: October 18, 1999 Andre: Merged WWScript.dlx into the exporter, so now WWScript is unnessesary and should be deleted. The code in that DLX was ported from MFC to Win32 code during the merge. GetW3DAppData0 and GetW3DAppData1 are no longer exported from the DLE. Version 1.0.4.32: October 11, 1999 Andre: Correct NULL object handling was implemented when exporting HLODs. NULL object chunks are only written when using the old-style LOD setup (one per file), otherwise the name "NULL" is put in the HLOD and no NULL object chunk is written. Version 1.0.4.31: October 5, 1999 Andre: Fixed a bug in MeshBuilder where a division by zero occurred if the extents of a triangle was zero in one dimension. Version 1.0.4.30: October 1, 1999 Andre: - Added support for the "suppressPrompts" flag during export. If Max passes in a TRUE value, we will go with the previous export settings instead of showing the export options dialog. This makes non-interactive batch exporting possible. - Moved W3dExportOptionsStruct from w3ddlg.h to w3dutil.h so that WWScript can access it easily. Version 1.0.4.29: September 27, 1999 Andre: - Fixed a skin bug that occurred in LOD exporting when a vertex in a skin was not bound to a bone (it would be exported in unmodified coordinates, creating a "pop"). - Strip off any trailing ".%d" or "." from a name in Set_W3D_Name (as opposed to just ".%d"). - If the artist sets up damage animations, then the animation on the base model is no longer exported. (non-damage animations should still be created in separate files) - Exporting 2 more symbols from the DLL (GetW3DAppData0 and GetW3DAppData1). These functions are used by the MAXScript extension DLL (WWScript.dlx) to copy AppData from one node to another. Version 1.0.4.28: September 23, 1999 Andre: Fixed a bug in LOD exporting when the base object wasn't centered at the origin. Added support for placing damage models in the scene. Renamed "Generate LOD extensions" to "Generate extensions" since the same extensions are used for damage. Added a "Damage Region" spinner to the W3D Tools panel. With this spinner you can mark bones as being part of a given damage region (0 to 15, -1 means not part of a damage region). Version 1.0.4.27: September 17, 1999 Greg: Added degenerate triangle removal to MeshBuilderClass. Version 1.0.4.26: September 17, 1999 Andre: Modified the exporting code to allow artists to define all LODs of an object in one MAX file. The old way of creating LODs is still supported so that old art assets are still usable. Added a "Generate LOD extensions" button to the W3D Tools panel to make the Origin naming convention less painful. Version 1.0.4.25: August 21, 1999 Greg: Fixed a bug in Export_Geometry. While exporting skins, one line of code was referring to the list of normal meshes rather than the list of skins. When you do an export with only a skin and no meshes, this causes an access violation. Version 1.0.4.24: July 27, 1999 Greg: Changed the Hide/Unhide by W3D type buttons into "Select by W3D Type" buttons. This should be more useable. Also, added select alpha meshes, select physical, projectile and vis collision meshes. Added a material naming tool. Version 1.0.4.23: July 9, 1999 Pat: Changed the default behavior of the collection naming tool to be 'affect selected' rather than 'affect all' Version 1.0.4.22: July 7, 1999 Pat: The export code doesn't export the DCG array if all vertex colors are white (1, 1, 1), however this was a problem when using the new Mesh Deformer, so I added a check during export to see if the Deformer was modifying vertex colors. Also modified the hierarchy export code so it will resize its internal array if the number of nodes is greater than 512. Version 1.0.4.21: July 1, 1999 Pat: Added code to optimze the between-mesh smoothing and added a new button to the export dialog that allows the user to turn this smoothing feature on/off. Also added displacement maps to the W3D material, however due to a bug in the NURBS Mesher modifier, we decided not to expose the functionality in UI at this time. Version 1.0.4.20: June 24, 1999 Pat: Added code to apply smoothing groups over mesh boundaries. More work was done on the obj-space mesh deform modifier including save/load, export, undo, and vertex-alpha support. We fixed a bug where the ErrorClass object that was used during exception handling was using and freeing a previously freed pointer. Added a new panel to the material types for Commando surface types. Version 1.0.4.19: June 14, 1999 Greg: Added the VAlpha checkbox to the W3D utility panel. Checking this causes the exporter to convert vertex colors into alpha values and put them in all passes that are using alpha blending. This might be a temporary solution; I'm thinking we need to extend the Utility panel (and the AppData structure that we are saving) to allow for more flexible control over vertex alpha, vertex color, etc. Version 1.0.4.18: May 27, 1999 Greg: Fixed a bug in the code which handles loading a hierarchy tree from another W3D file. Made the W3D utility panel support multiple selection. Pat: Added the initial mesh deform object space modifier. Currently doesn't export the data. Version 1.0.4.17: April 9, 1999 Greg: Fixed a bug related to exporting a mesh with zero vertices. Exporter will throw an exception which pops up a message box indicating the name of the mesh. Made the collision boxes behave the same way as meshes when one is exported with geometry only - it takes on the name of the file. Whew this part of the exporter code is getting uuuuuugly... Version 1.0.4.16: April 6, 1999 Greg: Fixed a bug related to the storing of the default export options. If the user exported a model which uses the hierarchy from another model and then moves the Max file, the next export would crash Max when the exporter couldn't find the w3d file which contains the hierarchy. Version 1.0.4.15: Mar 18, 1999 Greg: Fixed a bug in the AABox export. Was using the wrong coordinate system for the box. AABoxes actually seem to be of very limited use. Possibly only useful as an approximation of a cylinder centered at 0,0,0 in object space (but moved anywhere on the z-axis) and only for objects that *only* rotate about the z-axis. (characters) Ug. Version 1.0.4.14: Mar 16, 1999 Greg: Made meshes that are marked as AABox or OBBox export a W3D_CHUNK_BOX instead of a mesh. The runtime engine can test collision with a box in about the same amount of time it takes to check a single triangle... so one box is much faster than a 12 triangle mesh :) These boxes are only for collision detection so they only export a color, no other rendering information. Version 1.0.4.13: Mar 11, 1999 Greg: Fixed a bug in the collection exporter. Needed to put the entire name of the render object into the sub object chunk. Version 1.0.4.12: Mar 10, 1999 Naty: Fixed minor bug with start/end animation frames in export dialog. Version 1.0.4.11: Mar 4, 1999 Naty: Added "Camera Oriented" mesh type (and changed the camera aligned button to read "Camera Parallel"). Export options are now saved in the MAX file (hierarchy file paths are saved in a relative form). Version 1,0,4,10: Mar 3, 1999 Greg: Modified so that collections are not exported when there is only a single mesh and forced that mesh to use the name of the file. Changed w3d_file.h so that meshes have a "container name" instead of a "hierarchy model name" and set the container name when a collection is exported Version 1,0,4,9: Mar 3, 1999 Naty: New Shader (took out colormaks, fogfunc, new dialog and preset system) Added alphatest support, added Linear offset mapper and mapper argument string support Version 1,0,4,8: Feb 9, 1999 Greg: Added the ZNormals option for forcing the normals of a mesh to be 0,0,1 Version 1,0,4,7: Feb 8, 1999 Greg: Fixed 2 bugs in the skin code. Added code to scan the materials used by a mesh and discard un-used ones. Naty: Added 'Alpha-Bitmap' button to the texture dialog, added new shader presets Version 1,0,4,8: Feb 15, 1999 Greg: Improved the strip generation algorithm. Now actually turns a cube into 6 strips instead of 12 individual triangles. Still needs work though...