Skip to content

ImportCollisionGeometry

Hariiiiiiii edited this page Feb 2, 2021 · 11 revisions

The importcollisiongeometry command is used to create a new .coll tag using a model in a format accepted by the Open Asset Import Library (Assimp). Arguments can be used to optionally generate BSP Physics and MOPP code blocks to allow this coll tag to also provide player collision. See the BSP Physics and MOPP codes section below for more information.

Usage

importcollisiongeometry [mopp] [force] [debug] <input file directory> <tagname>

  • input file directory - the directory of the model file that you would like to import
  • tagname - the name which you would like to give to the new collision model tag that you are importing. this name must be unique and not currently used in the current cache.

Arguments

  • mopp - generate BSP Physics and MOPP code blocks to allow this coll tag to also provide player collision
  • force - bypass certain checks on model import including the open edge check. WARNING: collision models with open edges may cause severe physics issues
  • debug - increase verbosity of error output to help debug model issues

Model Requirements

Models imported using this command must have:

  • no open edges
  • no more than two surfaces sharing a single edge
  • no overlapping surfaces
  • no more than 65535 edges, vertices, or surfaces

Scale and Axis Conventions

  • Halo works at a scale that is 1/100 the scale of most common 3D modeling programs which use m (meters) as their base unit. To compensate for this, TagTool geometry importers scale down models to 1/100 of their size during the import process. When scaling your model, keep in mind that master chief is approximately 1.7m in standard scale.
  • Halo uses a Y-up axis convention, similar to many 3D modeling programs such as Autodesk 3DS Max. Blender, another common 3D modeling program, uses a Z-up axis convention, which can result in a discrepancy between how your model appears in blender vs how your model appears in-game. For example, if a Halo/3DS Max coordinate was recorded as <x,y,z>, an equivalent Blender coordinate would be <x,-z,y>.

BSP Physics and MOPP codes

A collision model (.coll) tag with BSP physics and MOPP code blocks can be used to create a scenery (.scen) object that has full collision capabilities without the need for a physics model (.phmo) tag. With this arrangement, the scenery object will be static and immovable, similar to map geometry. However, the object can still be manipulated using Forge. When setting up a scenery object in this way, there are a number of important considerations:

  • the model (.hlmt) tag associated with the scenery (.scen) tag must NOT reference a physics model (.phmo) tag, or the collision on the scenery object will not be functional.
  • the BSP physics block in the coll tag has a tag reference field that MUST reference the parent model (.hlmt) tag, or the game will crash upon model interaction.

Troubleshooting & Common Errors

Most errors will automatically print out a list of coordinates at which to find the geometry elements that are causing errors. These coordinates are printed in both Y-Up (3DS Max etc) and Z-Up (Blender) axis conventions.

  • ###ERROR Failed to split surface! This uncommon error usually occurs when the model is either too highly detailed or too small to allow the BSP generator to effectively split surfaces. Check that you have scaled your model correctly according to the model requirements section above.
  • ###ERROR: Edge with below vertices is open! An open edge is an edge of a surface that does not contact any other surfaces. To avoid having any open edges, your model must be a completely closed shape. Use the coordinates listed to find the problem edge, and close any openings in the model that are present there.
  • ###ERROR: Face # did not have exactly 3 vertices! This error occurs when you have a polygon in your model that has two overlapping vertices. Make sure to use the clean up tools in your 3D modeling software of choice to remove invalid and incomplete polygons.
  • ###ERROR: Edge between the following vertices is contacted by more than two surfaces!! Only two surfaces may share an edge. Use the printed coordinates to find the region in your model where more than two surfaces meet, and adjust the model to ensure that only two surfaces share a single edge.
Clone this wiki locally