0
我有這個代碼的問題。Kinect SDK:骨架閃爍
當我使用MoveTo
時,我的骨架在屏幕上滑動。我已經對原代碼(here)一些小的變化:
- 鎖定骨骼位置到一個特定的Z位置
- 增長水平速度(X)
我使用XNA 4.0和我打電話該成員進入Draw「回調」。
所以,問題是:爲什麼骨骼輕彈?
private Skeleton MoveTo2(Skeleton skToBeMoved) {
Joint newJoint = new Joint();
///Based on the HipCenter
float howMuchMoveToX = ((skToBeMoved.Joints[JointType.HipCenter].Position.X - settings_skel_offset_x) * -1) * settings_skel_offset_x_mult;
float howMuchMoveToY = (skToBeMoved.Joints[JointType.HipCenter].Position.Y - settings_skel_offset_y) * -1;
float howMuchMoveToZ = (skToBeMoved.Joints[JointType.HipCenter].Position.Z - settings_skel_offset_z) * -1;
foreach (JointType item in Enum.GetValues(typeof(JointType)))
{
newJoint = skToBeMoved.Joints[item];
SkeletonPoint pos = new SkeletonPoint()
{
X = (float)(newJoint.Position.X + (howMuchMoveToX)),
Y = (float)(newJoint.Position.Y + (howMuchMoveToY)),
Z = (float)(newJoint.Position.Z + (howMuchMoveToZ)),
};
if (XnaBasics.settings_skel_lock_z)
{
pos.Z = settings_skel_offset_z;
}
newJoint.Position = pos;
Debug.WriteLine("SkelID: "+skToBeMoved.TrackingId+ " howMuchMoveToX: " + howMuchMoveToX + " oldPosX: " + skToBeMoved.Joints[item].Position.X + " newPosX: " + newJoint.Position.X);
skToBeMoved.Joints[item] = newJoint;
}
return skToBeMoved;
}