Unity+Kinect骨骼绑定方法及问题解决
发表于2019-03-22
本篇文章只给大家简单的说下骨骼绑定的方法,及在做骨骼绑定时遇到的问题。
首先介绍一下骨骼绑定的第一种方法:
导入模型,在其上添加两个脚本,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骨骼绑定的这两种方法了吧,希望对大家有帮助。