1
我正在做一個非常簡單的事情,我的目標是根據另一個骨架的位置移動一個骨架,爲此我基於HipCenter位置。 (這algoritm可能是錯誤的,這個問題是關於一個例外,在foreach循環ocurring)在更新Kinect關節位置時可以理解的異常
這裏是我的實際代碼:
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調試一切正常ultin在德第二遍foreach循環。 當我經過第二次在foreach我就在這行
skReturn.Joints[item] = movedJoint;
異常說一個例外:
JointType index value must match Joint.JointType
但價值actualy脊柱。
怎麼了?
你是否嘗試過通過索引引用'Joints'數組?我會嘗試明天啓動我的Kinect並測試循環,看看我是否也可以重現它。 –
謝謝你,但不用擔心,我找到了一個解決方案,稍後會編輯我的問題。無論如何謝謝 – Ewerton
嗨Ewerton,你可以請出版你的解決方案嗎?我在單元測試中遇到了同樣的問題,我想寫...... – Ingo