私が基本的にやろうとしているのは、C#とKinect SDKを使用してkinectスケルトンフレームデータ(ジョイント位置)をファイルに書き込み(完了)、このデータを外部で処理(完了)してから、データをアプリケーションに読み戻す(完了)ライトポイントウォーカー(スケルトンジョイント)としてフレームごとにデータを描画するので、アニメーションが表示されます。(問題)
私の質問は、C#(およびそのDrawingContextクラス)を使用してこの30fpsアニメーションを描画するにはどうすればよいですか?
レコーディング中にすでにSkeletonFramesのライブ出力に使用しているため、DrawingContextを使用したかったのです。そこでは、「Skeleton Basics」SDKの例と同様に、次のように簡単に実行されます。
this.sensor.SkeletonFrameReady += this.SensorSkeletonFrameReady;
...
private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
...
using (DrawingContext dc = this.drawingGroup.Open())
{
...
dc.DrawEllipse(drawBrush, null, 2Dpoint, JointThickness, JointThickness);
}
}
したがって、kinectは約でフレームを提供してくれます。イベントを使用して30fpsで、データを描画するだけです。
しかし、kinectがなく、データがファイル/メモリから読み取られる場合、どうすれば描画できますか?(現在、2DArray [フレーム、ジョイント]を使用しています)
スレッドを30fpsで実行することを考えました(フレームレートを達成するためにスリープを使用)。その後、同様のイベントを送信するか、直接描画します。しかし、これを機能させる試みは完全に失敗しました。たとえば、描画のためにイベントがメインスレッドに送信されませんでした。
問題は、C#を理解していないことかもしれません(私はまったく新しいです)...
これを設定して機能させる方法についてのヒントはありますか?