集成项目设置
项目设置
Crushform 有七个设置类。每个都显示在 Project Settings › Plugins 下,使用其显示名称。其中六个保存到 Config/DefaultGame.ini,区域编辑器保存到 Config/DefaultEditor.ini。请将这些文件纳入版本控制,让整个团队共享同一组数值。
下面的列表给出项目最先需要修改的属性。每个默认值都是代码中设定的值。API 参考列出了所有属性。
Crushform
Section titled “Crushform”Crushform(UCFSettings)保存图集、默认资产、污垢、外观材质、铰接部件和碰撞设置。
UCFSettings::Atlas:每个形变网格都会采样的渲染目标。默认值:/Crushform/Atlas/RT_CF_LatticeAtlas。其尺寸决定同时绘制多少个受损车身;参见性能。UCFSettings::SlotWidth和UCFSettings::SlotHeight:一个槽位的纹素数,默认宽 256、高 8。当晶格的 ResX 乘以 ResZ 不超过SlotWidth,且 ResY 不超过SlotHeight时,晶格即可放入。UCFSettings::CustomDataOffset、UCFSettings::WheelCustomDataOffset、UCFSettings::TireCustomDataOffset和UCFSettings::GlassCustomDataOffset:自定义基元数据中每个数据块的起始位置。默认值分别为 0、34、0 和 18。更改其中任一项都会重建烘焙它的材质函数。请保存这些函数,或运行Crushform.RebakeOffsets后再保存。UCFSettings::Surfaces:每种物理材质对应一行。默认值:/Crushform/Surfaces/DA_CF_Surfaces。没有它,任何车身都不会变脏。UCFSettings::DefaultProfile:未指定配置文件的车身所用的形变配置文件。默认值:/Crushform/Presets/DA_CF_DefaultProfile。UCFSettings::DirtAtlas和UCFSettings::DirtFreshAtlas:污垢渲染目标。默认值:/Crushform/Atlas/RT_CF_DirtAtlas和/Crushform/Atlas/RT_CF_DirtFreshAtlas。UCFSettings::ScratchAtlas:保存划痕线覆盖度和方向、大小与晶格图集相同的 RG8 渲染目标。默认值:/Crushform/Atlas/RT_CF_ScratchAtlas。没有可用的图集时,漆面不会画出划痕线,见漆面与划痕。UCFSettings::DirtLayerOrder:Fixed(默认值)按各污垢通道的 ZOrder 堆叠。Most Recent on Top 需要新鲜图集。UCFSettings::DustChannel、UCFSettings::MudChannel、UCFSettings::SnowChannel和UCFSettings::WetChannel:每个通道的名称、混合方式和清除速度。默认情况下,灰尘、泥浆和积雪以图层方式混合,湿润则以叠加方式混合。UCFSettings::BodyDirtLook、UCFSettings::WheelDirtLook和UCFSettings::GlassCrackLook:用于替换车身污垢、车轮污垢和玻璃裂纹内置外观的材质函数。未设置时,保留内置外观。UCFSettings::DefaultGlassShardSystem:为定义中没有指定 Shard System 的玻璃板抛出碎片的 Niagara 系统。默认值:/Crushform/Glass/NS_CF_GlassShards。它位于 Glass 分组。参见玻璃。UCFSettings::LoosePartCollisionProfile:铰接部件摆动或脱落后所采用的碰撞配置。None 使用插件自带的配置,它不需要项目提供任何内容。UCFSettings::SwingSpring(0)、UCFSettings::SwingDamping(1)和UCFSettings::StopBounce(0):摆动部件如何被拉回、阻尼以及停止。UCFSettings::DetachedLifetime(60 秒)和UCFSettings::DetachedSinkTime(2 秒):脱落部件留存的时长,以及其下沉所需的时间。UCFSettings::CollisionRebuildThreshold(2 厘米)、UCFSettings::CollisionRebuildInterval(0.5 秒)和UCFSettings::MaxCollisionBlocks(96):凹陷车身的碰撞何时重新构建,以及一个车身的包围盒和凸包总共被切分成多少个块。UCFSettings::bDeformCollision(开):本项目中碰撞体是否跟随凹陷。关闭时,无论配置文件怎么设置,每辆车都保留其原本制作的碰撞体,凹陷只是被绘制出来。它在车辆开始游戏时读取。它写入Crushform.Collision.Deform,因此设备配置文件可以在性能较弱的设备上将其关闭。每一端读取自己的值,它不会被复制:凹陷和被扯断的部件仍会到达每一端,而关闭它的那一端碰撞起来就像没有凹陷一样。同一场比赛中的值不同,各端在碰撞中的物理也会不同。UCFSettings::CollisionDeferFrames(1):一次较重的碰撞体构建可以在游戏线程之外运行多少帧,之后必须落到车身上,取值为 0 或 1。这里指的构建是被扯断部件的切割、凹陷车身的重建和被扯断部件的凸包。0 表示在命中的那一帧完成全部构建。大于 1 的值按 1 处理。控制台变量Crushform.Collision.DeferFrames在运行时保存这个值;参见控制台命令。UCFSettings::AutoRepairDelay:车身在最近一次损伤后自动修复前的秒数。默认值为 0,即永不自动修复。
Crushform Wheels
Section titled “Crushform Wheels”Crushform Wheels(UCFWheelSettings)保存车轮的滚动声音和滚动 FX。
UCFWheelSettings::bRollingSound(开)和UCFWheelSettings::bRollingFX(开):总开关。UCFWheelSettings::Attenuation:每个滚动声音的衰减设置。默认值:/Crushform/Sounds/SA_CF_TireRolling。UCFWheelSettings::SpeedParameterName:接收以 km/h 为单位速度的声音浮点参数。默认值 Speed。None:不发送速度。UCFWheelSettings::CabinVolumeScale(0.8)和UCFWheelSettings::CabinLowPassFrequency(3000 Hz):当听者位于车厢内时,滚动声音的变化方式。UCFWheelSettings::FXIntensityParameter:接收车轮强度的 Niagara 浮点参数。默认值 Intensity。UCFWheelSettings::FXTuning:滚动 FX 的强度与休眠调节。FCFRollingFXTuning::SleepSpeedKPH(1 km/h)会在车身及其最快的着地车轮都低于该速度时,停止所有滚动 FX。为 0 时永不停止。
Crushform Tire
Section titled “Crushform Tire”Crushform Tire(UCFTireSettings)保存哪些轮胎会形变、轮胎预算、静止车轮的休眠设置,以及地面射线追踪忽略什么。
UCFTireSettings::Scope:默认为 Budgeted。ECFTireScope::RigOnly只使观察者自己的车辆组合形变。ECFTireScope::Budgeted还会使预算所允许的其他车轮形变。ECFTireScope::Unlimited使每个已注册车辆的每个车轮都形变。UCFTireSettings::bEnabled(默认开启):总开关。关闭后每个轮胎都会恢复为圆形。可由控制台变量Crushform.Tire.Enable覆盖。UCFTireSettings::MaxWheels(30):可同时形变的轮胎数量。观察者自己的车辆始终会形变,即使超出此上限。可由控制台变量Crushform.Tire.MaxWheels覆盖。UCFTireSettings::Radius(4000 厘米):其他车辆的轮胎可以形变的、距摄像机的距离范围。可由控制台变量Crushform.Tire.Radius覆盖。UCFTireSettings::LodDistance1(1500 厘米)和UCFTireSettings::LodDistance2(3000 厘米):轮胎改用更稀疏射线扇形的距离,以及改用对简单碰撞的最稀疏扇形的距离。可分别由控制台变量Crushform.Tire.LodDistance1和Crushform.Tire.LodDistance2覆盖。UCFTireSettings::Hysteresis(0.15):已授予的轮胎边界向外扩展的幅度,使位于边界上的轮胎不会闪烁。取值范围为 0 到 0.9。可由控制台变量Crushform.Tire.Hysteresis覆盖。UCFTireSettings::UpdateInterval(0.25 秒)和UCFTireSettings::OnScreenTolerance(0.5 秒):两次预算计算之间的时间间隔,以及车轮最后一次被绘制后仍被视为在屏幕上的时长。可分别由控制台变量Crushform.Tire.UpdateInterval和Crushform.Tire.OnScreenTolerance覆盖。UCFTireSettings::SleepDistance(1 厘米)和UCFTireSettings::SleepAngleDeg(0.5 度):车轮需要与静止姿态保持多近才会进入休眠。SleepDistance为负数时,车轮永远不会休眠。UCFTireSettings::IgnoredObjectChannels(为空):轮胎地面射线追踪忽略的对象通道,另外还包括其自身碰撞所忽略的通道。UCFTireSettings::DefaultProfile:未指定配置文件的轮胎所用的轮胎配置文件。默认值:/Crushform/Presets/DA_CF_DefaultTireProfile。
Crushform Engine
Section titled “Crushform Engine”Crushform Engine(UCFEngineSettings)保存发动机声音设置。
UCFEngineSettings::bEngineSound(开):总开关。它在发动机声音开始播放时被读取。UCFEngineSettings::DefaultProfile:未指定配置文件的发动机声音所用的配置文件。默认值:/Crushform/Engine/DA_CF_DefaultEngineSound。UCFEngineSettings::SoundClass:为空时使用默认类 Master。UCFEngineSettings::Priority(0.5):播放优先级。它高于滚动声音的 0.1,因此较弱的轮胎声会让位于发动机声音。UCFEngineSettings::CabinVolumeScale(0.8)和UCFEngineSettings::CabinLowPassFrequency(3000 Hz):在车厢内听到的发动机声音。
Crushform Impact Feedback
Section titled “Crushform Impact Feedback”Crushform Impact Feedback(UCFImpactFeedbackSettings)保存播放的撞击集合,以及声音和特效的限制。
UCFImpactFeedbackSettings::DefaultSet:播放的撞击集合。默认值:/Crushform/Impact/DA_CF_ImpactFeedback。UCFImpactFeedbackSettings::MaxAudibleDistanceCm(6000)和UCFImpactFeedbackSettings::MaxEffectDistanceCm(8000):距离本地摄像机超过这些值的撞击不播放声音,也不生成特效。UCFImpactFeedbackSettings::MinVoiceSeconds(0.25 秒)和UCFImpactFeedbackSettings::MaxVoiceSeconds(3 秒):一个已播放的声音占用发声槽位的时长。UCFImpactFeedbackSettings::MaxSoundsPerFrame(2)和UCFImpactFeedbackSettings::SoundQueueSeconds(0.15 秒):一帧内启动的声音数量上限,以及超出该上限的声音在被丢弃之前最多可以等待多久。0表示关闭该上限。控制台变量Crushform.Impact.MaxSoundsPerFrame和Crushform.Impact.SoundQueueSeconds在运行时保存这些值;参见控制台命令。UCFImpactFeedbackSettings::IgnoredHitActorClasses(为空):被这些类之一(或其子类)的 Actor 命中,不构成撞击。UCFImpactFeedbackSettings::bUseDefaultBreakableHost(开):插件自带的可破坏宿主。如果你的游戏在碎片池中注册了自己的宿主,请将其关闭。
Crushform Breakable
Section titled “Crushform Breakable”Crushform Breakable(UCFBreakableSettings)保存被破坏单元及其碎片的限制与碰撞设置。
- Debris:
UCFBreakableSettings::MaxLiveDebrisPieces(96)和UCFBreakableSettings::MaxPersistentDebrisPieces(64)限制存活碎片的数量。UCFBreakableSettings::DebrisMaxSpawnDistanceCm(10000)为距离本地摄像机的距离,超过该距离的破坏不生成碎片。UCFBreakableSettings::DebrisCollisionProfile(None)使用引擎的 PhysicsActor 配置。 - Respawn:
UCFBreakableSettings::RespawnCheckIntervalSeconds(5 秒)和UCFBreakableSettings::RespawnClearRadiusCm(4000 厘米)。玩家 Pawn 位于该半径内时,任何单元都不会重生。UCFBreakableSettings::RespawnBlockingObjectTypes使单元在 Vehicle、Pawn 或 PhysicsBody 的物体与其位置重叠时保持被毁状态。 - Any Body:
UCFBreakableSettings::AnyBodyCheckIntervalSeconds(0.1 秒)和UCFBreakableSettings::MaxAnyBodySpeedCmS(3000 厘米/秒),用于因任何物体而破坏的单元。 - Trees:
UCFBreakableSettings::TreeCollisionProfile(None 使用 Destructible)和UCFBreakableSettings::TreeWheelTraceChannel(WorldDynamic),即车轮追踪地面所用的通道。
Crushform Zone Editor
Section titled “Crushform Zone Editor”Crushform Zone Editor(UCFEditorSettings)保存区域编辑器提供的预设。它是唯一保存到 DefaultEditor.ini 的类。
UCFEditorSettings::ZonePresets:区域编辑器右键菜单中的预设,按此顺序排列。每个预设是一个FCFZonePreset,包含 Name、Stiffness、Max Depth 和 Edge Width(默认 20 厘米)。Max Depth 为 0 时取配置文件的 Max Displacement。默认预设为 Frame(刚度 3,Max Depth 0)、Cabin(2,12 厘米)、Crumple(0.5,0)和 Neutral(1,0)。
检查是否正常工作
Section titled “检查是否正常工作”打开 Project Settings › Plugins,找到七个 Crushform 条目。它们是:
- Crushform
- Crushform Wheels
- Crushform Tire
- Crushform Engine
- Crushform Impact Feedback
- Crushform Breakable
- Crushform Zone Editor
然后在包含 Crushform 车身的关卡中使用 Play In Editor 运行,并在控制台中执行 Crushform.Stats。它输出的第一行是图集计数,即 Crushform atlas: <used> of <total> slots used。专用服务器进程则会输出 Crushform atlas: none in this process (a dedicated server draws nothing).
| Atlas | ||
|---|---|---|
| Atlas | RT_CF_LatticeAtlas | |
| Slot Width | 256 | |
| Slot Height | 8 | |
| Custom Data Offset | ||
| Wheel Custom Data Offset | ||
| Tire Custom Data Offset | ||
| Glass Custom Data Offset | ||
| Scratch Atlas | RT_CF_ScratchAtlas | |
| Network | ||
| Contact | ||
| Repair | ||
| Surfaces | ||
| Profile | ||
| Dirt | ||
| Look | ||
| Body Dirt Look | None | |
| Wheel Dirt Look | None | |
| Glass Crack Look | None | |
| Loose Parts | ||
| Collision | ||
Plugins - Crushform Tire
| Budget | ||
|---|---|---|
| Scope | ||
| Enabled | ||
| Max Wheels | 30 | |
| Radius | 4000.0 | |
| Lod Distance 1 | 1500.0 | |
| Lod Distance 2 | 3000.0 | |
| Hysteresis | ||
| Update Interval | 0.25 | |
| On Screen Tolerance | 0.5 | |
| Sleep | ||
| Sleep Distance | 1.0 | |
| Sleep Angle Deg | 0.5 | |
Plugins - Crushform Zone Editor
The stiffness zone editor's presets: Project Settings > Plugins > Crushform Zone Editor, kept in DefaultEditor.ini for the team.
| Zones | ||
|---|---|---|
| Zone Presets | 4 Array elements | |
| Index [ 0 ] | ||
| Name | Frame | |
| Stiffness | 3.0 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
| Index [ 1 ] | ||
| Name | Cabin | |
| Stiffness | 2.0 | |
| Max Depth | 12.0 | |
| Edge Width | 20.0 | |
| Index [ 2 ] | ||
| Name | Crumple | |
| Stiffness | 0.5 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
| Index [ 3 ] | ||
| Name | Neutral | |
| Stiffness | 1.0 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
没有任何车身变脏。
原因:Surfaces(UCFSettings::Surfaces)为空,或未指定任何 Surfaces 资产。没有它,任何车身都不会变脏。
解决:指定 /Crushform/Surfaces/DA_CF_Surfaces,或你自己的路面资产。
Most Recent on Top 会回退到 ZOrder。
原因:Dirt Fresh Atlas 缺失或不可用。此时 Output Log 会输出 No usable Crushform dirt fresh atlas (Project Settings > Plugins > Crushform > Dirt Fresh Atlas)。
解决:将 Dirt Fresh Atlas 设为 /Crushform/Atlas/RT_CF_DirtFreshAtlas,或设为你自己的可用渲染目标。
没有划痕线。
原因:划痕图集缺失,或不是与晶格图集大小相同的 RG8 渲染目标。此时 Output Log 会输出 No Crushform scratch atlas (Project Settings > Plugins > Crushform); scratch lines stay invisible,或指出该图集及其必须具备的大小。
解决:将 Scratch Atlas 设为 /Crushform/Atlas/RT_CF_ScratchAtlas,或设为你自己的、大小与晶格图集相同的 RG8 渲染目标。
更改后材质烘焙的偏移量不正确。
原因:编辑器会在自定义数据偏移量改变时重建材质函数,但重建后的函数没有保存。
解决:保存材质函数,或运行 Crushform.RebakeOffsets 后再保存它们。