我正在制作 3d 图形编辑器,它将用于Kinect
屏幕导航。
我需要制作自己的光标,它将通过 Kinect 从右手获取轴 x 和轴 y 坐标,将其翻译到计算机屏幕并将光标移动到该位置。
我真正的问题是,我还需要来自深度传感器的坐标才能获得 z 轴上的坐标。任何帮助将不胜感激。应用程序是C#
用官方开发的MS Kinect SDK
。
例如,如果右手将移动光标,您可以获得右手的坐标,将其转换为颜色坐标并将鼠标放在所需的坐标处。
首先,声明你的骨架数组和坐标映射器实例私有 Skeleton[] 骨架;私人 CoordinateMapper cm = new CoordinateMapper();
在 AllFramesReady 或 SkeletonFrameready 事件句柄中,您可以执行以下操作:
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
if (skeletonFrame == null)
return;
if (skeletons == null || skeletons.Length != skeletonFrame.SkeletonArrayLength)
{
skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
}
skeletonFrame.CopySkeletonDataTo(skeletons);
if (skeletons.All(s => s.TrackingState == SkeletonTrackingState.NotTracked))
return;
Skeleton firstTrackedSkeleton = skeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked).FirstOrDefault();
CoordinateMapper cm = new CoordinateMapper(YourKinectSensor);
ColorImagePoint colorPoint = cm.MapSkeletonPointToColorPoint(first.Joints[JointType.HandRight].Position, ColorImageFormat.RgbResolution640x480Fps30);
//Here the variable colorPoint have the X and Y values that you need to position your cursor.
}
这是基础知识,对于更详细的示例,我建议您查看 sdk 附带的示例。