Unity+Kinect骨骼绑定方法及问题解决

发表于2019-03-22
评论0 7.6k浏览
本篇文章只给大家简单的说下骨骼绑定的方法,及在做骨骼绑定时遇到的问题。

首先介绍一下骨骼绑定的第一种方法:

导入模型,在其上添加两个脚本,KinectManager 和AvatarController,骨骼就绑定了,它就能跟随你一起做动作了。

如果大家发现不能跟着一起做动作,排除掉是模型问题后,可以检查下 Generic 类型的模型,如果拿到模型是人形的骨骼,一定要转成 Humanoid 类型。


骨骼绑定的第二种方法:

导入模型,在其上添加两个脚本,KinectManager 和AvatarControllerClassic,将对应的模型关节点拖入到AvatarControllerClassic 脚本内赋值,如果你不想要它移动,你只需要把它的脚的关节都不给它赋值。

2. 新建一个对象OffsetNode ,添加脚本组件 OffsetNodeMover,代码放文章最下面:

3. 运行看一下,这个时候模型的除了脚都会跟随人做动作,且你移动位置,模型是不会跟随你一起移动的,当你拖动OffsetNode 时,模型也会跟着你一起移动。

代码如下:
OffsetNodeMover.cs
using UnityEngine;
using System.Collections;
public class OffsetNodeMover : MonoBehaviour 
{
    [Tooltip("Speed at which the offset node will move through the scene.")]
    public float moveSpeed = 1f;
    [Tooltip("Smooth factor used for offset node movements.")]
    public float smoothFactor = 1f;
    void Update () 
    {
        float h = Input.GetAxis ("Horizontal");
        float v = Input.GetAxis ("Vertical");
        if (h != 0f || v != 0f) 
        {
            Vector3 vMoveStep = new Vector3 (h * moveSpeed, 0f, v * moveSpeed);
            Vector3 vMoveTo = transform.position + vMoveStep;
            transform.position = Vector3.Lerp (transform.position, vMoveTo, Time.deltaTime * smoothFactor);
        }
    }
}

看完本篇内容,相信现在大家能掌握Kinect骨骼绑定的这两种方法了吧,希望对大家有帮助。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引