Construction Guide

Construction Guide

From BeamNG

This page will outline some general tips and the basic workflow for creating a structure with nodes and beams.

Where to begin?

It's best to have a 3D model that's well progressed before beginning work on the physics structure. The underbody, suspension, frame, and similar elements should already be modeled.

For the most part, a vehicle's structure will consist of a grid-like latticework of nodes and beams. The spacing of these nodes is a balance between resolution and performance, while also minimizing the distance between nodes (which static objects can pass through). Nodes should be placed to match the mesh - the mesh and structure are in the same coordinate space (and in meters). Equal spacing should be strived for if possible.

For something like a vehicle's floor, it can be easily built with just two congruent grids of nodes, one above the other. First create the beams making the basic shape - that is, the ones making the "grid." Make them in all 3 axes - from side to side, front to back, and vertically. This structure alone won't hold itself up, so the next step is to add the crossing beams. For every rectangle created by 4 nodes and 4 beams, there should be 2 beams crossing the surface to rigidify it. The key to rigidifying any structure is triangulation, so these crossing beams are effectively triangulating it twice. Again, this should be done in all 3 directions. At this point the structure will hold itself up, though it will probably flex more than is desired. At this point, more rigidifying beams can be added. Lengthwise and widthwise, it can be good to connect every other node. So like the main shape beams, but skipping a node.

It's also important to set deform values properly. The main shape beams should be reasonably strong - the structure should bend, not shrink (in most cases). There are situations where it is desirable want the whole thing to just compress, so it varies a lot based on what the goal is. For example, the basic floor of a vehicle (in real life) is made up of several sheets of stamped metal which can crumple quite a lot locally. This is best abstracted with easily deformed beams (since there should not be much macro bending, but more localized crumpling). The crossing beams should be a little weaker than the main shape beams. The extra rigidifying beams should be even weaker.

BeamSpring and beamDamp are both extremely important values (and quite difficult to tune). For a given node weight, there is only so much stiffness that can be taken before the whole system becomes unstable and explodes. So tuning spring and damp values (and weight as well) is a fine balancing act between achieving the right stiffness without overstepping the limits of the simulation and creating an unstable black hole. Generally spring values will range in the millions, while good damp values will be in the hundreds.

Once the floor is built, the next step would be to build things like the firewall, pillars, and roof. Nodes should be placed matching the mesh. It's not always necessary to give these things thickness - take a look at some of the official BeamNG vehicles to see how we've constructed them. The rigidifying beams play a huge role here. These beams basically span the corners of openings to rigidify the structure without "cheating." Always avoid beams that unrealistically span gaps. Instead, work around the corners of a door opening or window opening and use as few beams as possible. A realistically hollow structure will always deform more realistically than one that's filled in with cheating beams. The inside of a car's passenger compartment is empty (other than nonstructural elements like the seats and dashboard) so the physical construction should reflect that.

The same goes for the engine bay, or trunk. Look at the structure of a real vehicle, and only build what's actually there. The inner fenders of most modern unibody cars are quite thin and flimsy, and the engine bay itself is totally hollow.

Suspension

Suspension is a hugely important part of a car, the most difficult to get right, and the most rewarding to build successfully. There are a plethora of suspension setups in real life, all of which can be accurately simulated. Real suspensions are simply interconnected rods with balljoints or hinges, so any geometry can be represented.

Nodes should be placed at all of the various pivot points. These axis point nodes, as they'll be called, should attach to nearby chassis/frame nodes, again using the minimum possible to avoid over-rigidification (compromising the crash behavior). More nodes are needed for things such as the top and bottom of the shock/spring, the upper and lower balljoints, and finally the two axis nodes for the wheel itself. A rigid spindle structure should be formed including these axis nodes, with its camber and toe located by control arms and other components. There will be a more detailed look at various suspension setups and how to construct them in another article. The beams creating the control arms, spindles, etc. should be as stiff as possible. It can be very challenging just to make the suspension components rigid enough to withstand hard cornering without buckling or vibrating.

Note: MacPherson strut suspension is now possible using slide nodes.

Engine and transmission

The engine can be built very simply as just a cube (8 nodes) with rigid beams interconnecting all 8 nodes to each other. Another node can be added to represent the end of the transmission where it would connect to the driveshaft (on a longitudinal rear-wheel drive car).

From there, the engine mounts (which are often quite soft on a real car) can be built, again using minimal beams. A real car's engine has quite a lot of freedom to rock around. Here, support and bounded beams come in handy to prevent clipping and simulate the self collision of the engine block with other parts of the vehicle's structure.

Detaching body panels

Once the main structure of the vehicle is built, it's time to add those detaching body panels. Broken down to its most basic elements, a body panel structure is a grid, with crossing beams and rigidifying beams (much like the floor of the vehicle) but with no thickness. Instead, one floating rigidifying node close to the structure and attached to all of its nodes with easily-deformed beams gives the panel sufficient rigidity without having to use as many nodes. In most cases this node should not be collidable with anything.

The main shape "grid" beams on a body panel should be very strong, since the panel should bend, not shrink.

Once the panel is working by itself as a self-contained rigid structure, it's time to attach it to the car. In most cases there will be two components - a hinge and a latch. For the hinge, two pivot points will need to be used to lock the structure's rotation to one axis. These can be nodes on the panel itself, or on the underlying vehicle structure.

The latch should just be a few beams to neighboring chassis nodes - again, just enough to hold it there rigidly, and not too many.

Support beams are hugely important here. They should be added for just about every possible case of self-collision. Give them a fairly high beamDeform and beamStrength. They should do their job to simulate self-collision, but also still allow the structure to crumple. Care needs to be taken to ensure the support beams do not restrict rotation of the part once the latch has broken. In this case, using beamPrecompression (with a value below 1) to allow some compression for some support beams can be useful.

Beam Strength

A note about beam strength:

Beam physics are not very well suited to ripping/tearing materials. It's best to have infinite beamStrength values in many cases (use "FLT_MAX" instead of a huge number) to avoid unrealistically breaking parts of the structure with strange flopping or giant missing polygons. Breakable beams are great for parts that can detach, but the beams making up the main shape of something should be (nearly) unbreakable in most cases.


See also