1

色と深度のストリームを使用して、自分の画像を取得し、その位置をスケーリングして変更することができました。しかし、Skeleton データには同じことができませんでした。私がやりたいのは、スケルトンをスケールして画像に配置し、Gus マスクを頭に配置し、バレーボールを手に適切なサイズで配置できるようにすることです。スケルトンに同じことを行うにはどうすればよいですか?

これは、画像をスケーリングして配置した行です。

spriteBatch.Draw(activeSkeletons[p.Key].image, position1, activeSkeletons[p.Key].image.Bounds, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);

描画機能:

private void DrawSkeleton(SpriteBatch spriteBatch, Vector2 resolution, Texture2D img)
{

    foreach (KeyValuePair<int, Player> p in activeSkeletons)
    {
        if (activeSkeletons[p.Key].image != null)
        {
            if (p.Key == indexes[0])
            {
                //Drawing the image - first player
                spriteBatch.Draw(activeSkeletons[p.Key].image, position1, activeSkeletons[p.Key].image.Bounds, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
            }
            else {
                //Drawing the image - second player
                spriteBatch.Draw(activeSkeletons[p.Key].image, position2, activeSkeletons[p.Key].image.Bounds, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
            }
        }

        foreach (Joint joint in p.Value.skeleton.Joints)
        {
            if (joint.TrackingState == JointTrackingState.Tracked)
            {
                //Drawing the skeleton
                var colorPoint = kinect.CoordinateMapper.MapSkeletonPointToColorPoint(joint.Position, kinect.ColorStream.Format);
                spriteBatch.Draw(img, new Rectangle(Convert.ToInt32(colorPoint.X), Convert.ToInt32(colorPoint.Y), 10, 10), Color.White);
                if (joint.JointType == JointType.HandRight && joint.TrackingState == JointTrackingState.Tracked)
                {
                    //Volleyball
                    dopKonum = new Vector2(colorPoint.X - dop.Width / 2, colorPoint.Y - dop.Height / 2);
                    spriteBatch.Draw(dop, dopKonum, Color.White);
                }
                else if (joint.JointType == JointType.Head && joint.TrackingState != JointTrackingState.NotTracked)
                {
                    //Gus Fring
                    gusKonum = new Vector2(colorPoint.X - gus.Width / 2, colorPoint.Y - gus.Height / 2);
                    spriteBatch.Draw(gus, gusKonum, Color.White);
                }
            }
        }
    }
}

そして、これはそれがどのように見えるかです:

キネクト

うまく説明できれば幸いです。

4

0 に答える 0