JBeam 简介

与大多数采用“ 刚体(Rigid-body)”物理模拟的游戏不同,BeamNG 是一个“软体(Soft-body)”物理模拟器。这意味着物体(如汽车)是可变形的。

这种变形效果是通过“节点(Node)与梁(Beam)”结构实现的。你可以把它类比为骨架,或者像是2000年代初流行的磁力积木玩具。

以上面的图片为例,这些结构由以下部分组成:

节点(银色小球)

节点可以被看作是粒子,每个节点都有质量,并且可以在空间中自由移动。

梁(蓝色棍子)

梁将节点固定在一个结构中。梁本身没有质量,并且每一端总是连接着一个节点。它们的行为类似于弹簧(后面会详细介绍)。
梁可以围绕节点自由旋转,只负责保持两个节点之间的固定距离。
其他力(比如扭转力)不会通过梁传递,并且梁本身也无法弯曲。

在构建“节点-梁”结构时,需要注意的是,如果一个盒子没有加上对角支撑(斜撑),它很容易倒塌,因为梁可以绕节点转动。为四边添加斜向支撑会让盒子成为一个刚性的结构。

只要有足够的节点和梁,就可以构建出像汽车这样复杂的结构;“节点-梁” 结构可以用来模拟底盘、悬架、轮子以及许多其他部件。

节点-梁结构的基本属性

BeamSpring(弹簧刚度)

BeamSpring值定义了弹簧有多“硬”,表示把弹簧压缩一定距离所需的力的大小。

较高的值通常用来表示像底盘这样较为刚性的结构,而较低的值则用于像弹簧或橡胶这类不太刚性的结构或材料。

弹簧刚度/硬度不要与形变混淆。弹簧值较低的梁容易被压缩,但这属于弹性形变——意味着压缩后它会恢复到原始长度。而形变值较低的梁则会被压缩后无法恢复原状,即发生永久变形。

左侧:软弹簧 | 右侧:硬弹簧

BeamDamp(阻尼)

阻尼是对运动的阻力。

在没有摩擦的真空中,如果弹簧没有阻尼,它会无限地振荡下去。为了避免这种情况,我们需要加入一定的阻尼,这种阻尼会以与速度成反比的力来抵抗运动。

阻尼的主要作用是防止振荡,同时还可以吸收一部分由形变产生的能量,从而减弱反弹的力度。

在现实生活中,大多数物体(包括弹簧)都会至少有一些内在的阻尼。

左侧:无阻尼 | 右侧:有阻尼

弹簧和阻尼的典型数值

{"beamSpring":40000,"beamDamp":0}, //Suspension springs
{"beamSpring":0,"beamDamp":4500}, //Suspension dampers
{"beamSpring":8000000,"beamDamp":125}, //Structural vehicle components, such as suspension arms
{"beamSpring":14001000,"beamDamp":250}, //Steering rack, it needs to be super stiff to keep wheels pointing in the right direction

Beam Deform(梁的形变)

Beam deform(梁的形变)决定了一根梁在永久变形前所需承受的力值。一旦发生形变,梁将无法恢复到原来的形状。这一点对于实现车辆的真实变形至关重要。

左侧:低形变值(5000)| 右侧:几乎无限大的形变值

Beam Strength(梁强度)

Beam strength(梁强度)表示一根梁被拉断所需的力。一旦梁断裂,它们会像被折断一样失去连接,这意味着它已不再连接两个节点。通过合理设置梁的强度,可以让部件脱落。例如,通过让连接保险杠与车身的梁容易断裂,就能让保险杠在碰撞时掉落。

如下图所示,梁断裂后,车辆的可见网格也会被破坏。

左侧:低强度 | 右侧:高强度

Node Weight(节点质量)

Node weight(节点质量)可以用来调整车辆每个节点的重量。

然而,如果与该节点相连的所有梁的刚性过高,节点就会开始振动,甚至发生爆裂。为防止这种振动,需要增加节点的重量,或降低梁的刚度。更复杂的是:如果 beamDamp(阻尼)设置过高,梁同样也会开始振动甚至爆裂。

左侧:低节点重量(6kg)| 右侧:合适节点重量(7kg)

下图展示了节点质量对车辆的影响,红色梁连接的4个节点的重量被改变。

可以看到,右侧车辆因拥有合适的节点质量而十分稳定,而左侧车辆则因节点质量不足而剧烈振动。

上一次修订: 五月 16, 2026

还有其他问题?

加入我们的 Discord 服务器
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.