.skeleton.blk

.skeleton.blk的目的

复合模型由共享公共骨架的多个动态模型构成。以下是为复合模型创建 .skeleton.blk文件的规则。

示例

让我们以拥有各种炮塔和火炮选项的坦克为例来分解配置。

name:t="tank_body.lod00.dag"
attachSubSkel{
  attach_to:t="bone_turret"
  skel_file:t="turret_a.lod00.dag"
  skel_node:t="bone_turret"
  attachSubSkel{
    attach_to:t="bone_gun_a"
    skel_file:t="gun_a.lod00.dag"
    skel_node:t="bone_gun_a"
  }
  attachSubSkel{
    attach_to:t="bone_gun_b"
    skel_file:t="gun_b.lod00.dag"
    skel_node:t="bone_gun_b"
    add_prefix:t="G1:"
  }
  attachSubSkel{
    attach_to:t="bone_gun_c"
    skel_file:t="gun_b.lod00.dag"
    skel_node:t="bone_gun_b"
    add_prefix:t="G2:"
  }
}
attachSubSkel{
  attach_to:t="bone_turret"
  skel_file:t="turret_b.lod00.dag"
  skel_node:t="bone_turret"
  add_prefix:t="T1:"
}

参数详情

  • name:t=: 父模型的名称。

  • attachSubSkel: 用于添加动态模型的模块。

    • attach_to:t=: 动态模型链接到的父骨骼中的节点。

    • skel_file:t=: 子模型的名称。

    • skel_node:t=: 子骨架中链接到父骨架的节点。

    • add_prefix:t=: 子模型的所有节点的前缀。

解释

在上面的.skeleton.blk 示例中,我们将 turret_aturret_b 模型添加到 tank_body 生成的骨架中,将它们链接到 bone_turret。此外,我们将枪 gun_agun_b 连接到turret_a的节点 ‘bone_gun_a’、’bone_gun_b’ 和 ‘bone_gun_c’ 上,’gun_b’ 被连接到不同的骨骼两次。

由于我们正在创建一个通用骨架,因此不能有具有相同名称的节点。为了解决这个问题,我们为每个副本的节点分配一个唯一的前缀。例如,“bone_gun_b”的两个副本的节点接收前缀“G1”和“G2”,而“turret_b”的节点接收前缀“T1”。

Important

  • 指定附件节点时,不考虑自动添加的前缀。

  • 如果子节点链接到同名节点,则会从层次结构中删除前一个节点以避免重复。

分层依赖关系

虽然可以创建长依赖关系链,但更简单的结构更容易管理。在添加另一个级别之前,请确保其必要性。

多级层次结构可能如下所示:

name:t="papa.lod00.dag"
attachSubSkel{
  attach_to:t="bone_papa"
  skel_file:t="child.lod00.dag"
  skel_node:t="bone_child"
  add_prefix:t="layer01:"
  attachSubSkel{
    attach_to:t="bone_child"
    skel_file:t="child.lod00.dag"
    skel_node:t="bone_child"
    add_prefix:t="layer02:"
    attachSubSkel{
      attach_to:t="bone_child"
      skel_file:t="child.lod00.dag"
      skel_node:t="bone_child"
      add_prefix:t="layer03:"
      attachSubSkel{
        attach_to:t="bone_child"
        skel_file:t="child.lod00.dag"
        skel_node:t="bone_child"
        add_prefix:t="layer04:"
      }
    }
  }
}

此结构允许进行广泛的自定义,同时通过使用前缀来避免命名冲突并确保适当的层次结构,从而保持可管理性。