Changes to the DTS Exporter: Version 06-07-04 - Simple ground transforms are now correctly saved within DSQ files. - A new Priority text edit field has been added to the Animation tab and a new column displaying its value has been added to the Animation Sequences list box. The Priority animation sequence property is used in the Torque Game Engine to determine who should control a node when there is a conflict -- the higher priority sequence takes control. Version 05-02-17 - A new option has been added to the Preferences tab: Combine collision meshes into single detail level. With this option active, all collision meshes will be placed within the same detail in the DTS file. This allows you to have more than 8 collision meshes work within TGE 1.3. Using this option in TGE 1.4+ in not required as it no longer has a limit. - The Material Attributes shader has been expanded to include two news items. The first is the Detail Image Scale edit box. When using a Detail Map, this value may optionally be used to change the size of the map over the shape. The second item is the 'Detail image uses environmental mapping' check box. In previous versions of the exporter, all detail maps were exported to allow environmental mapping. This should not normally the case and was a bug to have this enabled by default. Now environmental mapping is no longer the default option, and this check box allows you to turn it back on. - A bug under OSX with the Material Attributes shader window crashing LightWave has been corrected and tested under LightWave 8.5. Please remember to remove and then add the exporter plug-in to both Layout _and_ Modeler to make sure that all plug-in modules are refreshed. Version 04-11-15 - Simple ground transformation within an animation sequence has been added. This may be set from the new Ground tab at the bottom of the Animation tab. It allows you to set how much the ground is moved over the course of the selected animation sequence through the x, y and z edit fields. This will cause the DTS file to save a single ground transform frame with the given translation. This will not be exported to a DSQ file at this time. - Fixed a bug that was causing LightWave to crash when exporting a DSQ file on the Mac. Version 04-10-05 - Level of Detail billboard (TSLastDetail) support has been added. To activate a billboard LOD, select the detail level from the Global tab (usually the last LOD) and click on the 'This is a billboard detail (tsLastDetail)' check box. There are a number of parameters which may be changed underneath the check box to customize the billboard. Version 04-06-07 - Collision meshes were not being built correctly if they were moved away from the scene's origin. The exporter has been changed to better handle this case. - Detail levels will now automatically reference the bones from the top most detail level, regardless of the 'Use Bones From' setting in LightWave. This allows for the animation of the lower detail levels. Previously, these lower LOD would all be mapped to their root bone, which would not correctly animate them. Just make sure to use the same weight map names for the lower detail levels as those used in the primary object so the bones know which vertices to control. - Corrected a crash bug with object states where there is more than one object that may have their states animated but not all of them are animated. - LOS Collision Mesh has been added as an option for an object. For this to work, 'Use Mesh' must be selected from the 'Collision Mesh' popup under the Global tab. Version 04-04-13 - Fixed the case where a bone's pivot point rotation was not being taken into account when calculating its initial transformation. - Fixed some cases of segmented objects not correctly exporting their initial transformation. - Worked around a LightWave design issue where a vertex was not considered to have a discontinuous UV coordinate when it belonged to multiple texture maps. - Added in Detail Maps. These are usually gray-scale images that are applied over the coloured surface, often to "diry it up". To apply a detail map, place an image into a surface's diffuse channel. This will cause a detail map material to be exported. Note that as of this date, the TGE will render the detail map in a second rendering pass. This means that detail mapped polygons will be rendered twice each frame. Version 04-02-26 - Added in "Save Sets". A save set stores all of your exporter settings, from the objects that will be exported to the animation sequences. By allowing you to have more than one save set (ie: the way the exporter used to behave) you may now export multiple DTS files from the same scene. For example, you may have a LW scene setup with a house where the walls are one object and the roof another. You've lined them up in the scene and now you wish each object to be saved to a different DTS file. You would setup the first save set to export only the walls. You'd then create a new save set to export the roof as a DTS file separate from the walls. Then, you select each save set in turn and click the Export button. You now have two different DTS files from the same scene with each made up of different LW objects. To activate save sets, go to the Preferneces Tab and click on the 'Activate save sets' check box. Now head to the Global Tab where you may add or remove save sets. The save set selected in the drop down list is the one you are currently making changes to in the other tabs. Version 04-02-23 - Bug fix for object visibility. Previously, the LW dissolve value was being used directly. In LightWave 0% dissolve means 100% visibility, so passing this value directly to the TGE would have the opposite affect. - Fixed the handling of vertices that take part in multiple weight maps. Previously we assumed that the total influence on a vertex by all weight maps would not be greater than 100% (a normalized value). Unfortunately, LightWave does not pass along its internally normalized value through the SDK, so we've had it handle it ourselves. Version 04-01-14 - Added a check that all animation sequences have at least one frame and at least 1 FPS before an export may take place. Version 04-01-07 - Fix a bug in the Exporter Shader that was preventing the NoMipMap and MipMapZeroBorder flags from being saved in a DTS material. - Added the IFL flag to the Exporter Shader to tag a surface as animted. This requires that a IFL file with the same name as the colour bitmap be present with the DTS file for correct loading of the DTS file in the TGE. For example: if the LW surface has a colour bitmap named face.png attached to it and is flagged as using an IFL, then the face.ifl file must be present with the saved DTS file. This IFL file is created manually in a text editor and contains a number of rows with the format of: "bitmapFileName Duration". For example, for the face.ifl file described above, it could contain: face01 5 face02 5 face03 2 face04 3 face05 5 This tells the TGE to look for bitmaps named face01.xxx through face05.xxx, with the first two bitmaps and the last bitmap having a duration of 5 30th's of a second, the third bitmap lasting 2 30th's of a second, and the fourth bitmap lasting 3 30th's of a second. As you've probably guessed, the durations are in 30th's of a second (1/30). - Added the ability to exporter IFL materials. Once you've setup a surface to be IFL animatable (see above), go to the Materials Tab for a defined animation sequence. Under this tab will be a list of all animatable surfaces. Select those that will be controlled by this anim sequence by choosing the "Attach IFL surface to sequence" check box. Two things to note about how the TGE implements IFL material animations: - IFL material animations may only be present in the DTS file (ie: cannot be saved in a DSQ) - While multiple anim sequences may be setup to control an IFL animation, if these anim sequences are played at the same time, only the first one that is encountered in the TSShapeInstance's thread list will actually control the IFL animation. The order of this thread list is determined by the order the threads are added to the TSShapeInstance. - Changed the name of the Advanced Tab to Preferences. Version 03-11-11 - Added the ability to export an object's visibility. It is based off of the LightWave object's dissolve attribute which may be animated using an envelope. Please note that under the current release of the Torque Game Engine, object visibility animation is not supported in DSQ files. You'll also want to note the following: Visibility is currently only taken into account in the TGE when it is involved in an animation. An object with less-than 100% visibility that doesn't modify the visibility in at least one animation will show as opaque in the TGE. This, of course, doesn't affect using transparent textures, only overall object visibility. In the TGE, if an object's visibility is <=0.01f, or in some cases in the TGE code <0.01f (which is 1% dissolve in LightWave) the object is not rendered at all and does not take part in any collision calculations. In the TGE, if an object's visibility is >0.99f (99% dissolve in LW) then the object is considered opaque and will render without fading. - Added the ability to export triggers to DTS and DSQ files. Currently, triggers are only defined within the DTS Exporter Animation Tab interface and not anywhere within the scene. So, if the DTS Exporter Master Plug-in is removed from the scene, all defined triggers will also be deleted (as will any defined sequences, which has always been the case). One thing to note is the "Invert on Reverse" option that will cause a trigger's state to be the opposite when an anim sequence is played in reverse within the TGE. So, if a trigger is 'on' while the anim sequence is playing in the normal (forward) direction, it will change to an 'off' in the reverse direction. This is a very specialized application for triggers, and likely will not affect the average TGE user. Version 03-10-03 - There is a confirmed bug in LW 7.x that prevents it from reporting an item's (such as a bone) true rotation to plug-ins when the 'Match Goal Orientation' parameter is set on the item. This means that when exporting to Torque, an animation shows the item NOT matching the goal's orientation (as if the flag was not turned on in LW). Some code has been put in place to help with this situation. Unfortunately, it doesn't work in all cases. With some combinations of rotations, the 'Match Goal Orientation' item can really wobble due to numerical imprecision. This may be especially true if the item is a child of a really long chain. Therefore, I recommend that you try to animate without this option turned on in LightWave. If you must use it, be prepared for the results in Torque to not match exactly those in LW. Hopefully LW 8 will fix this bug! :o) - Fixed a bug with the 'Setup for IK' button under the 'Animation' tab. If this button was clicked multiple times (which is perfectly normal when setting up your animation), multiple TorqueDTS_IKChannelCreator plug-ins were added to the object/bone. Over time, this could really slow down your timeline scrub in Layout as each additional plug-in would record the item's rotation in the DTSIK.x envelopes (this should only occur once for each item at each frame). If this has happened to you with a previous version on the DTS Exporter plug-in, you'll need to manually go through each item and remove the multiple DTS plug-ins under the 'Item Motion' pannel in Layout. Version 03-06-13 - Changed how the initial transformation of bones are handled. Originally, the bone's transformation at the base frame (usually frame 0) was used. Now, the bone's rest transformation is used (a unique attribute for bones). Before this change, if the base frame did not have the bones at the rest transformation, limbs would often 'orbit' the character when exported to Torque. When using IK, it can be nearly impossible to have the bones begin at their rest transformation at the base frame, so this change should help out a lot. - The 'Add All Nodes' and 'Remove All Nodes' buttons on the 'Animation' tab now open a window that allows the user to select the specific channels (position, rotation, scale) that should be added or removed. Previously, all channels would be added or removed. Handy if you'd like to add only the rotation channel of every node in the scene to a sequence. Version 03-02-18 - Corrected an interface bug that prevented the user from selecting the 'Blend' option for an animation. - Allowed for the export of multiple collision meshes. The user only need to select all of the LW objects they wish to use as convex collision meshes in the same manner they used to select the single collision object in the past. Version 03-01-24 - Vertices may now be influenced by multiple bones (nodes). In other words, vertices may now have values in multiple weight maps. Character animators should like this feature as seams at joints may move based on the bones on either side, resulting in much smoother motion. Version 02-12-16 - Added support for uniform and aligned scaling within DTS and DSQ animation sequences. - Nodes may now have the translation, rotation, and scale animation channels independantly selected for export. In previous versions, all translation and rotation information was exported regardless if the node had changes on only one of the channels (ie: bones only rotating). This will save a bit on the size of the generated DTS and DSQ files. - Modified the Animation tab to provide space for additional check boxes used to select which channels will be exported for each node. Version 02-10-25 - Added support for double-sided surfaces. This is accomplished by creating duplicate polygons for each double-sided polygon and reversing the normals. These duplicate polygons are then added to the overall polygon list to be saved. The export of double-sided polygons may be disabled with an option under the Advanced tab. - A new progress dialog box appears when building DSQ files. It better indicates to the user what is occurring during processing, and when it is complete. Version 02-10-18 - Allowed the user to choose if discontinuous UV texture coordinates should be automatically created from the Advanced tab. This automatic creation is on by default. - DSQ filenames for each sequence are now saved with the LightWave scene file. Version 02-10-16 - Removed the Node List button that was at the bottom of the interface, and put the information under its own 'Nodes' tab - Blend animation sequence support is working. The user must choose the reference frame, which then defines a reference position and rotation for all nodes that are a part of the sequence. All nodes in each frame of the blend sequence then subtract their positions and rotations from the reference frame to produce a neutral position and rotation. Within the TGE, the blend sequence is added to the underlying playing animation sequence to produce the desired total animation. For this to work best, the underlying playing animation sequence should set its nodes that are a part of the blend sequence to the same position and rotation as the reference frame, although there are many cases when this is not required. - Added support for discontinuous UV texture coordinates. This allows the exporter to take into account vertices that have more than one uv coordinate, such as along a seam on a cylinder. LW handles this just fine, and very often new users of the exporter assume that this functionality is available in Torque. The exporter now converts a single vertex with multiple uv coordinates into multiple vertices each with a single uv coordinate. In the end, it allows for easier mapping within LW while still working within the limitations of the Torque Engine. - DSQ files may now be saved from animation sequences. A DSQ file name is defined for each sequence and the clicks on an export button to save out the DSQ file. Version 02-08-06 - Modified the user interface so that everything is now under a tab. This change generated a new 'Objects' tab where all of the static object info that was at the top of the exporter has been moved to. - Added to the 'Animation' tab to support limiting which nodes will be exported with a given animation sequence. Previously, all nodes were exported with a sequence, regardless if they were animated or not. This change is required to allow support of blended sequences, as well as other tricks in the Torque Engine. - Add code to detect if the user is trying to load in a LW scene that was created with a newer version of the exporter plug-in than is currently installed. If this occurs, then none of the DTS information can be loaded in from the scene. I'm sure the reason is obvious! :o) - Preliminary code to support Blend animation sequences. A bug in the matrix building prevents this from completely working. Version 02-08-05 - Changed the version naming to be year-month-day. - Performed a bug-fix on the Quaternion creation from angles code. The order was originally incorrect, and caused some animation problems when all three axis of a node were animated. - Now a vertex is only considered to belong to a weight map if that vertex has a weight greater than 50%. There was a problem where a vertex was part of a weight map and had a weight of 0%, so the vertex was being associated with the wrong node. Version 17-05-2002 - A LW surface reflection of zero will turn on the 'no environmental reflections' flag for the Torque material. - The default transparency flags no longer include 'Additive' - A non-zero value for the luminosity channel in LightWave actives the SelfIlluminated flag for the Torque material. - A new LW shader has been built to allow for the setting of some Torque flags on a per surface basis. This shader requires that the exporter plug-in be loaded in both Layout and Modeler. To use it, select the 'Shader' tab for the surface, and choose TorqueDTS_MaterialAttributes from the list. This shader allows for the setting of the Additive and Subtractive flags, as well as the NoMipMap and MipMapZeroBorder flags. - Fix a bug that was preventing nodes from being a child of the correct parent. - Implemented animation sequence support. Any number of sequences may be defined for a range of frames within the scene. A sequence may also be set to cycle. All of these options are located under the Animation Tab in the exporter interface. - Added a custom object plug-in that will show the name of the current animation sequence. This is very handy as you don't need to then refer to the exporter interface to find out what sequence your frame currently belongs to. - Added a motion handler plug-in that is used to translate IK rotations into a special set of channels. These channels are then read by the exporter and save as part of the animation sequence. This allows the user to create animations using IK (otherwise, the IK rotations would not be saved as only true keyframes may be read by the exporter. A LW SDK design.). Version 21-03-2002 - Added node support, including a button to bring up a window that lists all of the nodes that will be created in the DTS file. - Currently, if a node is not exported, then its children will not be exported. The exception to this is if a node based on the mesh is not exported based on the user's option in the Advanced Tab. In this case, any children of the mesh will be exported as nodes, but their local space will be used as their world space. This will cause some differences between how nodes are displayed between LW and Torque. The current solution: Don't keyframe a mesh to a location other than the origin if you are not going to export it as a node! - Advanced Tab: Allowed the user to choose the type of points and polygons that will be exported: those as saved from Modeler (Normal), and those after being transformed within Layout, such as from bones or morphing (Transformed). The default is Normal. - Advanced Tab: The user can now choose from what time frame the positions and rotations will be read from. The default is a time of 0.0 seconds. - Advanced Tab: the user may choose to export meshes as nodes. If this is not selected, then a Root node is automatically created for meshes to attach to (if they don't have their own bones to attach to). Also, any transforms that have been done on the mesh (such as moving it or rotating it within Layout) will not be taken into account when building child nodes, such as bones. Otherwise, a node for each mesh is created, and any vertices within each mesh that are not attached to a bone are attached to the mesh's node. The default is to create a node based on the mesh. - Advanced Tab: The user may add an extension to the nodes created from meshes to distinguish them from the mesh names. This will likely only have a bearing when programmatically accessing the object within the Torque Engine. - Added support for environmentally reflective materials. The reflection parameter in the LW surface is used to regulate the amount of reflection. For each surface, the base reflection amount is control by the alpha channel in the colour bitmap. This is how Torque does it when there isn't a separate reflection map (which will be in a future version). Version 08-03-2002 - Changed the saving code to take endian differences into account for the Mac version of the exporter. This also required a change to the Shape::getNodeWorldPosRot() function to assign a Quaternion directly rather than use the SDK ::identity method. This was to get around a Visual C++6 and CodeWarrior 7 difference. - Fixed all textures to export in the correct orientation. Previously, all images would appear to be upsidedown. Hopefully this fix will not break sometime down the road, as the mapping of LW to OpenGL should have worked without this fix. Version 21-02-2002 - First stable and usable version! - Exports static objects, including a collision mesh. - Bug with textures being exported upsidedown exists.