跳转到内容
CRUSHFORMV1.1.0
在 Fab 上获取

集成配置文件与预设

配置文件与预设

配置文件是一种数据资产,为某一类车身调节某个系统:车辆如何凹陷、轮胎如何形变、发动机如何发声。插件从拥有该系统的组件中读取它,因此一个项目可以同时运行多个配置文件。本页列出配置文件类、每个类应放置的位置、插件在 Presets 文件夹 /Crushform/Presets 中提供的预设,以及“预设”一词在插件中的其他含义。

本页没有蓝图图表。配置文件在游戏开始前通过类默认值或 C++ 设置,没有任何蓝图函数可以在组件上设置它:UCFDeformComponent::Profile 为 BlueprintReadOnly,UCFTireComponent::SetProfile 仅限 C++。

资产类调节内容设置于项目默认值内置默认值
UCFProfile车身如何凹陷、刮擦漆面并沾上污垢UCFDeformComponent::Profile,或车辆适配器上的 DeformProfileUCFSettings::DefaultProfile/Crushform/Presets/DA_CF_DefaultProfile
UCFTireProfile轮胎如何追踪地面并形变UCFTireComponent::Profile,或车辆适配器上的 TireProfileUCFTireSettings::DefaultProfile/Crushform/Presets/DA_CF_DefaultTireProfile
UCFEngineSoundProfile发动机的循环音、音高和淡入淡出UCFEngineAudioComponent::Profile,或车辆适配器上的 EngineSoundProfileUCFEngineSettings::DefaultProfile/Crushform/Engine/DA_CF_DefaultEngineSound

插件的其他数据资产是定义,而不是配置文件。玻璃板使用 UCFGlassDefinition,可破坏道具使用 UCFBreakablePropDefinition,树木使用 UCFTreeConfig,撞击反馈则使用 UCFImpactFeedbackSet。每种都在本指南中有自己的页面。路面(为每种地面提供污垢与滚动声)使用 UCFSurfaces 资产,该资产由 UCFSettings::Surfaces 指定。

在 Content Browser 中通过 Add > Miscellaneous > Data Asset 创建这些资产中的每一个,并选择对应的类。插件不注册任何工厂,也不设置自己的资产分类。

没有配置文件的组件什么也不做。对 UCFDeformComponent 来说,这是静默的:晶格不会被构建。组件在游戏开始时读取其配置文件,因此请在以下两个位置之一进行设置:

  • 在蓝图的类默认值中,设置组件 Details 面板里的 Profile 字段。
  • 在 C++ 中,于 SpawnActorDeferred 与 FinishSpawning 之间、组件开始游戏之前进行设置。

对于带有适配器的车辆,让适配器的配置文件字段留空即可使用项目默认值。字段为空时,适配器会把项目默认值分配给其形变组件和轮胎组件。发动机组件若没有自己的配置文件,则回退到项目默认值。适配器字段中的显式值始终优先。

若已设置配置文件,但拥有者的任何网格都无法形变,组件会输出警告并保持关闭:

%s has a profile but no deformable mesh components; Crushform stays off

常见原因是 Include Tags 列表与任何网格都不匹配,或拥有者的网格全部被 Exclude Tags 排除。

UCFProfile 保存一个车身的设置。其属性按它们在 Details 面板中显示的分类分组。下表列出决定损伤外观与手感的属性。完整列表见 API 参考。

属性作用默认值
UCFProfile::Resolution每个轴上的晶格节点数。每个轴都是 4 的倍数,且晶格必须能放入一个图集槽位16、8、8
UCFProfile::LatticeMargin晶格在各侧超出车身碰撞的距离,单位厘米10
UCFProfile::bUseExplicitBounds使用 ExplicitBounds 作为晶格包围盒,而非碰撞的包围盒关
UCFProfile::IncludeTags只有带有其中某个标签的网格组件会形变。为空则表示所有静态网格和骨骼网格空
UCFProfile::ExcludeTags带有其中某个标签的网格组件永不形变。用于会移动的部件,例如车门空
UCFProfile::bDents关:撞击、挤压和报告都不会使车身凹陷或刮擦开
UCFProfile::bDeformCollision车身的碰撞跟随其凹陷开
UCFProfile::bHingedParts关:铰接部件永不摆动、脱落或被扯下开
UCFProfile::MinDeltaV车身开始凹陷前的撞击速度,单位 m/s0.5
UCFProfile::Stiffness超过 MinDeltaV 后,每 m/s 对应的凹陷深度,单位厘米3
UCFProfile::MaxDentPerHit在区域刚度为 1 时,一次撞击能造成的最大凹陷,单位厘米20
UCFProfile::CrumpleRatio点状撞击使金属压溃进车身内部的距离,以其凹陷深度的比例表示3
UCFProfile::MaxDisplacement任一节点的最大位移,单位厘米。车身材质将其用作 Max World Position Offset Displacement60
UCFProfile::StiffnessZones车身比其余部分更硬或更软的包围盒空
UCFProfile::DentAbrasion每厘米凹陷增加的漆面磨损0.002
UCFProfile::MinScrapeSpeed低于此滑动速度(单位 m/s)时,接触不会破坏漆面1.5
UCFProfile::MaxPlausibleDeltaV客户端可报告的最快撞击或滑动速度,单位 m/s。服务器会拒绝超过该值的任何报告40
UCFProfile::DirtScale乘以车身上每一次污垢沉积量。为零时车身保持干净1
Lattice
Resolution1688
Lattice Margin10.0
Use Explicit Bounds
Explicit Bounds
Min Radius in Cells1.25
Components
Include Tags0 Array element
Exclude Tags0 Array element
Dents
Dents
Deform Collision
Hinged Parts
Dented Part Collision
Min Delta V0.5
Stiffness3.0
Max Dent Per Hit20.0
Base Radius30.0
Radius Per Delta V1.5
Lateral Scale1.5
Crumple Ratio3.0
Drag Fraction0.3
Noise Amount0.3
Bulge0.5
Bulge Down Share0.3
Max Displacement60.0
Stiffness Zones0 Array element
默认凹陷配置文件中的 Lattice、Components 和 Dents 分组。

凹陷设置描述金属如何弯曲,应首先调整的是 Stiffness、MaxDentPerHit 和 MaxDisplacement。请让 MaxDentPerHit 明显小于 MaxDisplacement,以便重复撞击仍能使凹陷加深。然后检查材质:它们的 Max World Position Offset Displacement 必须至少为 MaxDisplacement 加上褶皱幅度。材质与着色器解释了这一上限。

UCFProfile::StiffnessZones 是一组包围盒,位于根组件的空间中。每个区域都有自己的 Stiffness:值为 1 时与车身其余部分凹陷程度相同,值为 3 时凹陷深度只有其三分之一,值为 0.5 时则是两倍深。每个区域还有 EdgeWidth、MaxDepth(为零时取配置文件的 MaxDisplacement)以及 bMirrored 开关,开启后该区域也会沿车身中心线镜像生效。Name 仅供编辑器使用。区域通过 Zone Editor 设置,Crushform.ShowZones 1 会将其绘制出来。

UCFTireProfile 设置某一类轮胎如何追踪地面并形变。主要设置如下:

属性作用默认值
UCFTireProfile::TraceChannel轮胎进行射线追踪所用的通道:地形、岩石和道路ECC_WorldStatic
UCFTireProfile::NumArcSamples接触圆弧上的射线数量。奇数会保留一条垂直向下的射线13
UCFTireProfile::NumLateralRows胎面上的横向行数。三行可覆盖两侧肩部和中央3
UCFTireProfile::MaxDeflection最大视觉凹陷深度,单位厘米14
UCFTireProfile::RestingDeflection静止轮胎被压扁的程度,以其半径的比例表示0.05
UCFTireProfile::LoadSensitivity静止下沉量随车轮实时载荷增长的程度1
UCFTireProfile::MaxLoadFactor下沉所能达到的载荷系数上限2.5
UCFTireProfile::MergeAngleDeg距离相近的接触点只有在法线相差不超过此角度(度)时才合并为一个。取值过低时,大轮胎下的小圆形障碍物会占满四个接触点,导致地面失去自己的接触点45
UCFTireProfile::MinObstacleRadius圆形障碍物曲率所按的最小半径(厘米)。更细的障碍物(如管道)会按此半径的粗细来塑造凹陷3
UCFTireProfile::RimRadiusOverride轮辋半径(厘米)。0 时读取轮胎材质的 RimRadius 参数0
UCFTireProfile::RubberMargin车轮被推离障碍物后,障碍物与轮辋之间保留的橡胶厚度(厘米)2
UCFTireProfile::MaxPush整个车轮被推离障碍物的最大距离(厘米)。超过此值,轮辋可能会嵌入障碍物10

这三项轮辋设置,RimRadiusOverride、RubberMargin 和 MaxPush,只对其宿主接受推挤的车轮起作用;见 宿主接口。

没有配置文件的轮胎组件会让轮胎保持圆形。它只输出一行详细级别(Verbose)的日志,别无其他动作。对于带有适配器的车辆,当适配器的 TireProfile 为空时,使用项目默认值 DA_CF_DefaultTireProfile。决定哪些轮胎形变的预算在 Crushform Tire 中设置,而不在配置文件中。

UCFEngineSoundProfile 保存发动机的循环音以及它们的播放方式:

  • Layers:循环音,顺序不限。组件会按转速对它们排序,没有声音的层会被略去。
  • Attenuation:必填。没有它,发动机声音将保持关闭。
  • Coast Volume:无载荷时所听到的满音量比例。默认值为 0.6。
  • Min Pitch 和 Max Pitch:循环音播放时的最低和最高音高,相对于其录制时的速度。默认值分别为 0.5 和 2。
  • Starter Sound 和 Shutdown Sound:发动机启动转动时播放的启动循环音,以及运行中的发动机熄火时的声音。

若组件上没有配置文件,且也没有项目默认值,发动机将保持静音,日志中也会注明。

这些预设是插件内容。在 Content Browser 中打开 Settings 并勾选 Plugin Content,然后打开 Plugins › Crushform Content › Presets 文件夹,即 /Crushform/Presets。该文件夹包含四个资产:

资产类作用
/Crushform/Presets/DA_CF_DefaultProfileUCFProfile未指定配置文件的车身所用的项目默认值
/Crushform/Presets/DA_CF_DefaultTireProfileUCFTireProfile适配器上轮胎所用的项目默认值
/Crushform/Presets/DA_CF_GlassLaminatedUCFGlassDefinition夹层玻璃板
/Crushform/Presets/DA_CF_GlassTemperedUCFGlassDefinition钢化玻璃板

插件的轿车有自己的配置文件:/Crushform/Blueprints/Sedan/DA_CF_Profile_Sedan 和 /Crushform/Blueprints/Sedan/DA_CF_TireProfile_CitySample。在调节之前,请先将预设复制到你的项目中,这样插件更新就不会覆盖你的数值。

在插件中,“预设”还指另外三种东西,它们都不是配置文件。

  • 区域预设是一组命名的区域数值,供 Zone Editor 使用。它们保存在 Project Settings > Crushform Zone Editor 下的 UCFEditorSettings::ZonePresets 中。每个预设都有 Name、Stiffness、MaxDepth 和 EdgeWidth。它们仅存在于编辑器中。
  • 调试损伤预设在调试模式下为车身填充损伤:Light 给出三次轻微撞击,Medium 六次,Heavy 十次,Wreck 十八次,接近合理上限。
  • 调试污垢预设在调试模式下为车身填充混合污垢:Dusty 仅有灰尘,Muddy 是泥浆,并附带其三分之一用量的灰尘,Snowy 仅有积雪,Wet 仅有湿润。

调试预设位于 CrushformDebug 模块中,不会改动你的项目。它们用于在调试面板中试用各个系统。

  • 在 Content Browser 中打开该配置文件,并检查其 Details 是否显示上述分组。
  • 对该配置文件运行 Validate Assets。图集无法容纳的分辨率或无效的刚度区域会被报告为错误。
  • 在非 Shipping 构建中,对已设置配置文件的车身运行 Crushform.Debug 1。其受损节点会显示车身凹陷的位置。

没有任何凹陷,且日志中没有警告

Section titled “没有任何凹陷,且日志中没有警告”

原因。 组件没有配置文件。晶格不会被构建,对此情况也不会输出任何日志。

解决。 在游戏开始前,于类默认值或 C++ 中设置配置文件。对于带有适配器的车辆,设置 Deform Profile,或将其留空以使用 DA_CF_DefaultProfile。

%s: profile %s resolution %s does not fit an atlas slot, clamped to %s

原因。 该分辨率无法放入一个图集槽位,因此晶格被缩小。槽位最多容纳 ResX * ResZ 个节点,以及最多 ResY 行。

解决。 降低 Resolution,直到晶格能够放下,或在 Project Settings > Plugins > Crushform > Atlas 中增大槽位尺寸。Data Validation 会将同一问题报告为错误。

原因。 轮胎组件没有轮胎配置文件。日志仅在详细级别输出此信息:

%s: no tyre profile is set, the vehicle's tyres stay round

解决。 在轮胎组件上设置 UCFTireProfile,或在车辆适配器上设置 Tire Profile;为空时它会使用项目默认值。

原因。 组件上没有发动机声音配置文件,项目中也没有默认值。日志会说明:

%s: no engine sound profile here or in Project Settings > Plugins > Crushform Engine; the engine stays silent

解决。 在组件上设置 UCFEngineSoundProfile,或在 Project Settings > Plugins > Crushform Engine 中设置默认值。该配置文件还需要一个 Attenuation 资产。