Truck Description File

From Rigs Of Rods

Revision as of 21:24, 28 August 2006 by Admin (Talk | contribs)

This file is in text format. It contains all the structural, physical and visual parameters defining a truck. It is parsed by a very crude parser, so stick to the syntax, or expect crashes. Some keywords seems not logical, this is due to the fact that I did not know where I was going when I started this project. So be warned that this stuff is not foolproof. It is decomposed in sections, each section is announced by a keyword (except the title). Comments can be put anywhere by putting a ";" as the first character of the line. Node coordinates are always:

  • X: front to back
  • Y: bottom to top
  • Z: right to left

See Truck Concepts to understand the building philosophy. I recommand the following method of construction:

  • Draw the blueprint of your truck on a drawing paper. Mark the nodes, and write their number.
  • Edit your truck file and put the title, globals, engine, cameras, nodes and beams section.
  • Run the game to see how it goes. If you forget some beams the truck will fold on itself!
  • When the chassis seems good, add wheels, suspensions, direction and test-drive
  • When the truck is sound, do the bodywork and texture, and mark most beams as invisible (displaying too much beams have a large performance impact)

To see a simple truck file example, see this Step by step truck construction.

Before be start, let ask an important question: Is it a truck or is it a plane? or what makes a truck a truck and a plane a plane. Simple:

  • A truck is a description file containing an engine section
  • A plane is a description file containing a turboprops section

Also, notice that:

  • You sould not have both an engine section and a turboprops section in the same file
  • If you have neither, then you are making a load, and the file extension should be .load (see Creating a Load)
  • It is legal to have a wings section on a truck (e.g. to add aerodynamic spoilers for stability).


We go thru the sections. Order is important, so stick to this order.

Contents

Title

This section is the only that is not introduced by a keyword. It is the name of the truck, and it must absolutely be the first line of the file. e.g.

My nice truck

Globals

This section defines some global parameters, in only one line containing: the global dry mass (in kg), the global cargo mass (mass of the nodes marked "l") and the name of the material that Ogre will use to texture the truck. This must coincide with the material name given in the Material File. If you don't know, or your truck is not textured yet (no submesh section) you can reuse any existing material, like tracks/semi for example.

globals
;dry mass, cargo mass, material
10000.0, 1000.0, tracks/semi

Globeams

This section is very special and should not be used for most designs. It was created to make the bridge. It allows you to alter the default mechanical and visual beam properties. The parameters are: default stress at which beams deforms (in Newtons), default stress at which beams break, default beams diameter (in meter), default beams material.

globeams
500000, 1000000, 0.5, tracks/beam

Engine

The engine section contains the engine parameters. You should not fiddle too much this. The interesting parameter is the torque (3rd one) that defines the engine power. You don't want to use this section if you want to do a plane or a load.

engine
;min rpm, max rpm, torque, differential ratio, rear gear, first, second, third, fourth, fifth, sixth...
1000.0, 1500.0,  8000.0, 2.00, 10.85,  13.86, 9.52, 6.56, 5.48, 4.58, 3.83, 3.02, 2.53, 2.08, 1.74, 1.43, 1.20, 1.00, -1.0

Cameras

This section is important. It helps to position the truck in space, by defining a local direction reference. For example this is used to measure the pitch and the roll of the truck. The three parameters are node numbers (defined in the next section). The first if the reference and may be anywhere, the second must be behind the first (if you look at the front of the truck, it is hidden behind the first), and the third must be at the left of the first (if you look to the right of the truck, it is hidden by the first)

cameras
;center,back,left
0,2,1

Nodes

With this section begins the structural description. Each line defines a node. The first parameter is the node number, and must absolutely be consecutive. The three following parameters are the x,y,z coordinates, in meter. You can attach an optional option to a node by adding a single character. Recognized options are:

  • "l": this node bears a part of the cargo load
  • "f": this node has extra friction with the ground (usefull for feets)
  • "x": this node is the exhaust point (requires a "y" node)
  • "y": exhaust reference point, this point is at the opposite of the direction of the exhaust
  • "c": this node will not detect contact with ground (can be used for optimization, on inner chassis parts)
  • "h": this node is a hook point (e.g. the extremity of a crane)
  • "e": this node is a terrain editing point (used in the terrain editor truck)
  • "b": this node is assigned an extra buoyancy force (experimental)
nodes
;id,    x,    y,    z,     options
;main chassis
  0, 0.00, 0.75, 0.66
  1, 0.00, 0.75, 1.84
  2, 0.63, 0.75, 0.66
  3, 0.63, 0.36, 0.66,l
  4, 0.63, 0.75, 1.84
  5, 0.63, 0.36, 1.84
  6, 1.48, 0.75, 0.66,l
  7, 1.48, 0.00, 0.66
  8, 1.48, 0.75, 1.84,c
  9, 1.48, 0.00, 1.84,x
 10, 2.33, 0.75, 0.66,y
 11, 2.33, 0.00, 0.66

Fixes

Fixes are nodes that are fixed in place. That means that once put in place in the terrain, they will never move, whatever happens. This is usefull to make fixed scenery elements from beams, like bridges. Just add the node number that you want to fix.

fixes
2
3
12

Beams

This section defines all the beams connecting nodes. Each line describes a beam. The two first parameters are the node number of the two connected nodes. Order has no importance. There is an optional 3rd parameter, composed of a single character. Recognized options are:

  • "i": this beam is invisible. Very usefull to hide "cheating" structural beam, or to improve performances once the truck is textured.
  • "r"; this beam is a rope (opposes no force to compression)
beams
0,1
2,4
3,5,i
6,8,i
7,9
10,12,i
11,13,i

Shocks

Shocks can be seen as tunable beams, usefull for suspensions. Parameters are: the two nodes connected by the shock, the spring factor (the stiffiness), the damp factor (to adjust the amount of rebound: the best value is given by 2*sqrt(suspended mass*spring)), the shortbound and the longbound factors that defines the amount of deformation the shock can support (beyond, it becomes rigid as a standard beam) when shortened and lenghtened, the last parameter is precomp, that allows to compress or depress the suspension (leave it to 1.0 for most cases). You can make the shocks stability-active with optional parameters:

  • "l" to make a left-hand active shock.
  • "r" to make a right-hand active shock.
  • "i" to make the shock invisible (AVAILABLE FROM VERSION 0.29).
shocks
;critical damp=2*sqrt(mass*spring)
;id1, id2, spring, damp, shortbound, longbound, precomp
36,6,  500000,100000, 0.3, 0.3, 1.0
37,8,  500000,100000, 0.3, 0.3, 1.0,l
38,2,  500000,100000, 0.3, 0.3, 1.0,r

Hydros (direction)

The hydros section concerns only the direction actuactors! They are beams that changes of length depending on the direction command. The parameters are two node numbers and a lenghtening factor (negative or positive depending on wether you want to lenghten or shorten when turning left or the contrary)

hydros
43,37,-0.2
45,37,0.2
46,36,0.2
48,36,-0.2

Commands (hydros)

The commands section describes the "real" hydros, those you command with the function keys. They are like beams, but their length varies depending with the function keys you press. The parameters are the two node numbers, a speed rate (how fast the hydro will change length), the shortest length (1.0 is the startup length), the longest length (1.0 is the startup length), the number of the shortening function key and the number of the lengthtening function key (both between 1 and 12). You can have several hydro commanded with the same function keys, or any other combination. You can add the optional flag "i" to make the hydro invisible.

commands
;id1, id2, rate, short, long, keys, keyl
10,91,0.1,1.0, 7,   1, 2, i
12,93,0.1,1.0, 7,   1, 2, i
14,90,0.1,1.0, 7,   1, 2
16,92,0.1,1.0, 7,   1, 2
114,122,0.2,1.0, 19,   3, 4
115,123,0.2,1.0, 19,   3, 4
126,132,0.1,0.1, 1.0,   5, 6

Contacters

The contacters section lists the nodes that may contact with cab triangle. This concerns only contacts with other trucks or loads. You can easily omit this section at first.

contacters
34
18
20
22
24
26
28
30
32

Help

The help section gives the name material used for the help panel on the dashboard. This material must be defined elsewhere in the MaterialFile. This is optional.

help
tracks/semihelp

Ropes

Ropes are special beams that have no compression strength (they can shorten easily) but have standard extension strength, like a cable or a chain. They have also another particularity: the second node can "grab" the nearest reachable ropable node with the 'O' key. Standard use is to use a chassis node as the first node, and a "free" node as the second node (free as in not attached by any other beam). The best example of this are the chains of the multibennes truck.

ropes
;order is important: root->end
116,134
130,136
116,135
130,137

Ties

Ties are also special beams that have no compression strength (they can shorten easily) but have standard extension strength, like a cable or a chain. As the Ropes, they grab the nearest reachable ropable node with the 'O' key. But there is a twist: unlike the ropes, they disappear when not attached (because they have no extremity node at rest) and they automatically shorten until the extension forces reaches a thresold. They are very usefull to solidly strap a load to a chassis. The parameters are the number of the root node (the starting point of the beam), the maximum reach length, the rate of auto-shortening, the shortest length possible, and the last parameter... well... is probably not very usefull and should be kept as 1.0... You can make a tie invisible with the "i" option.

ties
;root, max len, rate, short, long
58, 1.5, 0.5, 0.3, 1.0
62, 1.5, 0.5, 0.3, 1.0
59, 1.5, 0.5, 0.3, 1.0
63, 1.5, 0.5, 0.3, 1.0

Ropables

This section lists the nodes that can be catched by ropes or ties. Good use is to define some ropable nodes at the front and back of the truck to allow towing the truck.

ropables
0
1

Wheels

This section is important, it defines the wheels! The order in which the wheel are declared is important: each consecutive pair of wheel is grouped into an axle. Parameters are:

  • radius (in meter)
  • width (in meter)
  • number of rays
  • the numbers of two existing nodes that defines the wheel axis (the second node must have a larger Y coordinate than the first)
  • the number of a special rigidity node (see explanation about Axle Rigidity) or 9999 if it is not used
  • is the wheel braked (1) or not (0)
  • is the wheel propulsed (1) or not (0)
  • the number of a reference arm node for this wheel. This is where reaction torque is applied to the chassis. Should be on the rotation axis of the suspension arm.
  • mass of the wheel (in kg)
  • spring factor of the wheel : the stiffiness of the wheel
  • damp factor : the reboundiness of the wheel
  • face material and band material (and no quote between them) if you don't know, use "tracks/wheelface" for the face and "tracks/wheelband1" for single wheel or "tracks/wheelband2" for dual mounted wheels.
wheels
;radius,width,numrays,node1,node2,snode,braked,propulsed, arm, mass, spring, damp, facemat bandmat
0.54, 0.40, 12, 35, 36, 9999, 1, 0, 3, 200.0, 800000.0, 4000.0, tracks/wheelface tracks/wheelband1
0.54, 0.40, 12, 37, 38, 9999, 1, 0, 5, 200.0, 800000.0, 4000.0, tracks/wheelface tracks/wheelband1
0.54, 0.80, 12, 39, 40, 41, 1, 1, 25, 400.0, 800000.0, 4000.0, tracks/wheelface tracks/wheelband2
0.54, 0.80, 12, 41, 42, -40, 1, 1, 23, 400.0, 800000.0, 4000.0, tracks/wheelface tracks/wheelband2

Cinecam

This define the position of the in-truck cam. It is a special node suspended to eight chassis nodes. The parameters are the 3 coordinates of the point and the 8 nodes numbers to which it is binded.

cinecam
;x,y,z,bindings
0.66, 2.0, 1.8, 75,76,77,78,73,74,53,54

Flares

This defines where the light flares will be. It is positionned relative to 3 nodes of the chassis. One node is the reference node, and the two others define a base (x,y). So the flare is in the plane defined by the 3 nodes, and is placed relative to the reference node by adding a fraction of the vectors ref->x and ref->y. The three first parameters are the 3 nodes numbers (rex,x,y) and the two next gives what amount of ref->x and ref->y to add to displace the flare point (these two should be logically between 0 and 1, or else that means you use the wrong base triangle and if the body flexes too much the flare will not stick to the body correctly).

flares
;ref,x,y,offsetx,offsety
51,1,79, 0.23, 0.50

Props

This allows you to "stick" any 3D mesh to a triangle of points of a truck. You can use it to stick air intakes, horns, seats, dashboard, bumbers, whatever to the truck (note that there will be no collision detection of these objects). They work the same way as the flares. It is positionned relative to 3 nodes of the chassis. One node is the reference node, and the two others define a base (x,y). So the prop is positionned relative to the plane defined by the 3 nodes, and is placed relative to the reference node by adding a fraction of the vectors ref->x and ref->y. Additionnally, you can displace the prop along the normal to the plane. The three first parameters are the 3 nodes numbers (rex,x,y) and the three next gives what amount of ref->x, ref->y and normal to add to displace the prop (the first two should be logically between 0 and 1, or else that means you use the wrong base triangle and if the body flexes too much the flare will not stick to the body correctly, the third is normalized, in meter). The next 3 parameters are rotation angles to apply to the mesh (in each 3 axis), and the last is the name of an Ogre3D mesh object. Note that meshes with the name beginning with "dashboard", "leftmirror", "rightmirror", "seat", "beacon", "pale" and "spinprop" are reserved as they employ some magic to work. The first "seat" mesh is made translucent, so it should be the driver's seat.

props
;ref,x,y,offsetx,offsety,offsetz,rotx,roty,rotz,mesh
93,95,92, 0.50, 0.37, 0.0, 90, 0, 0, airintake.mesh

Submeshes

This last part defines the most visible part of the truck: the body. It will dress the chassis with solid triangles. You must define each body panel (a continuous almost-flat section) in a different submesh section, in order to have sharp body angles, and to simplify texturing. A submesh has two subsection: the texcoords, that places nodes of the submesh on the texture image (coordinates between 0.0 and 1.0) , and then the cab subsection, that draws the triangles, with triplets of node numbers. The nodes used in the cab subsection must be present in the texcoord subsection. The order in which the three points forming the triangles is given is important, as its winding defines in which direction it will be visible. The winding must be counterclockwise to be visible (IIRC). There is an optional flag to the cab subsection: if you add "c" to the triangle, this triangle will be a contact triangle, that can contact with contacters nodes. mcreed has contributed a cool Texturing Tutorial that describes how to fill the submesh and cab parts of the truck file.

;cabin top
submesh
texcoords
75, 0.172, 0.334
76, 0.172, 0.665
77, 0.291, 0.334
78, 0.291, 0.665
cab
75,76,78
75,78,77

;cabin back
submesh
texcoords
77, 0.291, 0.334
78, 0.291, 0.665
53, 0.422, 0.334
54, 0.422, 0.665
6, 0.422, 0.334
8, 0.422, 0.665
cab
77,78,54
77,54,53
53,54,8,c
53,8,6,c

Wings

This section declares parts of the chassis as wings, and that they should bear aerodynamic forces. Each line of this section designs a wing segment, that is a homogeneous part of a wing. You can (and you should!) make a plane's wing from several contiguous wing segments. Rudder and elevators are also made with one or more wing segments. Each wing segment is bounded by 8 nodes, that defines the "bounding box" of the wing, specifically its span, chord and thickness. You must ensure that these nodes are properly interconnected by beams to ensure the structural integrity of the wing. Notice that it is VERY IMPORTANT to declare contiguous wing segments (i.e. that shares nodes) IN SEQUENTIAL ORDER FROM RIGHT TO LEFT, and you should avoid cutting a wing in two at the fuselage, but make the whole wing continuous across the fuselage because it helps to compute whole-wing effects like induced drag and other things like wing lights. A very important aerodynamic parameter is the wing airfoil. The airfoil is the tear-like shape of the wing, and its exact geometry is very important for the characteristics and performances of real-world wings. RoR uses precomputed performances curves from standard airfoils, interpolated from wing tunnel tests. These curves are stored in .afl files. Standard aifoils provided in RoR are:

  • NACA64.1.412: actual airfoil of the wing tip of the Hercules C-130
  • NACA64.3.618: similar airfoil to the wing root of the Hercules C-130
  • NACA0009: standard symmetrical airfoil, good for rudder and elevators
  • Clark-Y: used for propellers, but is also very popular for main wings

You can get more airfoil from the popular X-Plane flight simulator. RoR is compatible with X-Plane .afl, but you must convert their end-of-line style from MACOS to Windows using an advanced text editor, or RoR will crash.

The wings parameters are:

  • Front left down node number
  • Front right down node number
  • Front left up node number
  • Front right up node number
  • Back left down node number
  • Back right down node number
  • Back left up node number
  • Back right up node number
  • Texture X coordinate of the front left of the wing (in the texture defined in "globals")
  • Texture Y coordinate of the front left of the wing (in the texture defined in "globals")
  • Texture X coordinate of the front right of the wing (in the texture defined in "globals")
  • Texture Y coordinate of the front right of the wing (in the texture defined in "globals")
  • Texture X coordinate of the back left of the wing (in the texture defined in "globals")
  • Texture Y coordinate of the back left of the wing (in the texture defined in "globals")
  • Texture X coordinate of the back right of the wing (in the texture defined in "globals")
  • Texture Y coordinate of the back right of the wing (in the texture defined in "globals")
  • Type of control surface: 'n'=none, 'a'=right aileron, 'b'=left aileron, 'f'=flap, 'e'=elevator, 'r'=rudder
  • Relative chord point at which starts the control surface (between 0.5 and 1.0)
  • Minimum deflection of the control surface, in degree (negative deflection)
  • Maximum deflection of the control surface, in degree (positive deflection)
  • Airfoil file to use
wings
;main wing
28,22,29,23,18,20,19,21, 0.509, 0.999, 0.555, 0.751, 0.752, 0.999, 0.752, 0.751, a, 0.75, -24, 24, NACA64.1.412.afl
26,28,27,29,16,18,17,19, 0.804, 0.711, 0.818, 0.617, 0.999, 0.711, 0.999, 0.617, f, 0.75, -30, 0, NACA64.1.412.afl
90,26,25,27,14,16,15,17, 0.783, 0.844, 0.804, 0.711, 0.999, 0.844, 0.999, 0.711, f, 0.75, -30, 0, NACA64.3.618.afl
 0,90,24,25, 4,14,13,15, 0.764, 0.933, 0.784, 0.844, 0.999, 0.933, 0.999, 0.844, f, 0.75, -30, 0, NACA64.3.618.afl
 2, 0,46,24, 6, 4,12,13, 0.756, 0.999, 0.764, 0.933, 0.999, 0.999, 0.999, 0.933, n, 1.0, 0, 0, NACA0009.afl
44, 2,45,46,30, 6,31,12, 0.783, 0.844, 0.764, 0.933, 0.999, 0.844, 0.999, 0.933, f, 0.75, -30, 0, NACA64.3.618.afl
42,44,43,45,32,30,33,31, 0.804, 0.711, 0.783, 0.844, 0.999, 0.711, 0.999, 0.844, f, 0.75, -30, 0, NACA64.3.618.afl
40,42,41,43,34,32,35,33, 0.818, 0.617, 0.804, 0.711, 0.999, 0.617, 0.999, 0.711, f, 0.75, -30, 0, NACA64.1.412.afl
38,40,39,41,36,34,37,35, 0.555, 0.751, 0.509, 0.999, 0.752, 0.751, 0.752, 0.999, b, 0.75, -24, 24, NACA64.1.412.afl
;rudder
101,107,102,108,103,109,104,110, 0.017, 0.746, 0.087, 0.492, 0.262, 0.746, 0.204, 0.492, r, 0.56, -35, 35, NACA0009.afl
99,101,100,102,105,103,106,104, 0.017, 0.999, 0.132, 0.747, 0.262, 0.999, 0.253, 0.747, n, 1.0, 0, 0, NACA0009.afl
;elevators
144,154,146,155,142,152,105,153, 0.763, 0.457, 0.840, 0.244, 0.999, 0.457, 0.983, 0.244, e, 0.64, -33, 33, NACA0009.afl
145,144,147,146,143,142,106,105, 0.756, 0.999, 0.764, 0.933, 0.999, 0.999, 0.999, 0.933, n, 1.0, 0, 0, NACA0009.afl
150,145,151,147,148,143,149,106, 0.840, 0.244, 0.763, 0.457, 0.983, 0.244, 0.999, 0.457, e, 0.64, -33, 33, NACA0009.afl

Turboprops

The turboprops section defines the turboprop engines, and makes the truck a plane! It is important that this section comes AFTER the props section, becauses it will use props (as in accessories) elements to make props (as in propeller) (does this even make sense?). The props elements used by the turboprop are four pale.mesh (propeller blades) and one spinprop.mesh (translucent rotating disc), all having the same reference node as the turboprop. Easy, eh? Notice that currently turboprop have always 4 blades. Each prop blade is associated to a blade tip node, and you must ensure the blade nodes are correctly interconnected with beams so it will spin freely around its axis, while maintaining a rigid prop disc. See how the Antonov is made. Parameters are:

  • Reference node number (center of the prop)
  • Prop axis node number (back of the prop)
  • Blade 1 tip node number
  • Blade 2 tip node number
  • Blade 3 tip node number
  • Blade 4 tip node number
  • Power of the turbine (in kW)
  • Airfoil of the blades
turboprops
122,173,174,175,176,177, 3000.0, Clark-Y.afl
113,168,169,170,171,172, 3000.0, Clark-Y.afl
116,158,159,160,161,162, 3000.0, Clark-Y.afl
119,163,164,165,166,167, 3000.0, Clark-Y.afl

End

The file MUST TERMINATE by end or it will crash

end
Personal tools