Vehicle Model Setup Pipeline

Recommendations for model development and configuration

To optimize the workflow of creating and exporting assets into the game, it is recommended to adhere to the established production pipeline.

Start by creating the base model and perform initial in-game testing to identify any visual artifacts and verify the correct functionality of the primary features.

After successful validation, proceed to generate Levels of Detail (LODs). Then create the X-model and XX-model, along with their respective LODs. Integrate animations at the final stage, once the model is fully polished and no further adjustments are needed.

Following this sequence will allow for timely identification of issues and help avoid extensive rework.

Pre-setup checklist

  • Verify model scale and proportions

    Ensure that the vehicle's overall dimensions (length, width, height) and the gun barrel caliber are accurately scaled to match the original specifications or reference data.

  • Confirm model orientation

    Align the model so that its front faces the positive X-axis, adhering to the standard coordinate system conventions used in the game engine.

  • Assign materials and shaders

    Apply the appropriate materials and shaders to the model to facilitate correct visualization and rendering within the engine.

  • Create the 'Basis' root bone

    Add the 'Basis' root bone to the model's skeletal hierarchy. In its object properties, set the game entity type and specify the export path for integration into the game's asset pipeline.

Working with the mesh

  • Merge and split mesh components Organize the mesh by splitting or merging it into components that correspond to the visible bones of the model. Assign appropriate names to each bone according to the specification. In the Object Properties of each bone, set the parameter poly to indicate that it is a visible bone of the model.

  • Establish layer hierarchy Set up a hierarchical layer structure to manage various aspects of the model for better workflow efficiency. Include layers for meshes, Levels of Detail (lod0 to lod3), volumes, special effects, and auxiliary bones. Using layers allows you to easily isolate and work on specific parts of the model.

  • Add occlusion geometry to simulate interiors For vehicle parts where the interior might be visible — such as the hull, turret, or engine compartment — add simple box geometry to cover openings. Apply textures with dark or non-reflective materials on these occluders to create the illusion of depth without modeling detailed interiors. This technique improves rendering performance and visual fidelity by preventing the camera from seeing through the model.

Working with bones and hierarchy

  • Add auxiliary bones Include the necessary auxiliary bones required for the correct functioning of all features of the model. These may include:

    • bones for the starting points of specific animations (emit);

    • bones for passenger positions (seat);

    • bones for all visible crew members and machine gunners;

    • bones for visors;

    • bones used for enumeration purposes;

    • bones for special effects;

    • bones for chassis components and suspension control;

    • any other bones as necessary.

  • Adjust pivots Check and, if necessary, adjust the pivot points for meshes, visible bones, and suspension components. Ensure that all pivots are correctly oriented. Verify that the rotations of movable parts like wheels, turrets, and barrels occur around the Z-axis.

  • Set parameters in Object Properties Specify the necessary parameters for objects (including meshes and both visible and auxiliary bones) in their Object Properties, according to the project's specifications.

  • Build the hierarchy Organize the model elements into the correct hierarchy by linking all branches of elements to the model's root bone (Basis). Ensure that primary bones and secondary bones are properly connected, and that auxiliary bones are correctly integrated to support the model's functionalities.

Working with volumes

  • Create and configure volumes

    Create the required volumes and rename them appropriately. For each volume, specify the parameter volume in its Object Properties to designate it as a volume object. Then, link each volume to its corresponding parent object in the model hierarchy.

  • Verify armor mapping

    Ensure that each face of the volume primitive has the correct ID assigned in the Polygon: Material IDs window. If a volume is a polyhedron, reassign the Material IDs of its faces according to the established rules for armor calculation.

  • Define volumes in the .def file

    If a component has additional volumes (e.g., body01_vol, body02_vol, etc.), after the first export, you need to add their definitions to the model's .def file.

The first export

  • Verify export settings Check the export settings of the 3ds Max Plugin and the export path specified in the properties of the Basis bone.

  • Post-export .def file verification After exporting, review the .def file. Ensure that the .def file includes all the necessary elements required for conducting the initial in-game testing of the model and verifying its core functionality.

Test basic functionality in the game

  • Verify visual conformity Ensure that the model visually matches its representation in the 3ds Max workspace after export to the game and texture conversion to DDS. Confirm that the model has the correct orientation and proportions.

  • Test unit movement and movable parts Verify the proper functioning of all primary components:

    • verify that movable parts respond correctly if applicable;

    • the main weapon fires and has correct rotation limits;

    • machine guns (if any) fire and have correct rotation limits;

    • suspension behaves correctly during movement;

    • wheels and/or tracks rotate and steer in the proper directions;

    • armor screens (if any) detach upon damage;

    • test collision volumes for proper physical interactions.

Working with LODs

Create LODs

  • LOD 1: Retain ~75–80% of the original triangles.

  • LOD 2: Retain ~50% of the original triangles.

  • LOD 3: Retain ~30–35% of the original triangles.

Working with textures

  • Assign materials Assign materials to the model and apply the corresponding textures.

  • Verify material assignments with alpha channel support Create a separate material with alpha channel support and assign it exclusively to polygons with transparent elements to optimize rendering.

  • Check seams and edges Ensure that textures are not distorted at cuts, seams, and displacements. If necessary, reassign using UVW mapping.

  • Clear shadows Ensure that shadows are absent in areas where objects were removed in X- and XX-model textures.

Creating X-models

  • Modify the export path Change the export path of the Basis bone to the X-model folder.

  • Create X-model textures Textures should include damage elements (rust spots, soot marks, burned-out paint, broken glass, etc.)

  • Refine the X-model mesh Remove unnecessary elements, add dents, penetrations, and damage areas.

  • Refine LODs for X-models Apply the same actions to all LODs (or simultaneously to all).

  • Refine broken tracks For tracked models, refine the broken track mesh.

  • Clear shadows on the X-model Remove shadows from areas where objects were removed on the X-model texture.

  • Test component destructibility Test using the following console commands:

    • destroy a component: g_component break "component_name";

    • repair a component: g_component restore "component_name";

    • shoot at the unit with two shell types;

    • fire at the unit with an anti-tank weapon (e.g., Bazooka);

    • throw an anti-tank grenade at the unit.

Creating XX-models

  • Modify the export path Change the export path of the Basis bone to the XX-model folder.

  • Remove helpers Delete unnecessary helpers.

  • Reassign diffuse texture Use a Multiply material for the diffuse texture. For models using PBR materials, the pbr/standard_dirt scheme is used; otherwise, use gem2/bump_specular_lightmap.

  • Transfer UV mapping Transfer UV mapping to the second channel for lightmap purposes across all elements and LODs.

  • Refine the XX-model mesh Remove unnecessary elements, including tire meshes for wheeled models.

  • Refine LODs Apply the same refinements to all LODs.

  • Create parts and volumes Create and configure parts and volumes for XX-models.

  • Test component destructibility Use the following commands:

    • destroy a component: g_component destroy "component_name";

    • trigger an explosion effect: g_effect "explosion";

    • fire at the unit with two shell types;

    • use an anti-tank weapon (e.g., Bazooka) to fire at the unit and verify the destruction of vehicle components upon impact.

    • throw an anti-tank grenade;

    • verify that part bones detach upon explosion.

Configuring the .def file

During the first export of the model into the game, a simplified version of the .def file is generated, which is sufficient for testing the model's main functionality in-game. Once the model is fully completed, you need to refine the .def file using a text editor. It is acceptable to copy a .def file from an already completed and configured model of similar type and functionality, then make the necessary adjustments.

  • Add basic props Add props corresponding to the model's type and functionality.

  • Describe additional volumes Ensure that all additional volumes are properly described in the .def file.

  • Define crew bones and emit points In the .def file, describe the emitters and bones for crew placement. If the crew.ext file is specified, make entries in that file.

  • Add crew animations and poses Specify the appropriate animations and poses for the crew members.

  • Describe additional equipment

    If applicable, describe any additional equipment, such as mesh-mounted machine guns or machine guns integrated via auxiliary bones.

  • Specify physical properties Define the model's physical properties (mass, speed, fuel tank volume, etc.).

Adding animations

  • Configure tracks Apply and configure the Skin modifier for all tracks.

  • Create basic animations:

    • start/stop;

    • hit;

    • fire;

    • fire_mgun;

    • animations for opening/closing doors and hatches during crew embarkation/disembarkation;

    • other animations if necessary.

Last updated