我基本上想做的是,使用C#和Kinect SDK将骨架帧数据(关节位置)写入文件(完成),然后在外部处理这些数据(完成),再将数据读回我的应用程序(完成),并按逐帧方式绘制数据作为轻点步行者(骨架关节),以便看到动画效果。(问题)
我的问题是:如何使用C#(及其DrawingContext类)绘制这个30fps的动画?
我想使用DrawingContext,因为我已经在记录时使用它进行SkeletonFrames的实时输出。 这里的方法类似于“Skeleton Basics”SDK示例:
因此,Kinect使用事件以大约30fps为我提供帧,我只需绘制数据即可。
但是,如果没有Kinect而是从文件/内存中读取数据,我该如何绘制它?(目前使用2D数组[Frame,Joint])
我考虑运行一个线程以30fps的速度(使用sleep来实现帧率),然后发送类似的事件或直接绘制...但是我的尝试完全失败了。例如,我没有将事件发送到主线程进行绘制。
问题可能是我对C#的理解不足(我完全是新手)...
有什么提示可以让我如何设置并使其正常工作吗?
我的问题是:如何使用C#(及其DrawingContext类)绘制这个30fps的动画?
我想使用DrawingContext,因为我已经在记录时使用它进行SkeletonFrames的实时输出。 这里的方法类似于“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而是从文件/内存中读取数据,我该如何绘制它?(目前使用2D数组[Frame,Joint])
我考虑运行一个线程以30fps的速度(使用sleep来实现帧率),然后发送类似的事件或直接绘制...但是我的尝试完全失败了。例如,我没有将事件发送到主线程进行绘制。
问题可能是我对C#的理解不足(我完全是新手)...
有什么提示可以让我如何设置并使其正常工作吗?