Kinect操纵骨架数据

Sai*_*ait 5 .net c# kinect

我有一个Skeleton skeleton来自这个SkeletonFrameReady活动.而且我有一个在窗户上绘制骷髅的功能,

void DrawSkeleton(Skeleton s),
Run Code Online (Sandbox Code Playgroud)

它以Skeleton作为输入,并将骨架的2D图像绘制到我的窗口.

现在,我想改变右手的x和y值,并使用相同的函数在窗口上绘制它void DrawSkeleton(Skeleton s).

但是,当我尝试做类似的事情时:

skeleton.Joints[JointType.HandRight].Position.X = 3;
Run Code Online (Sandbox Code Playgroud)

它不允许我这样做:

无法修改'Microsoft.Kinect.Joint.Position'的返回值,因为它不是变量.

这可能是因为Position它不是一个变量,是一个属性.

题:

如何复制Skeleton对象并更改该对象上PositionJoints 值.

Yoe*_*eri 5

是的你可以.

您只需创建一个新的Position对象并覆盖您喜欢的位置.

var movedPosition = new SkeletonPoint
{
    X = (float)(mouseJoint.Position.X - 0.4),
    Y = (float)(mouseJoint.Position.Y - 0.3)
};

var movedJoint = new Joint
{
    Position = movedPosition
};
Run Code Online (Sandbox Code Playgroud)

这是一个实际项目的例子,我们想要修正手的位置来调整鼠标而不实际修改骨架