【问题标题】:Opengl ES how to import a 3D model and map textures to it on runtimeOpengl ES如何在运行时导入3D模型并将纹理映射到它
【发布时间】:2019-08-06 03:39:54
【问题描述】:

有点作弊,因为标题里其实有两个问题。

关于如何导入 3D 模型,我想我可以解决这个问题。

但是,我的问题是:我可以在运行时将纹理映射到导入的模型吗?

这不是叫 UV-Mapping 吗?

3D 模型基本上是一个球体,使用 OpenGL ES 生成球体会更好吗?

但是我如何将纹理映射到它?

抱歉,对大部分基础知识一无所知。

【问题讨论】:

  • 我无法回答,我对 iPhone 上的工具一无所知,但你想要的是 uv 映射,是的。至于“一代”,我不知道是不是“更好”,但如果你真的只有一个球体,实现起来会更简单。

标签: iphone graphics opengl-es


【解决方案1】:

您使用的是直接 OpenGL 还是引擎?如果您使用的是引擎,其中一些问题可能已经为您解决了。

如果您使用的是直接的 OpenGL,您必须记住它“仅仅是”一个渲染 API。所以你仍然需要自己做很多腿部工作。

要导入 3D 模型,您必须

  • 创建某种网格数据结构
  • 编写一个加载器(OBJ 文件格式是一个不错的起点),它接收一个文件并将其加载到您的数据结构中
  • 编写渲染代码,它将获取您已加载的数据并将其渲染出来。

是的,您可以对网格进行纹理映射。您需要的是纹理 (UV) 坐标。这些基本上将网格中的顶点映射到 2D 纹理上的位置。想象一个球体模拟地球,UV 坐标将顶点映射到地球 2D 地图上的特定位置。

您也许可以在代码中为 3D 球体编写 generate those,但建模包也可以帮助您,尤其是对于更复杂的 3D 对象。有关视觉介绍,请查看与 Blender 相关的 tutorial on UV mapping

关于纹理和纹理映射的 OpenGL ES 教程可以在 here 找到。

【讨论】:

    【解决方案2】:

    您可以使用两种方式加载 3d 模型

    1.写一个loader来解析所有顶点 和纹理坐标。
    2.使用blender to export您的模型 作为头文件。

    1. 将 3d 模型转换为波前对象格式。使用/编写一个库来将 obj 文件解析为顶点和纹理坐标。

    2. 使用以下库生成 C 头文件并导入到您的项目中

    然后加载模型并应用纹理..

    尝试学习一些基础知识

    阅读这些tutorials..

    我不维护这些链接,我不能保证这些链接将来会存在。在更新这些答案时,这些链接是有效的。如果您发现这些链接已损坏,请做一个明智的编辑而不是抱怨者。

    【讨论】:

    • 无用的评论。所有链接都已损坏。
    • @StamenRakov 我同意这些链接(2011 年回答)已损坏,因为这些链接背后的 opengl 博客已被删除。我会尝试找到匹配上下文的最佳链接(你也可以用谷歌搜索)。
    猜你喜欢
    • 2018-07-13
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    相关资源
    最近更新 更多