KinectAPI翻译以及知识

来源:互联网 发布:c语言结构体定义 编辑:程序博客网 时间:2024/06/05 03:19

Kinect入门帮助
如何运行示例
1 下载并安装Kinect v2 SDK,详情将在下一节中描述。
2 打开场景“KinectAvatarsDemo”,位于Assets/AvatarsDemo文件夹
3 运行场景。移动身体来观察两个Avatar(正常和镜像)以及CubeMan是如何反映你的动作的
4 使用你的左右手来控制屏幕上的手型光标。
5 尝试多个内置的手势,并确保他们能被正确的检测到。
6 关闭场景,将KinectManager的属性 ‘Compute User Map’ 和 ‘Display User Map’置为可用状态,重新开启场景
7 打开并运行“KinectGesturesDemo”场景,位于/ GesturesDemo文件夹。使用手向左或者向右挥表示将立方体向左或者向右转动。
8 打开并运行“KinectInteractionDemo”场景,位于/ InteractionDemo文件夹。试着用手去抓住并拖拽一个屏幕上的物体,再释放这个物体。

安装Kinect v2 SDK
1 下载Kinect为Windows SDK 2.0。
2 运行安装程序。
3 连接Kinect v2传感器。所需的驱动程序将会自动安装。

为什么场景中需要两个Avatar对象?
场景中两个阿凡达的意义在于你可以同时展示你的镜像和非镜像运动。
首先,你能有一个Avatar反映你的镜像运动。在这个例子中就是你正面临的那个。这个Avatar的父物体是一个被名为’UCharCtrlFront’在Y轴上旋转了180°的空物体。同时,Avatar的游戏物体CharacterFront’上的AvatarController组件的’Mirrored Movement’参数处于可用状态。镜像就是你伸左手时他伸的右手,就像照镜子一样。
第二个阿Avatar不是镜像,他是背对着你的。和你的动作完全一样。你的左边同时也是他的左边。换种方式看,你是背对着场景的主相机。控制的对象是’UCharCtrlBack’,他的Y轴旋转量为0,AvatarController的’Mirrored Movement’参数是禁用状态。

为了在场景中得到正确的Avatar的位置和运动,总是创建一个空的游戏对象作为Avatar的父物体。根据需要设置这个空物体的Y轴旋转量。然后将Avatar局部的position和rotation都置为0,你就可以通过移动和旋转来控制你的avatar的运动了。记得注意你Avatar上AvatarController组件的’Mirrored Movement’参数。

如何重用Kinect-Example在你的项目里
1 复制文件夹的KinectScripts资料文件夹的项目的资料文件夹的例子。这个文件夹包含所有需要的脚本和可选的过滤器。
2 复制文件夹“Resources”和“Standard Assets’’文件夹的项目的资料文件夹的例子。这些文件夹包含所需的库,包装类和资源。
3 等待Unity检测和编译新的资源和脚本。
4 添加“AvatarController”脚本到场景中的每个你需要控制的Avatar上
5 通过拖拽将Avatar的骨骼结点和AvatarController’脚本上的joint相对应(2.8以上版本似乎不需要)
5 看你是否需要镜像Avatar,如果需要,勾选‘Mirrored Movement’参数
6 添加KinectManager脚本到MainCamera。如果您使用多台摄像机,就创建一个空物体
7 将所有Avatar的物体拖拽到KinectManager的‘Avatar Controllers’列表中(2.8以上版本似乎也不需要)
8 如果你要看深度图像,你可以开启‘Compute User Map’ 和 ‘Display User Map’参数;如果你想看色彩图像,开启‘Compute Color Map’ 和 ‘Display Color Map’参数;看骨骼追踪效果可以开启‘Display Skeleton Lines’参数
使计算用户地图和地图显示用户的参数,如果你想看到user-depth地图在屏幕上。使“计算彩色地图”和“显示彩色地图”参数,如果你想看彩色摄像机图像在屏幕上。使显示骨架线的参数,如果你想看看Kinect跟踪user-depth地图上的骨架。
9 你可以在你的脚本中使用“KinectManager”的公有方法。作为示例,请参阅“GestureListener.cs”和“PresentationScript.cs

2.API函数翻译
1.计算关节的方位
private void CalculateJointOrients(ref KinectInterop.BodyData bodyData)
2.获取动作索引
public int GetJointIndex(KinectInterop.JointType joint)
3.获取给定关节的父节点
public KinectInterop.JointType GetParentJoint(KinectInterop.JointType joint)
4.检测到用户数目
public int GetUsersCount()
5.获取用户体数据(仅用于内部目的)。
internal KinectInterop.BodyData GetUserBodyData(Int64 userId)
6.获取用户的相对位置,在靠近传感器米。
public Vector3 GetUserPosition(Int64 userId)
7.得到用户的旋转
public Quaternion GetUserOrientation(Int64 userId, bool flip)
8.得到跟踪的关节
public KinectInterop.TrackingState GetJointTrackingState(Int64 userId, int joint)
9.确定给定用户的给定连接是否被跟踪。
public bool IsJointTracked(Int64 userId, int joint)
10.Kinect中关节的位置,以米为单位
public Vector3 GetJointKinectPosition(Int64 userId, int joint)
11.得到关节位置,以米为单位
public Vector3 GetJointPosition(Int64 userId, int joint)
12.获取指定用户与翻转坐标关节位置,在米。
public Vector3 GetJointPositionFlipX(Int64 userId, int joint)
13.得到指定用户的关节速度,以米/秒
public Vector3 GetJointVelocity(Int64 userId, int joint)
14.获得相对于父节点的指定用户的关节方向
public Vector3 GetJointDirection(Int64 userId, int joint, bool flipX, bool flipZ)
15.获取指定用户的给定关节之间的方向。
public Vector3 GetDirectionBetweenJoints(Int64 userId, int firstJoint, int secondJoint, bool flipX, bool flipZ)
16.得到关节的旋转角度
public Quaternion GetJointOrientation(Int64 userId, int joint, bool flip)
17.在给定关节处获取骨头之间的角度。
public float GetAngleAtJoint(Int64 userId, int joint)
18.获取给定关节在深度图像上的三维重叠位置。
public Vector3 GetJointPosDepthOverlay(Int64 userId, int joint, Camera camera, Rect imageRect)
19.获取给定关节在彩色图像上的三维重叠位置。
public Vector3 GetJointPosColorOverlay(Int64 userId, int joint, Camera camera, Rect imageRect)
20.获取深度贴图纹理上的关节位置。
public Vector2 GetJointDepthMapPos(Int64 userId, int joint)

3骨骼翻译
hip 臀部
spine 脊柱
shoulder 肩膀
neck 脖子
clavicle 锁骨
elbow 肘部
hand 手
thumb 拇指
fingers 手指
knee 膝盖
foot 脚
body 身体

原创粉丝点击