Table of Contents

模型节点链接

初级 美术人员

Note

在某些版本的 Stride 中,模型节点链接(Model node links)被称为骨骼链接(Bone links)。

模型节点链接组件用于将实体附加到另一个实体上骨架的某个节点。

例如,假设有两个模型:一个骑士和一把剑。角色有挥剑动画。你可以使用模型节点链接将剑放置在骑士手中,并附加到骑士骨架的正确节点上,这样剑就会随骑士的动画一起挥动。

设置模型节点链接组件

  1. 在场景编辑器中,选择要链接到另一个实体节点的实体。

  2. 在属性网格中,点击添加组件并选择模型节点链接。

    添加组件

    Game Studio 会为该实体添加一个模型节点链接组件。

    模型节点链接组件

    该组件只有两个属性:节点名称(Node name)和目标(Target)。

  3. 在 Target 旁边,点击 手形图标。

    选择实体窗口将打开。

    选择实体

  4. 选择要将实体链接到的模型,点击确定。

    Note

    链接的目标实体必须具有带骨架的模型,即使该模型在运行时不可见。

    Tip

    如果未指定模型,Stride 会将实体链接到父级实体上的模型。

  5. 在 Node name 中,选择模型中要将此实体附加到的节点。

    选择节点

    链接节点后,实体树会在实体名称旁边以蓝色显示该链接。

    模型节点链接

偏移

要为已链接的实体添加偏移,请使用实体的 TransformComponent。

Transform

Note

如果不想添加偏移,请确保所有值都设置为 0,0,0。

脚本示例

此脚本演示如何使用 Stride 的 ModelNodeLinkComponent,将一个实体(如 SwordModel)链接到另一个实体骨架层级中的特定骨骼(weapon_bone_R,本例中为 mannequinModel)。

public class BoneLink : StartupScript
{
    // 此示例假定你已创建了一个使用 Stride 默认模型
    // "mannequinModel" 和 "SwordModel" 的项目。从 "Assets/Models" 文件夹将它们添加到场景中,
    // 然后将此脚本附加到 "SwordModel" 实体上

    ModelNodeLinkComponent boneLink;

    public override void Start()
    {
        // 初始化脚本
        // 这里我们通过搜索根场景的实体来定位名为 "mannequinModel" 的实体
        Entity owner = SceneSystem.SceneInstance.RootScene.Entities.Where(e => e.Name == "mannequinModel").Single();

        boneLink = new ModelNodeLinkComponent
        {
             // 这是目标实体(mannequinModel)上的 ModelComponent
            Target = owner.Get<ModelComponent>(),

            // 我们设置一个"硬链接"到 Nodes[70],
            // 它对应目标骨架层级中的 "weapon_bone_R"
            NodeName = owner.Get<ModelComponent>().Model.Skeleton.Nodes[70].Name
        };

        // 最后,将此链接组件添加到我们当前的(SwordModel)实体
        base.Entity.Components.Add(boneLink);
    }
}

另请参阅

有关模型节点链接用法的示例,请参见: