Bone hierarchy in vehicle models
Last updated
Last updated
The basis
bone serves as the root bone in the skeletal hierarchy of any vehicle model.
It functions as a dummy helper that defines critical properties of the model, including:
model type;
export path for the model to the game;
wheel rotation speed and size (applied if all wheels are uniformly sized; otherwise, sizes are set in individual wheel bones);
inverse kinematics (IK) parameter IKType=revolute
with rotation constraints, if the vehicle supports body rotation.
animation type and duration for key sequences;
The basis
bone is positioned at the origin point (X=0, Y=0, Z=0)
in world space, ensuring the model aligns correctly within the game.
In the "Front" orthographic view, the vehicle is displayed from the right side, which must be accounted for during configuration.
The forward movement vector of the basis
bone—and consequently the entire model—is aligned with the positive X-axis.
Accurate orientation of the basis
bone is vital for:
proper alignment and movement of the model in the game space;
correct placement and visualization of the selection circle sprite beneath the model.
Visible bones of the model are the primary bones and secondary bones in the model's element hierarchy that contain the meshes of the model's components.
Primary bones represent the parent bones in the model element hierarchy, forming the primary part of the visible mesh of vehicle components:
body
(hull);
turret
;
cabin
;
gun_rot
(gun elevation mechanism);
gun
;
engine
;
track
and wheel
(transmission bones).
Primary bones hierarchy scheme
Secondary bones contain meshes of parts of a vehicle model's component :
detail
(visual detail);
shield
(additional armor part);
enumerator
(vehicle identifier);
cover
/door
;
bones associated with the vehicle's suspension mechanism.
Secondary bones are typically linked to the primary bones they are part of .
Properties of bones are defined in the Object Properties window.
poly
Defines bone visibility. Absence of this parameter makes the bone invisible.
ID=<value>
Component identifier. Links the bone to a specific vehicle component (e.g., Hull, Turret, Left track, Gun).
Animation=<name>
List of animations if the bone is animated
IKType=revolute
,
IKType=socket
,
IKSpeed=<value>
,
IKLimit=<value>
.
Inverse kinematics parameters allow the bone to operate under IK rules, setting the speed and rotation limits for the bone.
body
Hull
engine
Engine
cabin
Vehicle cabin
turret
Turret
gun
Gun
trackleft
/ trackright
Left /Right tracks
wheelright<N>
/ wheelleft<N>
Right and Left wheels (<N>
is the wheel's index)
The ID value of secondary bones corresponds to the ID value of the primary bones of which they are a visual part.
Despite identical naming, a bone is not equivalent to a vehicle component.
A vehicle component can consist of multiple bones with different names but the same ID value. As a whole, bones with the same ID form a specific vehicle component in the game.
Examples:
the bones turret
, cover
, and detail
, each assigned the property ID=turret
, together form the Turret component in the game;
the bones body
, cover
, and detail
, each assigned the property ID=body
, together form the Hull component in the game.
break
: destruction animation assigned to the bone of the intact part of the model, representing the undamaged vehicle component.
repair
: animation for repairing the х-model of a vehicle component.
For more details on configuring the hierarchy of visible bone elements, refer to the following articles:
Helper bones are predominantly invisible dummy objects used to ensure the proper functioning of a model's visual, functional, and animation aspects.
visor1
: an invisible helper linked to the turret
bone, representing the turret's field of view.
visor2
: an invisible helper acting as the "eyes" of the tank, aligned with the movement vector and linked to the body
bone, positioned near the frontal armor's view slit.
These bones are aligned along the X-axis
Special effect bones (effectors) are used to create visual effects in the game. These bones are aligned along the X-axis for correct effect orientation.
Effector name
Purpose
Naming rules and specifics
fxfire1
Engine fire effect
If multiple bones are needed, they are named sequentially (e.g., fxfire1
, fxfire2
, etc.).
fxfire2
Body fire effect
Similar naming convention as above.
fxfire3
Turret fire effect
The naming continues sequentially if additional bones are required.
fxshot
Dust effect from tank firing
This bone is used without variation in naming unless additional directional effects are required.
fxsmoke
Exhaust effects
For multiple exhaust effects, sequential numbering is added (e.g., fxsmoke1
, fxsmoke2
, etc.).
fxstop
Brake lights
If more than one brake light is needed, bones are named sequentially (e.g., fxstop1
, fxstop2
, etc.).
headlight
Headlight glow
If multiple headlights exist, side indices (L
for left, R
for right) are included in the names (e.g., headlightL
).
fxlight
Additional headlight glow effects
Sequential numbering is added, but the first bone does not include a number (e.g., fxlight
, fxlight1
, fxlight2
).
fxtrace
Dust and dirt from tracks or wheels
Bones are named sequentially with side indices (e.g., fxtraceL1
, fxtraceR1
, fxtraceL2
, fxtraceR2
).
foresight
Weapon or machine gun firing effects
If multiple effects are needed, the bones are numbered sequentially (e.g., foresight1
, foresight2
, etc.).
To define animation entry points for human units boarding vehicles, special bones known as emit
are utilized.
emit0
, emit1
, emit2
Primary bones defining entry points for animations of crew boarding directly into the tank: emit1
and emit2
are positioned on either side of the model near the turret, while emit0
is optional and used for a driver's hatch animation if present.
emit3
, emit4
, emit5
, etc.
Bones defining points in space near the tank, marking positions for soldiers boarding the vehicle's armor as passengers.
Rules for emit
bones
The number of emit
bones must match the animation requirements. Missing bones can cause incorrect unit behavior.
The pivot orientation of emit
bones should align along the X-axis towards the body
bone for proper crew alignment.
These bones remain invisible and do not require properties in the Object Properties window.
Invisible seat
bones define the seating positions for passengers on the vehicle’s armor and mark the endpoints of boarding animations starting from emit
bones.
seat01
, seat02
, etc.
Bones placed opposite their corresponding emit
bones
Rules for seat
bones
The number of seat
bones must match the emit
bones for visible passengers.
Proper positioning ensures realistic passenger animations.
These bones remain invisible and do not require properties in the Object Properties window.
Mounting points for machine guns on the vehicle are defined by special bones called mgun
. These bones can be visible (containing polygons) or invisible (implemented as helper objects) and are linked to the specific model element intended for the machine gun.
mgun
bonesThe properties of mgun
bones are specified in the [Object Properties] window and can include the following parameters:
poly
Makes the bone visible. Should be applied if the machine gun mesh is part of the model. If the gun is hidden or only the mounting point is present, the bone remains invisible.
IKType=revolute
Enables inverse kinematics for rotational aiming.
IKMin=<value>
IKMax=<value>
Defines the minimum/maximum rotation limit for inverse kinematics.
Linking effectors to mgun
bones
Helpers named foresight
are linked to mgun
bones to spawn machine gun firing effects along the X-axis.
mgun
-foresight
linkageIf the vehicle has multiple additional machine guns, the naming of the foresight
helper must match the corresponding mgun
bone:
mgun
→ foresight3
mgun1
→ foresight4
mgun2
→ foresight5
mgun3
→ foresight6
Failure to follow the naming convention will result in script errors.
mgun
bonesWhen modeling, it is essential to include a sufficient number of mgun
bones to accommodate the maximum possible machine gun placements on the vehicle.
aa
Anti-aircraft gun
hull
Fixed machine gun mounted in the chassis
coaxial
Coaxial machine gun mounted in the turret
rear
Rear-mounted machine gun
The configuration for linking machine guns to bones is defined in the model's .def
file within placer
blocks.
Syntax:
A volume
is a parametric shape (e.g., box
, sphere
, cylinder
) or a mesh-based form (edit poly
) that envelops the model's mesh and is used to calculate the physical interactions of the unit in the game.
Bones of the volume
type are created for all major bones of the model.
Each primary bone requires its own volume or a set of volumes.
It is unnecessary to create volumes for detail
bones because the game engine does not support volumes for visual parts.
The shape of the volume mesh should ensure realistic physical interactions. The volume
parameter must be set in the [Object Properties] of the volume.
A Material ID
is assigned to the polygons of the volume mesh, which determines armor penetration calculations.
Volumes should be extruded from a rectangle in the Top viewport. This ensures that Material IDs
are automatically assigned to the volume surface, eliminating the need for additional verification or reassignment according to the established rules.
Volumes must remain standard primitives.
Converting a primitive into polygonal forms using editable poly
tools is recommended only when the complex geometry of a part of the model cannot be represented with a primitive.
Geometry adjustments at the sub-object level are permissible if the created model is not a single volume. In such cases, creating multiple volume
bones with identical properties is allowed.
There should be no gaps between such volumes; however, minor overlaps are acceptable.
Examples of volume creation In the first screenshot, the volumes are created correctly. In the second screenshot, the volume is created incorrectly as it obstructs projectiles/bullets from hitting units located in the cabin.
The volume covering the mesh of the main bone includes the name of that bone.
For example: body_vol
, turret_vol
, engine_vol
.
If multiple volumes cover a single bone, numbering is used in the volume names. The naming template is: bonenameN_vol
, where N
is the serial number.
For example: body01_vol
, body02_vol
, body03_vol
.
In polyhedron volumes for the hull, each polygon must be assigned a Select ID
value in the Material IDs
parameter within the Polygon
properties block. The value must strictly correspond to the following table:
Front - 1
Top - 2
Left - 3
Right - 4
Back - 5
Bottom - 6
The ID
parameter determines the virtual armor of the vehicle components: front armor, side armor, rear armor, etc.
For vehicles and other units with windows, volumes are created for the glass.
They are named window<N>_vol
, where <N>
is the unique index of the volume.
To add glass destruction animations, the windowed
property must be included in the props
block of the unit's .def
file.
Volume for ram collision
The ram_vol
volume is used to calculate collisions during vehicle ramming.
It is a polyhedron with a central convexity to minimize the chance of the vehicle getting stuck when colliding perpendicularly with other objects.
Assigning Material ID
to surfaces is not required.
Crew volume
The crew_vol
volume ensures interaction with the crew inside the vehicle.
It is used in models of heavy vehicles with open cabins or transport vehicles with open cargo areas.
This volume can be implemented as a primitive geometric shape or as a polyhedron, depending on the model structure.
Assigning Material ID
to surfaces is not required.
Grenade catcher volume
The sticky_vol
volume is responsible for attracting grenades thrown at the vehicle to specific zones.
It is used in heavy vehicles with open cabins or transport vehicles with open cargo areas.
The volume is formed based on the internal space of the vehicle to increase the likelihood of a grenade entering the vulnerable area.
Fuel tank volume
The fuel_vol
volume defines the geometry for interacting with external fuel tanks on vehicles.