Table of Contents
Star Trek: Armada Model Hierarchy
Summary
Star Trek: Armada utilizes SOD files, that basically contain each units' structural definition, the mesh, as well as references to the textures to be applied to the faces defined by it.
Along with that come also the so-called node definitions. Each node has a specific role, like functioning as a point of origin from which weapons fire or from where damage-flares are emitted. A node has a vertex position and a direction in which it points. For certain types of nodes the direction has no effect. For others it has (e.g. directed pulse phasers or the orientation of damage indicator sprites).
The totality of the nodes is part of the node hierarchy of the model. Each node is tied to a parent node, except for the root node, which stands for itself. While the textures on the faces of the mesh are clearly visible, nodes serve as location points of other elements, so are by themselves not visible. The names of nodes are in part fixed, in part depend on your model.
Node names prepended by e_, s_, m_ or hp are reserved nodes. Some names are very specific, serving a unique purpose: borg, crew, damage, engines, geometry, hardpoints, life, lights, root, sensors, shield and target.
A Basic Hierarchy
Here is an example structure of nodes derived from the Cube unit:
root damage borg crew s_crew1 engines e_plasmalrg life e_steamlrg sensors s_sensor shield target hardpoints hp01 geometry m_bbattleglow1 Lod0 m_Bbattle_2 Lod1 m_Bbattle_1 Lod2 m_Bbattle
The indentation represents the hierarchical structure. There are different types of nodes, some of which are mandatory.
Node Types
Borg Node
Nodes of this type are simply named borg. Borg nodes are serving the task of parts of the model to be displayed, once it has been built or assimilated by a Borg faction. For all other factions the model referenced by them is invisible. The borg node is child node of damage and it is optional.
Crew Nodes
The crew node is child element of damage and the parent of further nodes that are displayed when the unit suffers crew losses. It is optional (e.g. crew-less units won't need it).
Damage Node
The node damage is mandatory and has strictly a grouping function. If is parent element for the nodes borg, crew, engines, life, sensors, shields and target. The damage node is a child element of root.
Engine Nodes
The node named engines is a child of the damage element. Child elements of engines are used as damage indicators, when the engines are down. They are optional (e.g. for stationary models it makes little sense to have them).
Geometry Nodes
The node with the name geometry is mandatory. It represents the actual unit's optical manifestation. Without it the model will not be visible. It is the child element of the root node and the parent of sub-parts of the geometry definition. Some are special in their function, such as the glow element. It makes the unit get the team color. LODs on the other hand are meant for representations of different details. See Level of Display on the concept. The general geometry defining node is the name of the mesh (or mesh group) prepended by m_
.
Hardpoints
Hardpoints are the locations from which weapons fire. They are children of the hardpoints element, which in turn is child of root. Each hardpoint is named hpxx
, where xx
is a unique, serialized number of two digits, beginning with 01
.
Life Node
The life node is a child element of the damage hierarchy. It's children nodes are named in the same way as animated SOD models, usually representing flares. They are indicating the life support system being down. For ships without life support system (e.g. automated stations) it is not needed.
Light Nodes
The root hierarchy may also contain the lights node. If used it holds elements, that are used for lighting, such as positioning lights. Child nodes of lights are named by sprite names that can be found in the file lights.spr in the Sprites directory of your Armada main directory or in the Weapons Sprite Names article.
LOD Nodes
LOD nodes reference parts of the model by naming convention. Lodx with x being a number, defines the level of detail. Each LOD node has a child node, that references the part of the model by name by being named in the same fashion, prepended with an m_. In the above example the sub model Bbattle_2 if referenced by the most basic LOD, with the number 0. LODs are optional.
Root Node
The node named root is mandatory. It is parent of the nodes damage, hardpoints, geometry and lights. It serves strictly a grouping purpose.
Sensor Node
This node is child of the damage node and has its own children.
Shield Nodes
The node shield is child of root. It represents shield damage. Child elements of it are named by sprites shown when certain levels of damage are reached. The names are prepended by s_
.
Target Nodes
The node hierarchy target is child of damage and contains nodes, that are shown when the weapons are down. They are named by sprites to be shown and a prepended s_
.
Stock Game Node Names
The names of nodes used in the stock game can be found in article Node Names.
Level of Display
The further away the view point of the player is from the unit, the less details a unit needs, in order to still look good. To facilitate this concept of dynamically shown models or model parts, Levels of Display (LOD). Parts of the mesh are named specifically, to be referenced by the hierarchy on form of LOD nodes.
Particle Emitters
Emitters are usually kind of flares (e.g. the fountain displayed when engines are down). Node names referencing them are prepended with e_
.
Hierarchy Creation With Milkshape
Modelling
Milkshape is not particularly well suited when it comes to creating the node hierarchy. It does not know of the concept, somewhat. Instead of it, the joint concept usually used for animations, takes its place. This has the implication, that every joint does still have a direction (just like nodes) but the location of one joint is always depending on the location of its parent element. The parent element concept is basically the same as meant for nodes. But positioning a node is not as free as it is usually required. So creating the nodes in Milkshape is not advised. 3DS Max does a far better job.
Node Name Conventions
Apparently Milkshape in conjunction with an SOD exporter requires the normally none-prefixed node names to be prefixed with h_
. So for example the damage node will not be named just damage but has to be named h_damage
in order to work properly. SODs imported will already fit this naming convention. When you have a look at the interior of SOD files exported from Milkshape, the names will be set to normal (for our example, still be named damage), too. But when creating nodes yourself, you have to prepend the names of specific nodes given here with h_
.
[ Back to Modding ]