桌面增强现实应用程序的3D模型操作

时间:2011-10-14 16:34:17

标签: opengl 3d simulation augmented-reality

我正在开发一个增强现实项目,该项目使用多个标记来获取我计划叠加的3D模型的位置。 (我正在使用OpenCV从头开始这样做,我没有使用ARToolkit或任何其他现成的标记检测库)。

环境:Visual C ++ 2008,Windows 7,Core2Duo 1GB内存,OpenCV 2.3

我希望用户可以操作3D模型,这样就可以进行某种模拟。

为此,我打算使用OpenGL。你有什么建议,建议?仿真部分可以使用OpenGL本身完成,还是需要使用OpenSceneGraph / ODE / Unity 3D / Ogre 3D?

如果我可以生产更多自编码系统而不是使用现成的产品,那么这对于学术项目来说会更好。

1 个答案:

答案 0 :(得分:2)

看起来OpenGL足以满足您的需求(绘制具有特定颜色和大小的模型)。

如果您是OpenGL的新手,并且您不打算将其用于未来的项目,那么使用旧的固定功能管道可能会更容易,该管道已经准备好了照明和色彩系统并且没有要求你学习如何编写着色器。

对于您的项目,您将需要一个纹理,您可以使用glTexSubImage2D()从相机复制图像,然后将其绘制为背景(或者您可以使用glDrawPixels()以防您不需要任何缩放) 。之后,您需要拥有模型,并配有法线照明。模型可以是例如。从Blender或3DS Max导出为ascii格式,这很容易解析。然后你可以绘制模型。在绘制模型之前,可以使用glColor3f()更改颜色(确保在绘制模型时不指定不同的颜色)。使用矩阵完成模型的定位。旧的OpenGL具有一些方便易用的功能,可用于旋转和翻译对象。还有用于缩放对象的功能(改变大小),因此很容易实现。你需要的只是找出相对于标记的相机位置(我认为它是在OpenCV中实现的)。

如果要使用向前兼容的OpenGL,则需要设置顶点缓冲区对象以包含模型数据,并编写顶点和片段着色器以遮蔽并显示模型。这是一项更多的工作,您可以获得更大的灵活性。但是如果您决定需要它们,也可以在旧的OpenGL中使用着色器(例如,对于某些特殊效果)。

学习如何使用场景图或引擎(食人魔)可能需要一些时间,我不会推荐它用于你的任务。