这篇条目有关 Source引擎。如需详情,点击这里。

$bonemerge

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)中文 (zh)Translate (Translate)

$bonemerge是一个QC命令,可在所有的 起源 起源 游戏中使用。 该命令在指定骨骼上设置骨骼合并标志,用于提示游戏代码该骨骼将在游戏运行期间用于骨骼合并(参见Attachments(en))。若未设置此标志,骨骼仍可用于合并,但会触发性能警告。

Warning.png警告:对于无网格的纯动画模型,所有拟用于骨骼合并的骨骼必须设置此标志,否则将无法正确合并并导致形变。但通过$includemodel(en)引用外部动画模型的情况不受此限制。

$bonemerge还具有以下扩展用途:

  • 通常可阻止studiomdl在模型编译时剔除骨骼。作为优化流程,studiomdl会尝试删除MDL文件中非必要的骨骼,主要针对两类情况:1) 无顶点权重的骨骼;2) 其顶点权重仅关联单一骨骼的情况。前者直接删除,后者则删除骨骼并将顶点权重转移至父骨骼。通过设置$bonemerge可强制保留这些骨骼。若为模型所有骨骼设置此标志,理论上可确保完整骨骼结构保留在最终MDL中。
Note.png注意: 部分游戏(如Garry's Mod)的studiomdl会无视$bonemerge标志,仍会强制剔除冗余骨骼。
  • 该标志是实现过程化控制面部表情(en)的关键要素,相关过程化骨骼必须设置此标志方可生效。
  • 起源电影制作器通常会在大纲视图和视口中隐藏$proceduralbones(en)。为过程化骨骼设置此标志可强制显示。

语法

$bonemerge <骨骼名称>

在Notepad++中批量编写

当前尚无自动化工具,但可通过正则表达式手动实现,耗时约两分钟。

Tip.png提示:可将以下查找替换操作录制为Notepad++宏以便复用。
  1. 在Notepad++中打开mesh.smd
  2. 复制文件顶部的骨骼名称至新文件
  3. 按下Ctrl+H进入替换模式
  4. "查找目标"输入:
    ^\s*\d+\s*"(.+)"\s*-?\d+\s*$
  5. "替换为"输入:
    $bonemerge "\1"
  6. 确保取消勾选". 匹配新行"
  7. 点击"全部替换"

生成的内容可粘贴至QC文件或保存为QCI文件。