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

$bonemerge

From Valve Developer Community
< Zh
Revision as of 04:22, 29 January 2025 by MoRanYue (talk | contribs) (deepseek translation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
English (en)中文 (zh)Translate (Translate)

$bonemerge是一个QC命令,可在所有的 起源 起源 游戏中使用。 它用于在指定骨骼上设置`$bonemerge`标志,作为对游戏代码的提示,表明该骨骼将在游戏中被用于骨骼合并(参见Attachments(en))。如果未设置此标志,骨骼仍可用于合并,但会收到性能警告。

Warning.png警告:对于没有网格的模型(即仅包含动画的模型),任何计划用于骨骼合并的骨骼都必须设置此标志,否则合并将失败并导致变形。然而,如果外部模型通过包含(en)了动画,则此问题不适用。

$bonemerge 还有以下几种替代用途:

  • 通常可以防止studiomdl在模型编译期间折叠骨骼。作为优化过程的一部分,`studiomdl`会尝试从输出的MDL(en)文件中剔除非必需的骨骼。主要目标是以下两类骨骼:1) 没有顶点权重分配的骨骼,以及 2) 其顶点权重仅分配给它自身的骨骼。未使用的骨骼会被直接移除,而在后一种情况下,骨骼会被删除,其顶点权重会转移到其父骨骼上。通过在这些骨骼上设置`$bonemerge`,可以强制`studiomdl`将它们保留在输出的MDL文件中。在模型骨架的每个骨骼上设置`$bonemerge`,可能会确保整个骨架在引擎中可用。
Note.png注意: 对于某些游戏(如Garry's Mod),`studiomdl`会忽略`$bonemerge`标志,并强制折叠不必要的骨骼。
  • `$bonemerge`标志是程序化驱动表情(en)的关键组成部分。程序化骨骼必须设置`$bonemerge`标志,才能使该技术生效。
  • 起源电影制作器 SFM通常会在大纲视图和视口中隐藏$proceduralbones(en)。在程序化骨骼上设置`$bonemerge`可以强制SFM始终显示它们。

语法

$bonemerge <骨骼名称>

在Notepad++中编写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文件。