我正在尝试检测骷髅的肩部位置。我使用以下代码获取骨架中心位置并在其上放置Cloth图像。我面临的问题是它没有将Cloth图像放在Skeleton的中心,我必须添加更多的值才能将Cloth放在骨架的中心。
问题尚未完成。添加一些值后,它在我的身体上工作正常。我是5' 6",但是如果一个6英尺的骨架进来,布料图像不会到达它的中心,我必须为SKeletonCenter Value添加更多值,以便将布料图像完美地放在6英尺上骨架。在添加这些值之后,它就不会在5' 6"骨架。
因为我必须为不同的骨架添加不同的值,这非常烦人且实际上不可能。
我知道我在获取骷髅中心位置时做错了,请告诉我一个合适的方法。
origin = new Vector2(currentShirt.Width / 2,0);
if (shoulderCenter.TrackingState == JointTrackingState.Tracked)
{
//SHOULDER Center
shoulderCenterPos = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(shoulderCenter.Position, DepthImageFormat.Resolution640x480Fps30);
shirtXposition = shoulderCenterPos.X;// -180;
shirtYposition = shoulderCenterPos.Y;// +20;
}
//Draw Method
//If i dont add these values in ShirtXposition and ShirtYPosition it would place shirt somewhere in the top.
//CustomShirtWidth=300
//CustomShirtHeight= 550
spriteBatch.Draw(currentShirt, new Rectangle((int)(shirtXposition)-90, (int)(shirtYposition)+240, (int)(customShirtWidth), (int)(customShirtHeight)),Color.White);
修改 //对于高度和宽度我正在使用它。 这个问题是,它不断改变图像的大小,当我将它分配给一个常量变量时,它会给我一个错误信息。
DepthImagePoint rightShoulderPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(rightShoulder.Position, DepthImageFormat.Resolution640x480Fps30);
DepthImagePoint leftShoulderPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(leftShoulder.Position, DepthImageFormat.Resolution640x480Fps30);
float totalWidth = rightShoulderPt.X - leftShoulderPt.X;
float totalHeight = Head.Position.Y - hipsCenter.Position.Y;