Nodes

../../_images/NodeBeamInfo.png

A node itself is a dimensionless mass point in space. In the physics engine, nodes are connecting points for any number of beams or triangles. They can have collision and friction against vehicle triangles, the terrain, and collidable static objects. Nodes are affected by the sum of forces from beams, triangles, friction, and collision, but since they have only a position, not a rotation, they do not sum any moments. Each node can be thought of as a “hinge” free in all axes. The rigidity of a structure comes from building “truss” or “lattice” structures of beams between nodes.

Nodes are entered inside of a “nodes” section within a part. The required arguments are found in the section header entry. Each node is given a unique name string for easier identification and assignment of connecting beams and triangles. The starting position in space is given with respect to the vehicle origin.

Nodes also have optional arguments which can be placed above or inside each entry.

Nodes can be visualized using the vehicle debug options menu (make sure to enable advanced functions in the options/user interface menu) or by pressing CTRL+N and CTRL+M to cycle visualization modes.

Arguments

Name Type Required/Default Range Description
id String Required na The node name
posX Float Required R The X (+ left) spawning position
posY Float Required R The Y (+ back) spawning position
posZ Float Required R The Z (+ up) spawning position
nodeWeight Float 25 >0 The weight of the node in kg
collision Bool TRUE na If the node can collide with the world and other vehicles
selfCollision Bool FALSE na If the node can collide with its own vehicle triangles
group String nil na Used to name a selection of nodes (for flexbody assignments)
frictionCoef Float 1 >=0 Overall multiplier of groundmodel static friction coef
slidingFrictionCoef Float 1 >=0 Overall multiplier of groundmodel sliding friction coef
treadCoef Float 0.5 0-1 Overall multiplier of groundmodel roughnessCoefficient
softness Float 0 0-1 Adds hysteritic effects to friction (more “sticky”)
loadSensitivitySlope Float 0 >=0 Rate that friction coef reduces proportional to normal force
noLoadCoef Float 1 >=0 Maximum friction coef (when normal force is 0)
fullLoadCoef Float 0 <=noLoadCoef Minimum friction coef (when normal force is high)
nodeMaterial String 0 na Material of the node (affects collision particles and sound)
fixed Bool FALSE na If the node is fixed in space
pairedNode String nil na This can be used to i.e. link double tires together

Generated Arguments

  • cid
  • creator
  • name
  • type
  • pairedNode

Simple Example

"nodes" :[
   ["id", "posX", "posY", "posZ"],
   ["n1rr", -0.90, -0.93, 0.23],
],

Advanced Example

"nodes" :[
  ["id", "posX", "posY", "posZ"],
  {"nodeMaterial":"|NM_METAL"},
  {"frictionCoef":0.7},
  {"selfCollision":false},
  {"collision" :true},
  {"nodeWeight":12.5},
  {"group":"body"},
  ["n1rr", -0.90, -0.93, 0.23],
  //example of assigning entries below to multiple groups
  {"group":["body","roof"]},
  ["n1r", -0.33, -0.95, 0.23],
  //example of assigning an argument in-line (effects only that entry)
  ["n1l", 0.33, -0.95, 0.23,{"selfCollision":true}],
  //example of closing an argument
  {"group":""},
  ["n1ll", 0.90, -0.93, 0.23],
],