ユーザーの右手で作成された円を認識するロジックを開発しようとしています。サンプルコードからスケルトンを描画して追跡するコードを取得しました。
private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
Skeleton[] skeletons = new Skeleton[0];
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
if (skeletonFrame != null)
{
skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
skeletonFrame.CopySkeletonDataTo(skeletons);
}
}
using (DrawingContext dc = this.drawingGroup.Open())
{
// Draw a transparent background to set the render size
dc.DrawRectangle(Brushes.Black, null, new Rect(0.0, 0.0, RenderWidth, RenderHeight));
if (skeletons.Length != 0)
{
foreach (Skeleton skel in skeletons)
{
RenderClippedEdges(skel, dc);
if (skel.TrackingState == SkeletonTrackingState.Tracked)
{
this.DrawBonesAndJoints(skel, dc);
}
else if (skel.TrackingState == SkeletonTrackingState.PositionOnly)
{
dc.DrawEllipse(
this.centerPointBrush,
null,
this.SkeletonPointToScreen(skel.Position),
BodyCenterThickness,
BodyCenterThickness);
}
}
}
// prevent drawing outside of our render area
this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, RenderWidth, RenderHeight));
}
}
私が今やりたいのは、ジェスチャ認識のためにユーザーの右手の座標を追跡することです。
これが私が仕事を成し遂げることを計画している方法です:
- ジェスチャーを開始します
- 丸で囲んだジェスチャを描画します。開始の座標を保存してから、開始からジョイントが45度シフトするたびに座標を記録します。8オクタントの場合、8つのサンプルを取得します。
- 円が描かれたことを決定するために、8つのサンプル間の関係を確認することができます。
また、深度画像では、描画されたジェスチャの軌跡を表示したいので、ハンドポイントが移動すると痕跡が残り、最後にユーザーが描画した図が表示されます。これを実現する方法がわかりません。