汉化标题:车辆 – 可选部件
原文页面:Cars-–-Optional-parts
原文锚点:03691b4
汉化时间:2026-09-12T00:00:00+08:00
多年来,为车辆制作用户可切换的可选部件的好方法是:添加一个翼片、对应的设置项,以及隐藏该物体的关联动画。虽然如今您可以用 Scene API 之类来切换几何体,我还是觉得翼片是更好的方法:例如,它还能同时改变空气动力学,这对可选车顶之类的部件很有价值。不过有个小问题:动画并不能真正隐藏几何体,所有东西仍会被绘制。为解决这一点,CSP 可以对该方法稍作增强,实现真正的隐藏。
一般来说,您可能什么都不用做,CSP 应该已经能解析大多数动画。在 CSP 日志中搜索 “Looking for optional parts”,它会打印出处理过程。如果看到 “Found”,说明它成功弄清了情况,将自动显示和隐藏物体,从而节省绘制调用等开销。如果您的动画名为 “roof.ksanim”,它甚至还会自动切换雨水遮挡。注意:CSP 要将条目视为隐藏,其缩放应为正常缩放的 5% 或更小,或者距离至少 40 米。
(顺便一提,如果您好奇隐藏几何体的最佳方式是什么,我认为是将缩放设为正常值的 0.1% 或更小。AC 决定绘制一辆车时,会绘制其中的所有内容,所以把物体移到无穷远并不能省下一个绘制调用,但极小的缩放至少意味着 GPU 不必花时间去填充那些像素。)
(不过如今,您可以直接用 CM/Tools/Creator 自动生成高效的动画。)
当然,您也可以显式进行配置。方法如下:
[WING_BASED_SWITCH_…] ; 您知道吗?要让这个自动递增技巧生效,“...” 和 “…” 都可以用。在 UTF8 中它们都是三个字节,所以在代码里正好通用。
WING = 0 ; 从 0 开始的翼片索引
POINT_0 = 0 ; 动画中的点,范围 0.0 到 1.0(要求至少 0.05 的精度)
POINT_0_NODES = node0, node1, … ; 动画处于该点时要显示的节点列表
POINT_1 = …
POINT_1_NODES = …
; 可以按需添加任意多个点,但在 0.05 精度下实际大约只能有 20 个
ALTER_SHAPE = 0 ; 设为 1 可将动画标记为改变形状,或设为 `RAIN_OCCLUSION`,动画便会生成备用的雨水遮挡贴图再多解释一下“改变形状”的含义:CSP 会从上方构建车辆的 2D 深度图,并将其用于各种用途。实际上有两张图:一张在 GPU 上,用于隐藏车内的火花、雨滴之类——这张图更新频繁,并会对车门动画等作出反应;另一张在 CPU 上,用于判断摄像机位于车内还是车外(影响音频、渲染等许多方面)。将 ALTER_SHAPE 设为 1 会强制 CSP 更新其 CPU 车辆高度图,这个过程开销不小,因此默认不开启。而 GPU 上的那张图,无论如何都会在动画移动时自动更新。