Zh/$bonemerge: Difference between revisions
< Zh
Jump to navigation
Jump to search
(deepseek translation) |
(deepseek translation) |
||
Line 1: | Line 1: | ||
{{LanguageBar}} | {{LanguageBar}} | ||
{{this is a|QC命令|name=$bonemerge}} | {{this is a|QC命令|name=$bonemerge}} | ||
该命令在指定骨骼上设置骨骼合并标志,用于提示游戏代码该骨骼将在游戏运行期间用于骨骼合并(参见{{L|Attachments}})。若未设置此标志,骨骼仍可用于合并,但会触发性能警告。 | |||
{{warning| | {{warning|对于无网格的纯动画模型,所有拟用于骨骼合并的骨骼必须设置此标志,否则将无法正确合并并导致形变。但通过{{L|$includemodel}}引用外部动画模型的情况不受此限制。}} | ||
'''<code>$bonemerge</code>''' | '''<code>$bonemerge</code>'''还具有以下扩展用途: | ||
* 通常<sup>†</sup> | * 通常<sup>†</sup>可阻止[[studiomdl]]在模型编译时剔除骨骼。作为优化流程,studiomdl会尝试删除MDL文件中非必要的骨骼,主要针对两类情况:'''1)''' 无顶点权重的骨骼;'''2)''' 其顶点权重仅关联单一骨骼的情况。前者直接删除,后者则删除骨骼并将顶点权重转移至父骨骼。通过设置<code>$bonemerge</code>可强制保留这些骨骼。若为模型所有骨骼设置此标志,理论上<sup>†</sup>可确保完整骨骼结构保留在最终MDL中。 | ||
:{{note|<sup>†</sup> | :{{note|<sup>†</sup> 部分游戏(如{{gmod}})的studiomdl会无视<code>$bonemerge</code>标志,仍会强制剔除冗余骨骼。}} | ||
* | * 该标志是实现{{L|$proceduralbones#Driving_Flexes_with_Procedural_Bones|过程化控制面部表情}}的关键要素,相关过程化骨骼必须设置此标志方可生效。 | ||
* {{sfm}} | * {{sfm}}通常会在大纲视图和视口中隐藏{{L|$proceduralbones}}。为过程化骨骼设置此标志可强制显示。 | ||
== 语法 == | == 语法 == | ||
$bonemerge <骨骼名称> | $bonemerge <骨骼名称> | ||
== 在Notepad++ | == 在Notepad++中批量编写 == | ||
当前尚无自动化工具,但可通过正则表达式手动实现,耗时约两分钟。 | |||
{{tip| | {{tip|可将以下'''查找替换'''操作录制为Notepad++宏以便复用。}} | ||
# 在Notepad++ | # 在Notepad++中打开mesh.smd | ||
# | # 复制文件顶部的骨骼名称至新文件 | ||
# 按下'''Ctrl | # 按下'''Ctrl+H'''进入替换模式 | ||
# | # "查找目标"输入:<source>^\s*\d+\s*"(.+)"\s*-?\d+\s*$</source> | ||
# | # "替换为"输入:<source>$bonemerge "\1"</source> | ||
# | # 确保取消勾选'''". 匹配新行"''' | ||
# 点击''' | # 点击'''"全部替换"''' | ||
生成的内容可粘贴至QC文件或保存为QCI文件。 | |||
{{ACategory|QC Commands | {{ACategory|QC Commands}} |
Latest revision as of 04:24, 29 January 2025
$bonemerge
是一个QC命令,可在所有的 起源 游戏中使用。
该命令在指定骨骼上设置骨骼合并标志,用于提示游戏代码该骨骼将在游戏运行期间用于骨骼合并(参见Attachments )。若未设置此标志,骨骼仍可用于合并,但会触发性能警告。

$bonemerge
还具有以下扩展用途:
- 通常†可阻止studiomdl在模型编译时剔除骨骼。作为优化流程,studiomdl会尝试删除MDL文件中非必要的骨骼,主要针对两类情况:1) 无顶点权重的骨骼;2) 其顶点权重仅关联单一骨骼的情况。前者直接删除,后者则删除骨骼并将顶点权重转移至父骨骼。通过设置
$bonemerge
可强制保留这些骨骼。若为模型所有骨骼设置此标志,理论上†可确保完整骨骼结构保留在最终MDL中。
- 该标志是实现过程化控制面部表情 的关键要素,相关过程化骨骼必须设置此标志方可生效。
通常会在大纲视图和视口中隐藏$proceduralbones 。为过程化骨骼设置此标志可强制显示。
语法
$bonemerge <骨骼名称>
在Notepad++中批量编写
当前尚无自动化工具,但可通过正则表达式手动实现,耗时约两分钟。

- 在Notepad++中打开mesh.smd
- 复制文件顶部的骨骼名称至新文件
- 按下Ctrl+H进入替换模式
- "查找目标"输入:
^\s*\d+\s*"(.+)"\s*-?\d+\s*$
- "替换为"输入:
$bonemerge "\1"
- 确保取消勾选". 匹配新行"
- 点击"全部替换"
生成的内容可粘贴至QC文件或保存为QCI文件。