物体

物体(Props)是不会发生形变但可以被动画化的网格体(Mesh)。它们非常适用于方向盘、换挡杆、仪表指针、踏板或其他更适合通过动画而非物理模拟来实现的部件。此外,也可用于创建与 glowMap/electrics 绑定的工作车灯。

默认情况下,网格体会位于建模软件中设定的位置,但需要使用基础旋转参数(base rotation argument)将其调整到正确位置。更多信息请参见建模指南

物体坐标轴参考

每个物体使用由三个节点构成的独立参考系统。这种设计使得当这些节点移动时,物体也随之运动,从而支持碰撞中的动态变化或可动灯光等应用场景。

用于 idRefidXidY 参数的节点应构成一个直角三角形,类似于参考节点(refnodes) 的设置方式。这三个节点将形成物体坐标系的 X 轴和 Y 轴,Z 轴则基于前两者自动生成。

例如,Pigeon车型的仪表盘物体使用了节点 “dsh2”、“dsh2r”、“dsh3” 分别作为其参考节点、X 轴节点和 Y 轴节点,其中 dsh2 位于仪表台中心,dsh2r 在其右侧,dsh3 在其下方。

这意味着 Y 轴上的正值会使物体向下移动,而 Z 轴上的正值则会使物体向后移动。

所有平移运动都将基于该坐标系执行,而不是像节点和其他偏移那样使用车辆的整体坐标系。旋转围绕网格体自身坐标系的各轴进行,旋转中心为物体的原点,具体定义详见建模指南

功能与限制

物体 的运动由车辆的电控系统(electrics) 中的某一信号驱动,并结合旋转和平移值来定义。

旋转和平移值表示每当函数值增加 1 时,物体将绕某轴旋转多少度或沿某轴移动多少米。例如,若温度表具有如下旋转参数,则每升高一度温度,指针将绕 X 轴旋转 1 度:

{"x":5, "y":0, "z":0}

可通过将电控信号的有效范围除以指针最小与最大位置之间的角度差,计算出旋转角度系数。

最小值(min)和最大值(max)用于限制 物体 的运动范围。例如,模拟许多汽车仪表上常见的“限位钉”,防止指针超出特定范围。这些值是依据函数值定义的,而非直接的角度或位移量。

偏移值(offset)的作用类似于 min 和 max,为仪表添加一个静态因子,用于补偿零点不在指针初始位置的情况。

倍增器(multiplier)作用正如其名,但在实际应用中很少使用,通常通过调整旋转和平移值来实现相同效果。

以 D系列 的转速表为例: 其扫过角度为 180 度,对应范围为 6000rpm,因此旋转函数为:180 / 6000 = 每 rpm 0.03 度。由于指针顺时针转动,我们使用负值。

为了避免转速超过 6000rpm,max 设置为 6000,min 设置为 0。对于温度表,min 和 max 可能设为 60 和 120 这类数值。在此例中,若 offset 为 0 时指针指向 4000,则 offset 应设为 -4000 才能使指针正确归零。如果指针未与仪表盘平面完全对齐,则可通过 baseRotation 参数旋转 物体 及其旋转轴。

(...)"baseRotation",           "rotation",                 "translation",       "min", "max", "offset", "multiplier"
(...){"x":160 "y":180, "z":0}, {"x":0, "y":0, "z":-0.03}, {"x":0, "y":0, "z":0}, 0,     6000, -4000,     1

灯光

BeamNG 中的灯光主要由两个部分组成:

  1. 光晕(Flare):定义为发射源处的一个发光球体,代表灯泡本身。
  2. 投射纹理(Cookie):表示光线“光束”在表面反射的效果图案。

灯光通常与 glow map 和自发光纹理结合使用,使整个灯具区域看起来都被点亮。

只要灯光所关联函数的值大于 0,灯光即会开启。并且可以将其关联至变形组(deform group)和断裂组(break group),以便在物理灯具受损时禁用灯光。

若使用电控系统 中自定义的数值作为函数输入,灯光可在开启与关闭状态之间通过线性缩放实现渐变过渡。为此提供了专门的参数来调节过渡效果:

(...){"lightScaling":{"brightnessMinInput":0, "brightnessMaxInput":1, "flareScaleMinInput":0.6, "flareScaleMaxInput":1, "lightColorOffsetRed":0,"lightColorOffsetGreen":60, "lightColorOffsetBlue":80}}

不过这些参数通常无需显式定义,因为默认值已能产生逼真的视觉效果。

必要参数

string
type
定义驱动此物体的电控信号

更多详情请参阅电控系统页面

对于灯光而言,只要函数值大于 0,灯光就会开启。

如果想让物体不被动画化,请使用 “nop” 作为始终返回 0 的函数。

string
type
用于此物体的网格体名称
string
type
用于定位此物体的参考节点
string
type
X 轴参考节点
string
type
Y 轴参考节点
dictionary
type
{“x”:0, “y”:0, “z”:0}
default
物体围绕各轴的旋转量

定义为函数每变化 1 时的旋转角度(单位:度)。

采用内旋欧拉角 -X -Z -Y 旋转系统。

dictionary
type
{“x”:0, “y”:0, “z”:0}
default
物体沿各轴的平移量
表示函数值每变化 1 所引起的位移距离(单位:米)。

可选参数

dictionary
type
{“x”:0, “y”:0, “z”:0}
default
物体的初始平移量(非聚光灯单位为米;聚光灯 X 和 Y 为 xnorm 单位,Z 为米)

覆盖建模软件中的位置参数。

相对于所定义的轴参考系统。{“x”:0, “y”:0, “z”:0} 将使物体位于 idRef 节点的位置。

dictionary
type
{“x”:0, “y”:0, “z”:0}
default
物体在 JBeam/世界空间中的初始平移量(单位:米)

覆盖建模软件中的位置参数。

相对于 Jbeam/世界坐标系。{“x”:0, “y”:0, “z”:0} 将使物体位于建模软件坐标系下的 (0, 0, 0) 位置。

dictionary
type
{“x”:0, “y”:0, “z”:0}
default
与 baseTranslationGlobal 相同,但允许物体在参考节点拉伸或压缩时保持一定的比例距离
dictionary
type
{“x”:0, “y”:0, “z”:0}
default
与 baseTranslationGlobal 相同,但物体固定在距参考节点一定距离的位置
dictionary
type
{“x”:0, “y”:0, “z”:0}
default
初始旋转角度(单位:度)
采用内旋欧拉角 -X -Z +Y 旋转系统。
dictionary
type
{“x”:0, “y”:0, “z”:0}
default
物体在JBeam/世界空间中的初始旋转角度(单位:度)
采用内旋欧拉角 +Y +Z +X 旋转系统。
number
type
0.0
default
函数使用的最小值
number
type
100
default
函数使用的最大值
number
type
0.0
default
偏移值
number
type
1.0
default
输入值的倍乘系数
string
type
激活后将禁用此物体的变形组名称
主要用于灯光,在灯具破损时禁用。
string
type
激活后将禁用此物体的断裂组名称
主要用于灯光,在灯具断裂时禁用。
boolean
type
false
default
当物体的一个或多个节点未找到时禁用错误提示
对于传动轴这类一端旋转轴位于独立组件中的情况特别有用。
dictionary
type
{“x”:0, “y”:0, “z”:0}
default
在 YZ 轴上偏移网格体,并在 X 轴上以镜像方式偏移(若位置未居中)(单位:米)
此参数从不直接在 Props 段落中设置,而是由插槽(Slots) 段落传递而来。
dictionary
type
{“x”:0, “y”:0, “z”:0}
default
在 XYZ 轴上偏移网格体(单位:米)
此参数从不直接在 Props 段落中设置,而是由插槽(Slots) 段落传递而来。
dictionary
type
{“x”:0, “y”:0, “z”:0, “px”:0, “py”:0, “pz”:0}
default
围绕中心点 px, py, pz 将网格体绕 XYZ 轴旋转 x, y, z
此参数从不直接在 Props 段落中设置,而是由插槽(Slots) 段落传递而来。
boolean
type
false
default
是否忽略 nodeOffset 修改器对网格体位置的影响

可选参数(仅限灯光)

这些参数仅在 “mesh” 设置为 “SPOTLIGHT” 或 “POINTLIGHT” 时生效。

number
type
40
default
亮度达到最大的角度(单位:度)
number
type
45
default
光束外边缘角度(单位:度)
亮度从内角开始逐渐降低直至外角。
number
type
1.0
default
光束的亮度强度
number
type
10
default
光线仍能被反射的距离(单位:米)
dictionary
type
{“r”:0, “g”:0, “b”:0, “a”:0}
default
光晕及发射光的颜色

采用 RGBA 格式。

"lightColor":{"r":255, "g":255, "b":150, "a":255},
dictionary
type
{“x”:0, “y”:1, “z”:1}
default
光在各个方向上的衰减速度
"lightAttenuation":{"x":0, "y":1, "z":1}
boolean
type
false
default
灯光是否对其照射到的物体投射阴影
启用此功能会增加 GPU 负担,建议仅用于前大灯和其他主要照明光源。转向灯和尾灯无需启用。
string
type
vehicleDefaultLightflare
default
要使用的光晕名称

常用值包括:

  • “vehicleDefaultLightflare”
  • “vehicleBrakeLightFlare”
  • “vehicleHeadLightFlare”
  • “vehicleReverseLightFlare”

其他有效值:

  • “BNG_LightFlare_1”
  • “BNG_SpokeFlare_1”
  • “BNG_Sunflare_1”
  • “BNG_Sunflare_2”
  • “BNG_Sunflare_3”
  • “LightningLightAnim”
number
type
1.0
default
光晕的尺寸因子
string
type
指定反射光形状和纹理的图像文件路径

常用值包括:

  • “/art/special/BNG_light_cookie_headlight.dds”
  • “/art/special/BNG_light_cookie_lightbar.dds”
  • “/art/special/BNG_light_cookie_underglow.dds”

任何其他灰度图像均可使用,其中白色表示 100% 可见,黑色表示 100% 不可见。

number
type
256
default
光线反射的分辨率(像素)
提高该值可使效果更平滑,但会增加 GPU 负担。
number
type
1.0
default
定义阴影边缘的柔和程度
dictionary
type
包含一些用于材质过渡的额外选项

示例用法:

(...){"lightScaling":{"brightnessMinInput":0, "brightnessMaxInput":1, "flareScaleMinInput":0.6, "flareScaleMaxInput":1, "lightColorOffsetRed":0,"lightColorOffsetGreen":60, "lightColorOffsetBlue":80}}

以下是对各参数的说明。所有过渡均采用线性缩放,通常与 glowMap 过渡配合使用。一般情况下无需更改默认值,此时可将字典留空:

(...){"lightScaling":{}}

LightScaling参数

number
type
0.0
default
在材质过渡过程中,当函数值为此值时,lightBrightness 为 0
number
type
1.0
default
在材质过渡过程中,当函数值为此值时,lightBrightness 达到其默认值
number
type
0.6
default
在材质过渡过程中,当函数值为此值时,flareScale 为 0
number
type
1.0
default
在材质过渡过程中,当函数值为此值时,flareScale 达到其默认值
number
type
0
default
在材质过渡过程中,当函数值趋近于 0 时,从红色通道减去的数值
number
type
60
default
在材质过渡过程中,当函数值趋近于 0 时,从绿色通道减去的数值
number
type
80
default
在材质过渡过程中,当函数值趋近于 0 时,从蓝色通道减去的数值

简易示例

一组两个仪表指针。

"props": [
    ["func", "mesh", "idRef:", "idX:", "idY:", "baseRotation", "rotation", "translation", "min", "max", "offset", "multiplier"]
    //指针
    ["wheelspeed", "needle_speedo", "f7r","f7l","f8r", {"x":5, "y":0, "z":0},
    {"x":0, "y":0, "z":-4}, {"x":0, "y":0, "z":0}, 0, 54, -27, 1],

    ["rpm", "needle_tacho", "f7r","f7l","f8r", {"x":5, "y":0, "z":0},
    {"x":0, "y":0, "z":-0.038}, {"x":0, "y":0, "z":0}, 0, 6000, -2900, 1],
],

一个方向盘 物体

"props": [
    ["func", "mesh", "idRef:", "idX:", "idY:", "baseRotation", "rotation", "translation", "min", "max", "offset", "multiplier"]
    //方向盘
    ["steering", "steer_04a", "f1l","f1r","f6l", {"x":-78, "y":0, "z":180}, {"x":0, "y":0, "z":1}, {"x":0, "y":0, "z":0},
    -1000, 1000, 0, 1, {"baseTranslation":{"x":-0.070,"y":0.605,"z":-0.56}, "breakGroup":"steeringWheelBreak"}],
 ],

进阶示例

一组用于踏板及其他驾驶控制装置的内饰 Props。

"props": [
    ["func", "mesh", "idRef:", "idX:", "idY:", "baseRotation", "rotation", "translation", "min", "max", "offset", "multiplier"]
    //踏板
    ["brake", "pedal_brake", "b1l","b1r","b5l", {"x":0, "y":0, "z":180},
    {"x":-25, "y":0, "z":0}, {"x":0.0, "y":0, "z":0}, 0, 1, 0, 1],

    ["throttle", "pedal_gas", "b1l","b1r","b5l", {"x":0, "y":0, "z":180},
    {"x":-25, "y":0, "z":0}, {"x":0.0, "y":0, "z":0}, 0, 1, 0, 1],

    ["parkingbrake", "pedal_parkingbrake", "b1l","b1r","b5l", {"x":0, "y":0, "z":180},
    {"x":-25, "y":0, "z":0}, {"x":0.0, "y":0, "z":0}, 0, 1, 0, 1],
    //转向信号拨杆
    ["turnsignal", "signalstalk", "dsh","dshl","dsh2", {"x":27 "y":180, "z":175},
    {"x":0, "y":-15, "z":-2}, {"x":0, "y":0, "z":0}, -1, 1, -1, 1],
],

一个包含远光灯和近光灯的单个前大灯。

"props": [
    ["func", "mesh", "idRef:", "idX:", "idY:", "baseRotation", "rotation", "translation", "min", "max", "offset", "multiplier"]
    {
        "lightInnerAngle":0,
        "lightOuterAngle":120,
        "lightColor":{"r":255, "g":255, "b":170, "a":255},
        "lightAttenuation":{"x":0, "y":1, "z":1},
        "lightCastShadows":true,
        "flareName":"vehicleHeadLightFlare",
        "cookieName":"art/special/BNG_light_cookie_headlight.dds"
        "texSize":512,
        "shadowSoftness":0.5,
    },
    //近光灯略微向右倾斜,以避免眩目对向车辆
    ["lowbeam", "SPOTLIGHT", "fa2rr", "fa2r", "fa1rr", {"x":180, "y":0, "z":10}, {"x":0, "y":0, "z":0}, {"x":0, "y":0, "z":0},
    0, 0, 0, 1, {"baseTranslation":{"x":0.3, "y":0.75, "z":0.3},
    "lightRange":50,"lightBrightness":0.3,"lightOuterAngle":95,"flareScale":0.07,"deformGroup":"headlightglass_R_break"}],
    //远光灯
    ["highbeam", "SPOTLIGHT", "fa2rr", "fa2r", "fa1rr", {"x":180, "y":0, "z":10}, {"x":0, "y":0, "z":0}, {"x":0, "y":0, "z":0},
    0, 0, 0, 1, {"baseTranslation":{"x":0.3, "y":0.3, "z":0.3},
    "lightRange":80,"lightBrightness":0.6,"lightOuterAngle":80,"flareScale":0.09,"deformGroup":"headlightglass_R_break"}],
],
上一次修订: 五月 20, 2026

还有其他问题?

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