.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_a 和 turret_b 模型添加到 tank_body 生成的骨架中,将它们链接到 bone_turret。此外,我们将枪 gun_a 和 gun_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:"
}
}
}
}
此结构允许进行广泛的自定义,同时通过使用前缀来避免命名冲突并确保适当的层次结构,从而保持可管理性。