【问题标题】:c/c++ application importing 3d models from modelling softwares at runtimec/c++ 应用程序在运行时从建模软件导入 3d 模型
【发布时间】:2012-02-10 06:51:06
【问题描述】:

我是一名 openGL 初学者。我需要构建一个在增强现实中显示 3d 模型的 c/c++ 应用程序。对于 AR,我使用的是 ARToolkit。在应用程序中,它必须导入使用 blender、sketchup 等建模软件构建的 3d 模型。模型可能是 .obj、.3ds、.collada(如果有的话,请向我推荐其他的??)。

ARToolkit 主要使用 opengl 来渲染(AFAIK),将 3d 对象输入到相机。

  • 是否可以在运行时动态加载 3d 模型/对象。如果有的话,有哪些图书馆?

我还想与模型进行键盘交互,我还可以在其中移动模型的特定部分(例如:旋转汽车的车轮)

这里的模型可能就像一个简单的角色(男人/女人)的房子一样简单。建议我为此所需的资源以及我错过的任何技术细节。如果可能的话,我更喜欢我的代码与 opengl 1.4 一起使用

【问题讨论】:

  • 我还关心模型的比例和纹理
  • 没有“opengl 格式”。 OpenGL 没有格式。 OpenGL 没有文件;它定义了一个渲染系统。它没有说明数据是如何存储在磁盘上的。
  • 另外,你的问题到底是什么。 “我很困惑从哪里开始”不是一个问题。
  • 是我的错(opengl格式),我的问题是如何使用opengl从建模软件中渲染不同格式的3d模型。
  • @kaushik54 问题更多是关于 Opengl 的工作原理,因为从你的问题中我不明白缺乏 OpenGL 基础知识、模型加载、模型层次结构(汽车 + 车轮连接在一起但可移动)一种单独的方式)。我想照明也是一个问题(增强现实必须反射环境光才能变得逼真)。我建议深入研究 OpenGL 世界,真的有一个宇宙要学习。干杯。

标签: opengl graphics 3d augmented-reality .obj


【解决方案1】:

您将需要一些导入机制来将各种格式的网格导入到您的运行时格式中。 OpenGL(或 DirectX)没有指定网格在磁盘上的外观,并且磁盘上存储了各种渲染不需要的东西。基本上,您需要一种从文件中获取顶点位置和属性的方法,以及可选的索引列表(如果您使用索引三角形列表进行渲染,您可能应该这样做。)

最简单的肯定是 .obj,它是一种 ASCII 格式,您可以轻松解析,并且许多应用程序都支持这种格式。否则,请查看 Open Asset Import 之类的库。

但是,我假设您正在寻找一个基于 OpenGL 的渲染系统,它可以为您进行渲染以及鼠标交互。你可以使用很多现有的引擎,例如Ogre3DIrrLicht。 IrrLicht 易于使用并提供您提到的support for a bunch of the formats。如果您必须坚持使用 ARToolkit 进行渲染,那么您可能可以轻松地将格式从任一引擎转换为 ARToolkit 期望的任何格式。

【讨论】:

  • 实际上 DirectX 有一个 *.x 文件格式,但它并不总是最好的选择,只是为了澄清。 DX10 和 11 也已弃用且不支持它
【解决方案2】:

我非常推荐你试试http://assimp.sourceforge.net/lib_html/ 它支持很多开放/不太开放的数据格式、骨架动画、仿射传输动画等。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2012-08-27
    • 2019-09-20
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 2012-02-23
    • 2012-03-29
    • 2023-03-11
    相关资源
    最近更新 更多