【问题标题】:3D model manipulation for a Desktop Augmented Reality application桌面增强现实应用程序的 3D 模型操作
【发布时间】:2011-12-07 21:58:25
【问题描述】:

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

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

我希望用户可以操作 3D 模型,这样它就会变成一种模拟。

为此,我打算使用 OpenGL。你有什么建议、建议?模拟部分可以通过使用 OpenGL 本身来完成,还是我需要使用 OpenSceneGraph/ODE/Unity 3D/Ogre 3D 之类的东西?

这是一个学术项目,如果我可以生产更多的自编码系统而不是使用现成的产品,那就更好了。

【问题讨论】:

  • OpenGL 用于渲染。如果您的模拟涉及物理,您应该考虑集成某种 3d 物理库来确定虚拟对象的位置。根据这些计算,您可以使用 OpenGL 来渲染您的模型。
  • +1 回复。我急切地等待着,直到有人回复。谢谢。到目前为止,我的范围是操纵模型,比如说改变 3D 模型的颜色和大小。如果没有必要使用“场景”图表呢?谢谢。
  • 我自己没有使用任何场景图库,但据我所知,它用于以父子关系分层存储场景中的所有对象。我假设场景库提供了将对象从一个局部坐标系转换到另一个局部坐标系的方法,例如一个对象被附加到一个新的父节点。如果您有一个复杂的场景,其中包含许多处于父子关系中的对象,那么场景图将很有用。如果您只想切换颜色,例如取决于哪个标记可见,我想没有必要。

标签: opengl 3d simulation augmented-reality


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 2016-07-28
    • 2013-02-26
    • 2023-04-03
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多