本文是一系列翻译文章的一部分。查看该系列目录
ROWaterfall 是现实主义大修所使用的 ModuleManager 补丁集合,用于将 Waterfall 尾焰模组与音效统一地在引擎上启用。它与 RealPlume 兼容:如果在 RealPlume 模组之外还安装了 Waterfall Core 模组,那么没有 Waterfall 配置文件的引擎将继续使用 RealPlume,而具有 Waterfall 配置文件的引擎将使用 Waterfall。
概述
本文涉及巨多专有词汇。在阅读前,请了解以下翻译对照表:
- node - 节点
- key - 键(或键值)
- template(s) - 模板
- variant(s) - 变种(或变量,按上下文取词)
- subtype - 亚种
- pass - 传递
预先查询相应词义将有助于理解本文。
ROWaterfall 提供了 ROWaterfall
节点 (node) 来指定效果。下面是配置文件的例子:
@PART[ROE-RD107]:BEFORE[ROWaterfall]:NEEDS[Waterfall]
{
ROWaterfall
{
template = waterfall-kerolox-lower-1
audio = pump-fed-heavy-1
transform = RD-107A-MainFXTransform
position = 0,0,0.48
rotation = 0,0,0
scale = 1.3,1.3,1.3
glow = _yellow
ExtraTemplate
{
template = waterfall-kerolox-vernier-2
transform = RD-107A-VernierFXTransform
position = 0,0,0.29
rotation = 0,0,0
scale = 2.5,2.5,2
}
}
}
ROWaterfall 会从这个补丁中生成 Module[ModuleWaterfallFX]
节点和一个 EFFECTS
节点。
请注意,默认情况下,ROWaterfall 将移除现有的所有效果(包括默认配置、RealPlume 配置和自定义 Waterfall 配置)。但是,在安装了其他尾焰模组的情况下使用 ROWaterfall 是有可能的。
配置选项
每个部件只能有一个 ROWaterfall
节点。如果你需要更复杂的尾焰,可以手动添加额外的 ModuleWaterfallFX
节点。
一个 ROWaterfall
节点可以包含以下键值和节点:
键值/节点名 | 必须 | 默认值 | 描述 |
---|---|---|---|
autoConfig | 否 | 无 | 1 |
template | 是 | 不适用 | 2 |
controllerSet | 否 | 基于 Template 自动选择 | 3 |
audio | 否 | 无 | 4 |
moduleID | 否 | 部件的 name | 5 |
engineID | 否 | basicEngine | 6 |
transform | 否 | thrustTransform | 7 |
position | 否 | 0,0,0 | 8 |
rotation | 否 | 0,0,0 | 9 |
scale | 否 | 1,1,1 | 10 |
glow | 否 | 无 | 11 |
glowStretch | 否 | 1 | 12 |
ExtraTemplate {} | 否 | 无 | 13 |
MainPlumeVariant {} | 否 | 无 | 14 |
defaultMainPlumeVariantName | 否 | 从 template 自动生成 | 15 |
useRelativeScaling | 否 | false | 16 |
- 应用一组预定义的可切换尾焰。这个键值会 一体化地自动配置
audio
,template
,MainPlumeVariant {}
,与ModuleEngineConfigs
。position
,rotation
和scale
值应根据“默认值”进行配置,它可以在GameData/RealismOverhaul/Waterfall_Configs/_Processor/15_auto-config.cfg
中被找到。目前该键值有两种可能的值:rcs
(默认值为rowaterfall-rcs-cold-gas-1
)和genericThruster
(默认值为waterfall-hypergolic-white-upper-1
)。 - 所需要的 Waterfall 模板名称。默认 Waterfall 尾焰模板可以在
GameData/Waterfall/Templates
中被找到,并且现实主义大修在Waterfall_Configs/_Templates
提供了补充模板。 - 指定一个或多个需要被插入的
CONTROLLER
设置。ROWaterfall 将根据主要模板(参见Waterfall_Configs/_Processor/90_controllers.cfg
)或回退到默认设置来确定合适的控制器设置(默认设置适用于大多数情况)。若要指定不插入控制器设置,请将这个键值设置为custom
。 - 需要使用的音效模板。请在
Waterfall_Configs/_Audio
中参考哪些音效模板是可用的。虽然这个值并非严格要求,但省略这个值会导致引擎没有声音。 - 覆盖自动生成的
ModuleWaterfallFX
的moduleID
- 设置用于节流阀控制器的
engineID
,如果它有一个节流阀的话。 - 在主要模板上设置
overrideParentTransform
的值。如果这个模板是一个 RCS 模板,那么 RCS 控制器的thrusterTransformName
也将被设置为该值。 - 设置主模板的位置。
- 设置主模板的旋转方向。
- 设置主模板的缩放尺寸。
- 添加一个与主模板基底位置和大小相同的喷管光晕。关于它的用法,请参阅喷管光晕。
- 生成的光晕长度将乘以此键值作为倍数。它适用于很短的喷管,默认长度可能会导致产生难看的穿模。
- 这个节点可用于在生成的
ModuleWaterfallFX
中添加额外的模板(例如用于 verniers 的模板)。template
键是必须的,而transform
,position
,rotation
,scale
几个键值是可选的,如果它们未指定,则将会从上级配置中继承这几个键的值。添加的模板应使用和主模板相同的控制器。如果没有,你可以手动添加其他控制器。你也许会用到多个MainPlumeVariant
节点。 - 用于定义根据燃料类型自动选择的尾焰变种。这需要使用 B9PartSwitch 模组,因此该节点需要使用
:NEEDS[B9PartSwitch]
声明。请查看 基于燃料种类的尾焰切换 来了解它的用法。可以存在多个MainPlumeVariant
节点。 - 覆盖默认尾焰变种的名称,如果该键值为空,则默认尾焰变种的名称将是模板名称的缩写。
- 除非你知道自己在做什么,否则不要修改这个键值。它使尾焰尺寸相对于父部件(也即该尾焰依附的引擎)的尺寸变化而变化,主要用途是解决由于部件缩放不均匀导致的尾焰尺寸误差。
喷管光晕
添加一个 glow
键值会将一个“光晕”模板插入尾焰中。这样做的目的是在尾焰和引擎喷管内部间提供平滑过渡,特别是对于那些使用动态着色器 (dynamic shaders) 的尾焰。建议为所有引擎部件都添加光晕,无论引擎是否有自发光贴图 (emissive)。
glow
键的值有两种形式:
_<color>
,指代waterfall-nozzle-glow-<color>-1
模板ro-<name>
,指代rowaterfall-glow-<name>
模板
把这个键设定为其他任何值都将导致无法预料的结果。
你可以参考 尾焰模板 部分来设置这些光晕的外观。
默认设置下,生成的光晕长度是喷口直径的两倍(喷口直径以 scale
键中 x 和 y 值的平均值计算)。
如果你需要配置更复杂的光晕(如自定义光晕朝向),则应使用 ExtraTemplate
节点手动添加(添加方法参见上文相关节点描述)。
基于燃料的尾焰切换
如果安装了 B9PartSwitch 模组,ROWaterfall 将支持基于引擎的 RFMEC 配置来切换尾焰。各个尾焰变种/亚种可以使用 MainPlumeVariant
节点进行声明(参见上文),以及,在上级 ROWaterfall
节点中声明的模板将被确定为默认尾焰变种。
在 B9PartSwitch 模组缺失的情况下,默认变种将被应用于所有类型燃料的引擎。
这个节点将读取以下键值:
name
:该键为必要键,且键值需唯一。template
:该键为必要键。position
,rotation
和sacle
:可选,如果它们未被设定,则键值将从默认变种中继承。glowRecolor
:可选,与glow
键读取的值相同。该键被用于替换默认尾焰变种的光晕颜色。它只会在默认变种有一个glow
键被声明时有效。
如果你已安装 B9PartSwitch 模组且目前已有 MainPlumeVariant
,ROWaterfall 将创建一个 ModuleB9PartSwitch
键,伴随 moduleID
和 rowaterfallMainPlumeSwitch
。对于每个 MainPlumeVariant
,ROWaterfall 将生成一个具有相同 name
的 SUBTYPE
,该 SUBTYPE
会适时切换 Waterfall 模组中多个 TEMPLATE
。它同样会创建一个 name
衍生自它的 template
的默认亚种(除非你已经使用 defaultMainPlumeVariantName
键在上级 ROWaterfall
节点中覆盖本键值)。
除此以外,通过设置 b9psModuleID
键并指定每个 CONFIG
使用默认变量,ROWaterfall 将设置 ModuleEngineConfigs
键的 B9PartSwitch 整合版本。
请注意,ExtraTemplate
键 并不 能够直接使用 MainPlumeVariant
切换,它必须通过手动修改自动生成的切换器来完成。
每个不使用默认变量的 ModuleEngineConfigs
和 CONFIG
键必须指定变量的 name
来与 rowaterfallVariant
键一同使用。(如果该配置没有指定变量,则它将使用先前已配置的默认变量。)这个键应在 :BEFORE[ROWaterfall]
传递中设置。
下面的配置为 LR-87 引擎提供了一个液氧煤油尾焰变种,它会在 LR87-AJ-3 和 LR87-AJ-9-Kero 配置被选择时启用:
♾️ cfg 代码:@PART[ROE-LR87]:BEFORE[ROWaterfall]:NEEDS[Waterfall]
{
ROWaterfall
{
template = waterfall-hypergolic-aerozine50-lower-1
audio = pump-fed-lr87
position = 0,0,0.69
rotation = 0, 0, 0
scale = 0.85, 0.85, 0.85
glow = _white
ExtraTemplate
{
template = waterfall-hypergolic-vernier-upper-2
transform = newThrustTransform
position = 0,0,0.011
rotation = 0, 0, 0
scale = 0.9, 0.9, 0.8
}
MainPlumeVariant:NEEDS[B9PartSwitch]
{
name = kerolox
template = waterfall-kerolox-lower-4
position = 0,0,0.69
rotation = 0, 0, 0
scale = 2.05, 2.05, 2.05
glowRecolor = _yellow
}
}
@MODULE[ModuleEngineConfigs]:NEEDS[B9PartSwitch]
{
@CONFIG[LR87-AJ-3]
{
%rowaterfallVariant = kerolox
}
@CONFIG[LR87-AJ-9-Kero]
{
%rowaterfallVariant = kerolox
}
// ROWaterfall will set all other configs to use the default aerozine50 plume.
}
}
尾焰模板
除了 Waterfall 提供的模板,ROWaterfall 还提供了许多补充模板。
rowaterfall-cold-gas-1
这个(非现实外观的)模板从 waterfall-rcs-jet-1
修改而来,用于冷气通用推进器1
图像:还未完成2
rowaterfall-glow-
模板系列
这些效果是 Waterfall 中光晕的多色版本。
目前提供的颜色有:
cold-gas
:朦胧的白色光晕hydrolox-blue
:用于上面级氢氧引擎,不那么亮的青蓝色hydrolox-red-blue
:用于海平面氢氧尾焰,处于海平面时发红光,在上升到真空的过程中将逐渐变为蓝色。hypergolic-az50
:橘黄色,用于混肼-50(四氧化二氮)尾焰。methalox-blue
methalox-purple
ntr
3pentaborane
:剧毒。srm
:明亮的白黄色。
从左到右依次是:hydrolox-blue
,海平面hydrolox-red-blue
,真空hydrolox-red-blue
,hypergolic-az50
,hypergolic-white
,methalox-blue
,methalox-purple
,ntr
。
rowaterfall-hydrolox-ssme
另一种真实的 SSME 尾焰。图片由来自 Discord 的 Aviation366 提供。
在这里查看 SSME 尾焰图例。
rowaterfall-hypergolic-superdraco
橙色的超燃燃料尾焰,带有突出的菱形马赫环。灵感来自 SpaceX 的 SuperDraco 推进器。
rowaterfall-hypergolic-udmh-pentaborane-lower-1
由 Spaceman Spiff 提供。
rowaterfall-monopropellant-hydrazine-1
修改自 waterfall-hydrazine-monopropellant-upper-1
,使它看起来稍微不那么像 RCS 的外观,且让它朝向了正确的方向。
rowaterfall-ntr-1
修改自 BDB_nuclear_PBR_vac
,让它稍微散开并更容易放置 (easier to place) 。
rowaterfall-rcs-
模板系列
一组重新上色的 RCS 尾焰,适用于不同类型燃料。
从左到右分别为:hypergolic-2
(灵感来源于太空梭),hypergolic-1
,hydrazine-1
,cold-gas-1
。
rowaterfall-srm-vac-1
一个固推模板,灵感来自 Castor 30 引擎的真空室测试影像。
来自 蓝狗设计局(Bluedog Design Bureau)的模板
BDB_HTP_vernier
BDB_HTP_vernierVac
BDB_nuclear_PBR_sustainer_LOXaug
音效模板
ROWaterfall 将使用以下默认节点名生成音效:running
,engage
,disengage
, 以及 flameout
。
可以使用下列通用模板:
pressure-fed-1
pump-fed-very-light-1
pump-fed-light-1
pump-fed-medium-1
pump-fed-heavy-1
pump-fed-very-heavy-1
rcs-jet-1
pimp-fed
系列音效会越来越嘶哑,它基于来自 Rocket Sound Enhancement 模组的音效(作为 Waterfall 的一部分发布)。
它同样有一些特殊音效可以使用:
pump-fed-f1
,嘶哑且充满力量。pump-fed-gamma
pump-fed-lr87
,基于真实的“呜呜”点火声。pump-fed-raptor
,该音效基于真实的 SpaceX 测试记录。pump-fed-stentor
使用非默认运行音效名称的引擎将没有声音。如果出现这种情况,要么设置运行音效名为 running
,要么手动重命名先前生成的 running
效果节点。
结合 ROWaterfall 使用其他尾焰模组
RealPlume 效果(PLUME
,PLUME_TEMPLATE
)以及手写 Waterfall 配置文件(ModuleWaterfallFX
)能够被添加到 :AFTER[ROWaterfall]
传递中,如果你需要它们和 ROWaterfall 共存。如果它们在这个传递前被添加,则它们会被 ROWaterfall 在 :FOR[ROWaterfall]
中删除。
替代方案是,如需强制保留一个已有的 Waterfall 或 RealPlume 配置,请将 rowaterfallKeep
键加入它(键值随便怎样都行)。
自带效果(包括音频)可被添加到 :AFTER[ROWaterfall]
,只要它们的名称与已经被 ROWaterfall 使用过的不同。否则,请参见修改 ROWaterfall 生成的效果。
配置已被 Waterfall 配置文件定义的部件
你可以选择将已有的手写配置修正,或者用 ROWaterfall 完全重新配置整个部件。
修改 ROWaterfall 生成的效果
对于 ROWaterfall 所生成效果的修改(ModuleWaterfallFX
和 EFFECTS
)可以通过 :AFTER[zROWaterfall_Post]
传递完成。(这个操作以前需要通过 :AFTER[zROWaterfall_99_Finalize]
传递完成。后者仍然有效,但不建议这样做。)
以下例子修改了 kerelox
尾焰变种的一个 ExtraTemplate
:
@PART[ROE-LR87]:AFTER[zROWaterfall_Post]:NEEDS[Waterfall,B9PartSwitch]
{
@MODULE[ModuleB9PartSwitch]:HAS[#moduleID[rowaterfallMainPlumeSwitch]]
{
@SUBTYPE[kerolox]
{
@MODULE
{
@DATA
{
@TEMPLATE:HAS[#templateName[waterfall-hypergolic-vernier-upper-2]]
{
@templateName = waterfall-kerolox-vernier-2
@position = 0,0,0
@rotation = 0, 0, 0
@scale = 1.85, 1.85, 1.5
}
}
}
}
}
}
以下例子将运行效果名修改为 rcs
:
@PART[ROC-CSTSM]:AFTER[zROWaterfall_Post]:NEEDS[Waterfall]
{
@EFFECTS
{
@running
{
|_ = rcs
}
}
}
向 ROWaterfall 添加模板
按照惯例,ROWaterfall 提供的模板名应以 rowaterfall
开头。
模板应从 1 开始编号,“特殊”模板除外。每个“特殊”模板(例如 SSME 尾焰)只能有一个标准版本。应以向后兼容的方式对现有版本进行艺术修改(例如,不要改变尾焰的“基本尺寸”),从而使使用该模板的所有部件表现一致。
为了方便部署与配置,新模板的 z 位置值一般应为 0,并避免使用较大的 FadeIn
值。这是为了确保有一个与喷口匹配的、明确定义的边界,并且在尾焰缩放时,尾焰底部不会发生位移。
所有喷口光晕的默认位置和大小(即位置、旋转和缩放变量均为默认值时的视觉大小和位置),应和 Waterfall 中提供的自带光晕相同。这是使光晕缩放功能正常工作的必要条件。
Waterfall Wiki 提供了关于创建模板的更多信息。
定义控制器
默认情况下,ROWaterfall 负责将控制器插入 Waterfall 模组,除非它接收到不这么做的指令(通过 controllerSet = custom
),否则 ROWaterfall 会插入它所知的,适合特定主模板的特定控制器,或者插入以下一组后备控制器:
CONTROLLER
{
name = atmosphereDepth
linkedTo = atmosphere_density
}
CONTROLLER
{
name = throttle
linkedTo = throttle
engineID = #$/ROWaterfall/engineID$
}
CONTROLLER
{
name = random
linkedTo = random
range = 0,1
}
如果你的模板需要一个特定设置的控制器,请在 _Processor/90_controllers.cfg
中定义它,通过添加一个新的默认 controllerSet
(例如,@ROWaterfall:HAS[#template[your-template]] { &controllerSet = your-set-name }
)到文件头部,并修正 CONTROLLER
为如下形式:
@PART:HAS[@ROWaterfall:HAS[#controllerSet[your-set-name]]]:FOR[zROWaterfall_90_Controllers]:NEEDS[Waterfall]
{
@MODULE[ModuleWaterfallFX]:HAS[#__rowaterfall]
{
// Your controllers
}
}
一般来说,controllerSet
应根据其包含的控制器命名(例如,atmo-thrust-basicRand
),除非它们指定用于一个特定模板。
在 90_controllers.cfg
中的代码块应按字母顺序排列。
配置光晕缩放
如果该模板预计应用于引擎,则你应该在 _Processor/39_glow-resize.cfg
配置其光晕缩放。不同尾焰的数学处理方法会有所不同(可以参考现有的计算方法),但结果应该是光晕的直径与尾焰的底部相同,并且其顶面与尾焰的底部重合。换句话说,如果使尾焰与喷口边缘相吻合,则光晕应充满喷口内部而不发生穿模。
本文是一系列翻译文章的一部分。查看该系列目录
博主
HelixCopex翻吐了,赶紧睡个午觉补补。
👍
💖
💯
💦
😄
🪙
👍
💖
💯
💦
😄
🪙
博主
HelixCopex @klcdm原文才是精品,我这蹩脚翻译过誉了 😹
👍
💖
💯
💦
😄
🪙