Table of Contents

Model node links

Beginner Artist

Note

In some versions of Stride, Model node links are called Bone links.

The model node link component attaches an entity to a node of a skeleton on another entity.

For example, imagine you have two models: a knight, and a sword. The character has a sword swinging animation. You can use a model link node to place the sword in the knight's hand and attach it to the correct node in the knight skeleton, so the sword swings with the knight animation.

  1. In the Scene Editor, select the entity you want to link to a node in another entity.

  2. In the Property Grid, click Add component and select Model node link.

    Add component

    Game Studio adds a model node link component to the entity.

    Model node link component

    The component only has two properties: Node name and Target.

  3. Next to Target, click Hand icon.

    The Select an entity window opens.

    Select an entity

  4. Select the model you want to link the entity to and click OK.

    Note

    The entity you link to must have a model with a skeleton, even if the model isn't visible at runtime.

    Tip

    If you don't specify a model, Stride links the entity to the model on the parent entity.

  5. In Node name, select the node in the model you want to attach this entity to.

    Select node

    After you link the node, the Entity Tree shows the link in blue next to the entity name.

    Model node link

Offset

To add an offset to the linked entity, use the entity's TransformComponent.

Transform

Note

If you don't want to add an offset, make sure the values are all set to 0,0,0.

Example script

This script demonstrates how to link one entity (such as a SwordModel) to a specific bone (weapon_bone_R) in another entity's skeleton hierarchy (in this case, the mannequinModel) using Stride's ModelNodeLinkComponent.

public class BoneLink : StartupScript
{
    // This example assumes you've created a project with the default Stride models
    // "mannequinModel" and "SwordModel." Add them from the "Assets/Models" folder to your scene,
    // and then attach this script to the "SwordModel" entity

    ModelNodeLinkComponent boneLink;

    public override void Start()
    {
        // Initialize the script
        // Here we locate the entity named "mannequinModel" by searching the root scene's entities
        Entity owner = SceneSystem.SceneInstance.RootScene.Entities.Where(e => e.Name == "mannequinModel").Single();

        boneLink = new ModelNodeLinkComponent
        {
             // This is the ModelComponent on the target entity (mannequinModel)
            Target = owner.Get<ModelComponent>(),

            // We set a "hard link" to Nodes[70], which corresponds to "weapon_bone_R"
            // in the target's skeleton hierarchy
            NodeName = owner.Get<ModelComponent>().Model.Skeleton.Nodes[70].Name
        };

        // Finally, add this link component to our current (SwordModel) entity
        base.Entity.Components.Add(boneLink);
    }
}

See also

For examples of how model node links are used, see: