入门快速入门
快速入门
本指南为 Chaos 车辆添加凹陷、漆面磨损和污垢。你需要将三个材质函数连接到车身和车轮的材质中,再为车辆添加一个组件。无需编写代码。
你需要:
- 已安装插件。参见安装。
- 基于
AWheeledVehiclePawn并带有UChaosWheeledVehicleMovementComponent的 Pawn。 - 车轮是位于车轮骨骼上的网格体组件。只是一根骨骼的车轮不会产生轮胎形变,也不会有车轮污垢。
- 尚未做过上述任何设置的车辆:没有 Crushform 适配器,也没有连接材质。
- Unreal Engine 5.6、5.7 或 5.8。
本指南中的截图展示的是插件的轿车 BP_VehicleAdvSedan,它是从零开始逐步设置的。请在你自己的车辆上按步骤操作。完成后的轿车位于插件的 /Crushform/Blueprints/Sedan/BP_VehicleAdvSedan,可供对照。
1. 连接车身材质
Section titled “1. 连接车身材质”- 打开漆面的母材质,即其材质实例的父级。
Param (0,0,0,0)'Color'
R
G
B
A
Param (0.35)'Roughness'
Param (0)'Metallic'
M_BodyPaint
Base Color
Metallic
Specular
Roughness
Anisotropy
Emissive Color
Normal
Tangent
World Position Offset
Ambient Occlusion
Pixel Depth Offset
- 添加
MF_CF_Deform和MF_CF_Paint。在图表上右键,分别搜索这两个名称。 - 在连接任何内容之前,请检查你的材质:
- 你自己的 World Position Offset 保持不变。用一个 Add 节点将它与
MF_CF_Deform的 World Position Offset 相加,然后把和接到材质的 World Position Offset。 - 法线贴图或其他法线来源接到
MF_CF_Deform的 Normal 输入,而不是接到材质上。 - 使用 Material Attributes 的材质通过 Break Material Attributes 和 Set Material Attributes 节点连接。Break Material Attributes 的输出接到两个函数的输入以及 Add 节点。
MF_CF_Deform的输出(Normal,以及偏移之和)和MF_CF_Paint的输出(Base Color、Roughness、Metallic)接到 Set Material Attributes 的对应引脚,再由它输入到材质中。 - 材质必须使用 Tangent Space Normal。世界空间的法线无法连接。
- 与车身共用网格体的玻璃和内饰部件只获得
MF_CF_Deform。它们随车身一起凹陷,并保留自己的外观。 - 每个应当弯曲的网格体的每个材质都需要这样连接。相对车身会移动的部件,例如车门和方向盘,应放入配置文件的 Exclude Tags。
- 一个材质最多使用两个参数集合。
MF_CF_Paint占用其中一个,因此已经使用两个集合的材质连接后将无法编译。 - 每个使用已连接函数的材质都要承担顶点运算的开销,无论它是否凹陷。
- 你自己的 World Position Offset 保持不变。用一个 Add 节点将它与
- 完成以下十个连接,每行一个。Scratch 这一行是可选的:没有它,漆面照常磨损,但刮擦不会画出划痕线。先记下目前接到材质的 Base Color、Roughness 和 Metallic 上的是什么。
| 从 | 到 |
|---|---|
| 你的基础颜色 | MF_CF_Paint 的 Base Color |
| 你的粗糙度 | MF_CF_Paint 的 Roughness |
| 你的金属度 | MF_CF_Paint 的 Metallic |
MF_CF_Deform 的 Wear Depth | MF_CF_Paint 的 Wear Depth |
MF_CF_Deform 的 Scratch | MF_CF_Paint 的 Scratch |
MF_CF_Paint 的 Base Color | 材质的 Base Color |
MF_CF_Paint 的 Roughness | 材质的 Roughness |
MF_CF_Paint 的 Metallic | 材质的 Metallic |
MF_CF_Deform 的 World Position Offset | 材质的 World Position Offset |
MF_CF_Deform 的 Normal | 材质的 Normal |
- 在材质的 Details 中,于 Usage 下,如果车身是骨骼网格体,请开启 Used with Skeletal Mesh。
- 在材质的 Details 中,将 World Position Offset 类别下的 Max World Position Offset Displacement 设为车辆所用配置文件的 Max Displacement,再加上
MF_CF_Deform的 Fold Amplitude 输入。褶皱幅度默认为 3 cm。如果材质已经有自己的边界,则将同样的和加到该边界上。 - 点击 Apply,然后点击 Save。
Param (0,0,0,0)'Color'
R
G
B
A
Param (0.35)'Roughness'
Param (0)'Metallic'
MF_CF_Paint
Base ColorBase Color
RoughnessRoughness
MetallicMetallic
Wear Depth
Primer Color
Metal Color
Scratch Tiling
Dust Color
Mud Color
Dirt Strength
Snow Color
Built-in Look
Scratch
Scratch Line Tiling
MF_CF_Deform
NormalWorld Position Offset
Crumple TilingNormal
Fold AmplitudeWear Depth
Fold WavelengthScratch
Fine Fold Wavelength
Fine Fold Strength
M_BodyPaint
Base Color
Metallic
Specular
Roughness
Anisotropy
Emissive Color
Normal
Tangent
World Position Offset
Ambient Occlusion
Pixel Depth Offset
2. 连接车轮材质
Section titled “2. 连接车轮材质”- 打开车轮材质。将
MF_CF_WheelDirt放在车轮颜色与 Base Color、Roughness、Metallic 之间。车轮的颜色、粗糙度和金属度分别接到同名的输入,它的三个输出驱动这三个属性。 - 不要把
MF_CF_Deform或MF_CF_Paint加到车轮材质中。车轮的自定义基元数据保存的是车轮自己的污垢,而不是车身的凹陷数据。 - 轮胎鼓起是一个单独的函数
MF_CF_TireDeform,它的连接不属于本指南的内容。在轮胎材质中保持 Always Evaluate WPO 关闭。 - 插件的现成示例是
M_CF_Wheel。打开它可以对照。
Param (0,0,0,0)'Color'
R
G
B
A
Param (0.5)'Roughness'
Param (0)'Metallic'
MF_CF_WheelDirt
Base ColorBase Color
RoughnessRoughness
MetallicMetallic
Dust Color
Mud Color
Dirt Strength
Snow Color
Built-in Look
M_WheelMaterial
Base Color
Metallic
Specular
Roughness
Anisotropy
Emissive Color
Normal
Tangent
World Position Offset
Ambient Occlusion
Pixel Depth Offset
3. 添加适配器
Section titled “3. 添加适配器”- 打开车辆的蓝图。点击 Add,选择 Crushform Chaos Vehicle Adapter。它位于 Crushform 类别中。不要选 Crushform Vehicle Adapter:那个需要你手动列出车轮。
- 点击 Compile,然后点击 Save。
-
适配器会在每个端上用固定名称创建它的组件。每个组件都有自己的开关:
CF_Deform制作车身的凹陷和污垢。它需要 Dirt and Dents。CF_Glass制作玻璃板。它需要 Glass 和 Dirt and Dents。CF_Tires制作轮胎形变。它需要 Tires。CF_RollingAudio和CF_RollingFX制作滚动声音和滚动 FX。它们需要 Rolling Sound 和 Rolling FX。CF_EngineAudio制作发动机声音。它需要 Engine Sound,以及项目设置中 Crushform Engine 下的发动机声音设置。CF_PropContact破坏道具。它需要 Breaks Props。CF_ImpactFeedback播放撞击声音和特效。它需要 Impact Feedback。CF_PartImpactFeedback对铰接部件做同样的事,并且还需要 Dirt and Dents。
适配器从移动组件中读取车轮,因此你无需列出它们。
-
留空的 Deform Profile 会取项目设置中的默认值,位于 Plugins › Crushform 下的 Default Profile(
DA_CF_DefaultProfile)。留空的 Tire Profile 会取项目设置中的默认值,位于 Plugins › Crushform Tire 下的 Default Profile。
| Crushform | ||
|---|---|---|
| Authority | ||
| Deform Profile | DA_CF_DefaultProfile | |
| Tire Profile | DA_CF_DefaultTireProfile | |
| Ram Allowance Mps | 15.0 m/s | |
| Features | ||
| Dirt and Dents | ||
| Glass | ||
| Tires | ||
| Rolling Sound | ||
| Rolling FX | ||
| Engine Sound | ||
| Impact Feedback | ||
| Breaks Props | ||
4. 为地面指定路面
Section titled “4. 为地面指定路面”- 污垢、滚动声音和滚动 FX 都来自地面的物理材质。将地面材质的 Phys Material 设为插件的七种材质之一:
PM_CF_Asphalt、PM_CF_Dirt、PM_CF_Grass、PM_CF_Mud、PM_CF_Swamp、PM_CF_Snow或PM_CF_Water。 - 在 Surfaces 表(
DA_CF_Surfaces)中没有对应行的物理材质会使用Default行。你可以为自己的物理材质添加行。 - 滚动声音通过项目设置中 Plugins › Crushform Wheels 下的 Attenuation 播放。默认为
SA_CF_TireRolling。如果将它清空,滚动声音将保持关闭。
5. 驾驶与撞击
Section titled “5. 驾驶与撞击”- 按 Play,然后将车辆开进墙壁或栅栏。Proving Ground 演示中有可供测试的栅栏。
- 驶过
PM_CF_Mud路面的泥浆。车轮和车身下部会变脏。
这些设置位于适配器上。Chaos 适配器继承了 UCFVehicleAdapterComponent 的这些设置。
| 属性 | 作用 |
|---|---|
UCFVehicleAdapterComponent::DeformProfile | 车身的凹陷和污垢。为空时:使用项目的默认配置文件。 |
UCFVehicleAdapterComponent::TireProfile | 轮胎。为空时:使用项目的默认轮胎配置文件。 |
UCFVehicleAdapterComponent::Authority | Server(默认):服务器模拟车辆并判定其命中。Owning Client:驾驶车辆的端模拟它并上报其命中,服务器再对这些上报做校验。 |
UCFVehicleAdapterComponent::bDirtAndDents | 车身凹陷并沾上污垢。玻璃板和车轮的污垢需要它。 |
UCFVehicleAdapterComponent::bGlass | 车辆上的玻璃板会开裂并破碎。需要 Dirt and Dents。 |
UCFVehicleAdapterComponent::bTires | 轮胎在车轮网格体上发生形变。 |
UCFVehicleAdapterComponent::bRollingSound | 每个车轮播放其所在路面的滚动声音。仅用于呈现:在专用服务器上无声。 |
UCFVehicleAdapterComponent::bRollingFX | 每个车轮显示其所在路面的滚动 FX。仅用于呈现。 |
UCFVehicleAdapterComponent::bEngineSound | 发动机播放其声音。仅用于呈现。还需要 Crushform Engine 中的发动机声音设置。 |
UCFVehicleAdapterComponent::bImpactFeedback | 命中会在每个端上播放撞击声音和特效。 |
UCFVehicleAdapterComponent::bBreaksProps | 车辆会破坏它驶入的可破坏道具。 |
检查是否正常工作
Section titled “检查是否正常工作”- 用波浪号键(~)打开控制台,运行
Crushform.Stats。车辆会出现在列表中,并带有它的hits计数器。各行的格式如下。每行车辆信息都以 Actor 的名称开头,然后说明本机持有的是晶格还是晶格的视图:
Crushform atlas: N of M slots used, N waiting, N evictions, N uploads.Actor name: server lattice or client view, generation N, N pending, N chunks | hits N, sent N, accepted N, rejected N, ...- 运行
Crushform.DebugImpact 15,后面跟上关卡中另一辆带有 Crushform 的车辆名称的一部分。名称放在速度之后。它会从你所站的位置,以 15 m/s 的速度变化量撞击该车辆,距离最远 100 m,无需驾驶即可使其凹陷。如果不带名称,它会命中准星下的可受损 Actor。它从不命中你控制的 Pawn,因此请按第 5 步驾车撞墙来检查你自己的车辆。 - 运行
Crushform.Debug 1。它会绘制车身凹陷的晶格节点。 - 驶过
PM_CF_Mud路面。车轮和车身下部会变脏。 - 这些命令在编辑器以及除 Shipping 之外的所有构建中都可用。在 Shipping 构建中,它们会被编译掉。
- 没有任何凹陷:检查第 1 步中的连接,并检查配置文件的 Exclude Tags 是否隐藏了车身网格体。
- 车轮保持干净:车轮必须是位于车轮骨骼上的网格体组件。
- 地面没有污垢或滚动声音:它的 Phys Material 必须是插件的材质之一,或者在 Surfaces 表中有对应的行。
- 材质无法编译:检查第 1 步中两个集合的限制。
更多情况参见故障排除。


