Modeling Guidelines:
Download Source files from the Trainz Website
The purpose of this section is to assist the production and installation of custom Trainz™ assets. We are assuming that third party developers have a sound knowledge of 3DS Max™ or GMax™ and therefore only give references to model requirements, rather than a modeling tutorial
Polygon Limits:
Train body polygon recommendations (excluding bogies)
Diesel loco = 3500-9000 polygons. Steam loco = Up to 12000 polygons. As a
general rule of thumb, less is always better!
![]()
The front end of the train body should be on the LHS when displayed in the RIGHT viewport.
Train body shadow polygon recommendations = 1000 polygons or less modeled to the same basic shape and 3D space as the body. No attachments are required within the shadow file.
Attachment Points:
(MAX & GMAX: ‘Create’ tab, ‘Helpers’, ‘Point’)
To maintain correct alignment, attachment points should be created in the TOP
viewport.
These are ‘points’ in 3D space giving information on various aspects of the train as follows:
a.limfront
marks the front of the train, used for coupling
should be roughly the same distance from origin as a.limback
bogeys can be further forward than a.limfront if desired
determines the forward headlight position
height above origin (or Z) = 0.89m (2’ 10.8")
a.limback
marks the rear of the train, used for coupling
see a.limfront
height above origin (or Z) = 0.89m (2’ 10.8")
a.bog0
front bogey attachment
used for positioning the train on the track
positioned at absolute centre of front bogey
a.bog1
rear bogey attachment
used for positioning the train on the track
positioned at absolute centre of rear bogey
a.bog* (2, 3, etc)
any other bogey attachments
a.exhaust* (0, 1, etc..)
smoke generator attachments (where needed)
a.light* (0, 1, etc..)
light "corona" attachments
a.ditch* (0, 1, etc..)
ditch light "corona" attachments
a.cabfront
attachment point for the front cabin of a loco
located at the centre of cabin
a.cabback
attachment point for the rear cabin of a loco. Use this for dual cab locomotives.
located at the centre of cabin
front/back cab toggled using the ‘c’ key when using the internal camera mode
a.pant* (0, 1, etc..)
attachment point for pantographs (where needed)
a.driver* (0, 1, etc..)
attachment point for driver mesh
a.outsideview* (0, 1, etc..)
these are located external of the loco body mesh
the camera is positioned to face the negative Y direction of the attachment
toggled using [ and ] using the internal camera mode after default interior camera view(s)
On addition to these, you may add any other attachments so long as they use the a.name naming convention. These can be used as steam or smoke points, or as an attachment position for another mesh or animated mesh.
All additional smoke and mesh attachment points are referenced through the Loco’s config.TXT file. Smoke through the smoke fields, the mesh attachments though the mesh table field.
TRS2004 has the ability to allow it’s rolling stock to pick-up and deliver commodities (or products) to the various industry assets. In the coal hopper for example, the load mesh is a simple animated mesh, that is tied in through the config.TXT file to the product queue values.
Simple carriage cars require only a.limfront, a.limback, a.bog0, and a.bog1.
Another idea for animated attachments is a diesel locomotive roof fan This would be set-up using the same animated mesh inserted at each point. This can be done easily through the mesh-table.
Refer to TRAINCAR EXAMPLES for links to downloadable in-game files, documentation and source files of the various types of TRS2004 compatible traincar assets.
Note: Keep an eye on the Trainz Railroad Simulator 2004 website www.virtualtrainz.com for information on our forthcoming passenger station and car configuration.
Textures:
The materials are of Multi/Sub-Object type (one M/SO only per model) and we have used UVW Map and Unwrap UVW for texture allocation. Textures must be of following pixel dimensions: 16, 32, 64, 128, 256, 512 and 1024 pixels. Maximum ratio = 1:8 e.g. 64x512
Diffuse Maps: In many cases a single 512x1024 24-bit *.TGA file is sufficient to texture a locomotive. We recommend not making them any larger than this. Occasionally an extra texture (say 128x256) can be added.
Reflection maps are supported (16-bit color *.BMP). We generally set train body reflection amounts (in MAX) to 10 and windows to 25.
Opacity Maps (8-bit gray-scale *.BMP) are also supported to the same dimensions as the diffuse map.
Reflection and Opacity maps must not be used together with-in the same texture. Reflection and Opacity maps must not be used on digits.
Window opacity is derived from the material opacity setting
![]() |
![]() |
TRS2004 supports bump mapping and specular materials. A nice example of a bump mapped loco with specular values in use is the TRS asset: The SNCF TGV loco.
3d Studio Max v4 + users only (at time of writing). A GMax exporter update may soon be available pending negotiations with the creator of GMax - Discreet.
For those new to this term, Bump mapping is used to add 3-dimensional detail to an image (using an applied RGB ‘Normal’ map), without increasing the number of polygons.
Bump mapped materials for TRS2004 requires an new 3d Studio Max exporter.
3d Studio Max and GMax Users Adding Specular values to a material is best described as adding ‘shininess’ to the material. Altering specular values can give realistic material properties to metallic and glassy surfaces.
You can specify specular values from 3D Studio Max or GMax, but it is quite important for bump mapped materials to have specular values in order to highlight the bump mapping effect.
| * Note: | Please download the following zip file for information and set-up of bump mapped and specular materials and the Max4 exporter: http://www.auran.com/TRS2004/downloads/contentcreation/TRS_Max4_Plugin_Bump.zip |
Polygon Limits:
Train bogey polygon recommendations = <2000
polygons per truck.
Train bogey shadow polygon recommendations = <100 polygons per truck.
Carriage bogey polygon recommendations = <300 polygons per truck
Carriage bogey shadow polygon recommendations = <100 polygons per truck.
As a general rule of thumb, less is better
![]()
The absolute centre of bogeys should be located at World origin point (0,0,0)
Attachment Points:
a.ground* (0, 1, etc..)
Slightly offset at the base of each wheel
Determines the wheel spark position
Textures:
The materials are of Multi/Sub-Object type (one M/SO only per model) and we have used UVW Map and Unwrap UVW for texture allocation.
Diffuse Maps: Generally a single 128x128 16-bit .TGA file is sufficient to texture a bogey. Additional maps (e.g. for springs) are also used.
Opacity Maps (8-bit greyscale .BMP) are supported to the same pixel dimensions as the diffuse map. Used regularly for carriage bogey sides. Reflection maps are supported but generally not used on bogey models.
Exporting Models:
As per ‘Modeling Trains’ section. Remember naming conventions and to type in the file extension under file name (e.g.TRAIN_NAME_bogey.PM)
| Animated Bogey Example 1 | |
![]() |
Hierarchal
Sub-tree:
|
|
In this example, the bogey will be inserted into the Train model attachment point (e.g. a.bog0) at b.r.base (or 0,0,0). b.r.wheel0, and b.r.wheel1 (bones) were animated to turn 360o over 32 frames. Bones must have the b.r.* naming convention for Trainz to recognize them. |
| Animated Bogey Example 2a - Objects |
![]() |
| Animated Bogey Example 2b - Bones |
![]() |
| Animated Bogey Example 2c - Side view after a few frames |
Hierarchal Sub-tree |
|
![]() |
||
| This example is much more complex than the previous example. Animation frames = 120 | ||
|
Wheel_1, 2 & 3 circumference = 4.2m
Distance traveled: 4.2m x 2 revs = 8.4m |
smallwheel circumfrence = 2.8m
Distance traveled: 2.8m x 3 revs = 8.4m |
|
|
||
Pantographs are the animated mechanisms on the roof of electric locomotives that conduct to an electric caternary (wires) above.
Model configuration:
Typical model configuration: (based on the bb15000 pantograph)
Generally Pantograph animations should take place over 16 frames only. Bones must have the b.r.* naming convention for Trainz to recognize them. Refer to the Source files from the Trainz Website for a working example.
![]() |
Typical Hierarchal Sub-tree b.r.base
|
|
In this example, the Pantograph will be inserted into the Train model attachment point (a.pant0) at b.r.base (or 0,0,0). |