物体(Props)是不会发生形变但可以被动画化的网格体(Mesh)。它们非常适用于方向盘、换挡杆、仪表指针、踏板或其他更适合通过动画而非物理模拟来实现的部件。此外,也可用于创建与 glowMap/electrics 绑定的工作车灯。
默认情况下,网格体会位于建模软件中设定的位置,但需要使用基础旋转参数(base rotation argument)将其调整到正确位置。更多信息请参见建模指南 。
每个物体使用由三个节点构成的独立参考系统。这种设计使得当这些节点移动时,物体也随之运动,从而支持碰撞中的动态变化或可动灯光等应用场景。
用于 idRef、idX 和 idY 参数的节点应构成一个直角三角形,类似于参考节点(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 中的灯光主要由两个部分组成:
灯光通常与 glow map 和自发光纹理结合使用,使整个灯具区域看起来都被点亮。
只要灯光所关联函数的值大于 0,灯光即会开启。并且可以将其关联至变形组(deform group)和断裂组(break group),以便在物理灯具受损时禁用灯光。
若使用电控系统 中自定义的数值作为函数输入,灯光可在开启与关闭状态之间通过线性缩放实现渐变过渡。为此提供了专门的参数来调节过渡效果:
(...){"lightScaling":{"brightnessMinInput":0, "brightnessMaxInput":1, "flareScaleMinInput":0.6, "flareScaleMaxInput":1, "lightColorOffsetRed":0,"lightColorOffsetGreen":60, "lightColorOffsetBlue":80}}
不过这些参数通常无需显式定义,因为默认值已能产生逼真的视觉效果。
定义为函数每变化 1 时的旋转角度(单位:度)。
采用内旋欧拉角 -X -Z -Y 旋转系统。
覆盖建模软件中的位置参数。
相对于所定义的轴参考系统。{“x”:0, “y”:0, “z”:0} 将使物体位于 idRef 节点的位置。
覆盖建模软件中的位置参数。
相对于 Jbeam/世界坐标系。{“x”:0, “y”:0, “z”:0} 将使物体位于建模软件坐标系下的 (0, 0, 0) 位置。
px, py, pz 将网格体绕 XYZ 轴旋转 x, y, z 度这些参数仅在 “mesh” 设置为 “SPOTLIGHT” 或 “POINTLIGHT” 时生效。
采用 RGBA 格式。
"lightColor":{"r":255, "g":255, "b":150, "a":255},
"lightAttenuation":{"x":0, "y":1, "z":1}
常用值包括:
其他有效值:
常用值包括:
任何其他灰度图像均可使用,其中白色表示 100% 可见,黑色表示 100% 不可见。
示例用法:
(...){"lightScaling":{"brightnessMinInput":0, "brightnessMaxInput":1, "flareScaleMinInput":0.6, "flareScaleMaxInput":1, "lightColorOffsetRed":0,"lightColorOffsetGreen":60, "lightColorOffsetBlue":80}}
以下是对各参数的说明。所有过渡均采用线性缩放,通常与 glowMap 过渡配合使用。一般情况下无需更改默认值,此时可将字典留空:
(...){"lightScaling":{}}
一组两个仪表指针。
"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"}],
],
这篇文章对你有用吗?