如何使用3D模型增加实时rgba流?

时间:2014-10-13 18:10:40

标签: c# xna kinect-sdk

我正在尝试使用XNA(即将3D模型添加到实时视频场景中)使用一些3D模型来增强来自Kinect传感器的实时RGBA流。

我成功地使用2D精灵(例如圆圈)来增强场景,但我无法添加3D对象(我认为对象存在但是由于视频纹理而隐藏)。如果我不绘制视频流,我可以看到3D对象,但是当我开始应用视频流时,对象就会消失。

1 个答案:

答案 0 :(得分:2)

在XNA中,2D和3D渲染调用的处理方式不同:

  • 不使用深度缓冲区执行2D渲染(看看此SO post
  • 默认情况下使用深度缓冲区执行3D渲染

因此,您要检查的是您要渲染的对象的z坐标是否正确:

如果3D模型的渲染像素比RGBD数据更远,则RGBD视频流会覆盖3D模型的像素,或者如果它们在RGBD数据之后渲染,则会立即丢弃它们。

尝试将整个RGBD数据从相机移开,看看您的3D模型是否出现。要实现此目的,只需增加数据的深度值即可。否则递减3D模型z坐标直到您可以看到它。请注意,这可能会导致3D模型在相机后面呈现。