【发布时间】:2012-11-28 06:30:17
【问题描述】:
我正在做一个非常简单的事情,我的目标是根据另一个骨架的位置移动一个骨架,为此我基于 HipCenter 位置。 (这个算法可能是错误的,这个问题是关于foreach循环中发生的异常)
这是我的实际代码:
public static Skeleton MoveTo(this Skeleton skOrigin, Skeleton skDestiny)
{
Skeleton skReturn = skOrigin; // just making a copy
// find the factor to move, based on the HipCenter.
float whatToMultiplyX = skOrigin.Joints[JointType.HipCenter].Position.X / skDestiny.Joints[JointType.HipCenter].Position.X;
float whatToMultiplyY = skOrigin.Joints[JointType.HipCenter].Position.Y / skDestiny.Joints[JointType.HipCenter].Position.Y;
float whatToMultiplyZ = skOrigin.Joints[JointType.HipCenter].Position.Z / skDestiny.Joints[JointType.HipCenter].Position.Z;
SkeletonPoint movedPosition = new SkeletonPoint();
Joint movedJoint = new Joint();
foreach (JointType item in Enum.GetValues(typeof(JointType)))
{
// Updating the position
movedPosition.X = skOrigin.Joints[item].Position.X * whatToMultiplyX;
movedPosition.Y = skOrigin.Joints[item].Position.Y * whatToMultiplyY;
movedPosition.Z = skOrigin.Joints[item].Position.Z * whatToMultiplyZ;
// Setting the updated position to the skeleton that will be returned.
movedJoint.Position = movedPosition;
skReturn.Joints[item] = movedJoint;
}
return skReturn;
}
使用 F10 调试一切正常,直到 foreach 循环的第二遍。 当我第二次在 foreach 中通过时,我在这一行得到一个异常
skReturn.Joints[item] = movedJoint;
异常说:
JointType index value must match Joint.JointType
但价值实际上是 Spine。
怎么了?
【问题讨论】:
-
您是否尝试过按索引引用
Joints数组?明天我会尝试启动我的 Kinect 并测试循环,看看我是否也可以重现它。 -
谢谢,但别担心,我会找到解决方案,稍后会编辑我的问题。还是谢谢
-
嗨,Ewerton,您能发布您的解决方案吗?我在想写的单元测试中遇到了同样的问题......
-
@Ingo 看,抱歉迟到了。这里是
标签: kinect kinect-sdk