Skip to content

Latest commit

 

History

History
109 lines (75 loc) · 4.9 KB

README.md

File metadata and controls

109 lines (75 loc) · 4.9 KB

IO DIF

Blender plugin to import and export MBG Torque DIF interiors and Torque Constructor CSX files. Supported Blender Versions: 2.8.0 to 4.3

Note

The difs generated by this plugin ONLY work in Marble Blast not because of the dif versions but because of the very way the difs are constructed. A lot of stuff is not generated because MB does not require it and some unconventional algorithms are used which specifically make use of how MB makes use of difs. The collision WILL not work anywhere outside MB. Even raycasts don't work.

Features

Import DIF

  • Powered by hxDIF
  • Supports PathedInteriors and its path
  • Supports embedded GameEntities with properties
  • Supports loading textures

Import CSX

  • Import Torque Constructor CSX files
  • Supports Entities and textures

Export DIF

  • Powered by DifBuilder
  • Export support for PathedInteriors and Markers
  • Export support for GameEntities and its properties
  • Additional export parameters provided by obj2difPlus

Installation

Download the plugin from Releases and install it how you normally install blender plugins.

How to

Import

File > Import > Torque (.dif).
It can't be any more simpler than that.

If you want to load a Torque Constructor (.csx) file and create a Torque DIF, use File > Import > Torque Constructor (.csx).

Export

File > Export > Torque (.dif)

Additional export options - Important!

  • Flip Faces: Flip the normals of the dif, incase the resultant dif is inside out.
  • Double Faces: Make all the faces double sided, may increase lag during collision detection.
  • Max Polygons: Number of maximum triangles that a DIF can have before splitting into multiple DIFs. Reduce this number if export fails.
  • Apply Modifiers: Whether to apply modifiers to meshes before exporting.
  • Export Visible: Export only visible geometry.
  • Export Selected: Export only selected geometry.
  • Use Material Names: Use Material Names instead of file names of the material textures.
  • Optimize For Marble Blast: Make the resultant DIF optimized for Marble Blast. Uncheck this if you want to use this for other Torque games.
  • BSP Algorithm:
    • Fast (Default): Use a sampling algorithm to determine the best splitter. This method is inherently random and may not always yield optimal results.
    • Exhaustive: Use an exhaustive search algorithm to determine the best splitter. May take longer but builds more balanced trees. Deterministic algorithm.
    • None: Do not build a BSP Tree, utilize this for fast conversion times or if building the BSP Tree fails/hangs on export.
    • IMPORTANT: If your geometry is too complex, consider using None mode as there is no guarantee that a BSP Tree can be optimally built within set constraints.
    • IMPORTANT: BSP Trees are only used for Raycasts and Drop To Ground feature in Marble Blast. If you are not using these features, you can safely disable the BSP Tree.
  • Point Epsilon: The minimum distance between two points to be considered different.
  • Plane Epsilon: Minimum difference between values of two plane to be considered equal.
  • Split Epsilon: Minimum difference between values of two splitting planes to be considered equal.

DIF Properties Panel

Located in the object properties panel

  • Interior Entity Type:
    • InteriorResource: normal static interior type
    • PathedInterior: moving platform type interior
      • Marker Path: a curve object that describes the path of the moving platform
        • initialPathPosition: set using the "Evaluation Time" parameter located in Curve > Object Data Properties > Path Animation
        • totalPathTime: time it takes for the moving platform to complete the path, set using the "Frames" parameter located in Curve > Object Data Properties > Path Animation.
    • Game Entity: represents an entity in the dif such as items
      • Game Class: the class of the entity such as "Item", "StaticShape",etc
      • Datablock: the datablock of the item.
      • Properties: a list of additional key value pairs which will be set to the object on Create Subs

Limitations

  • No Trigger support: I tried but Torque was being Torque even when I successfully embedded them into difs.
  • No Game Entity rotation support: there isnt even a rotation field for Game Entities in difs, and torque doesnt even use the rotation field explicitly passed as a property

Previews

Imgur

Imgur

Build

Checkout the repository correctly

git checkout https://github.com/RandomityGuy/io_dif.git
cd rust/difbuilder
cargo build --release

Copy resultant difbuilder.dll to blender_plugin/io_dif folder and rename it to DifBuilderLib.dll
Copy blender_plugin/io_dif to your blender plugins folder.

Credits

Thanks HiGuy for your incomplete blender dif import plugin as well as the Rust dif library.