gpt4 book ai didi

opengl - 将基本 3D 模型导入 OpenGL 应用程序

转载 作者:行者123 更新时间:2023-12-02 06:13:57 25 4
gpt4 key购买 nike

好吧...我正在做简单的 OpenGL ES 编程,当我说简单时,我所做的最复杂的事情只不过是美化的斜角立方体和 L 形。 (想想俄罗斯方 block ,但在 3D 中。)但是,将所有顶点数据放入应用程序中要么是 a)手动编码(啊!)要么 b)第 3 方游戏引擎(双啊!!!)或者您使用一些第 3 方文件类型导入器。 (部分呃!)

有一个异常(exception)。

我一直在 Mac 上使用一个名为 Cheetah3D 的程序,它是一个非常好的建模器(不是很好,但很可靠......很好),它具有我在其他地方没有见过的一件事,那就是导出的能力将您的模型直接保存到 C-ready 头文件中。它为您导出所有数组,甚至为您提供渲染它们的代码(尽管在注释掉的 block 中作为引用。)

虽然这对于我们所做的 90% 的工作来说非常有用,但有些事情建模者无法做到,例如允许我为两个不同的面指定相同的顶点,但为每个面使用不同的法线......甚至在同一模型中混合平面和弯曲法线(或者更确切地说它们的渲染方式)。

请注意,这些功能很容易在 .obj 文件中描述,因为法线和顶点位于不同的数组中,您可以轻松地与面一起指定,但它们不会以这种方式出现在头文件中。

SO...obj 文件(或任何其他适用于此问题的文件类型...)将其放入代码的最佳方式?

想法?

最佳答案

OBJ 文件格式。

任何从事 3D 工作的人,有时都应该写一个 obj模型加载器。

它是一种非常简单的文件格式。

v
t
n
f

地点:

  • v 是顶点。
  • t 是纹理坐标。
  • n 是正常值。
  • f 是脸。

示例 obj 文件段:

v 1.0 0.1 0.1
t 1.0 0.0
n 1.0 1.0
f 1/1/1 1/1/1 1/1/1

所需要做的就是存储上述的四个集合,并且在渲染顶点的面时,使用索引并执行简单的查找。简单的文件 I/O 在任何语言中都很容易完成,因此总而言之,使用 obj 文件非常容易。

当然,obj 文件的缺点是它们可能会变得很大。就我个人而言,我从未发现这是一个问题,并且经常以 obj 文件格式作为起点,并删除一些重复项以专门为我的应用程序创建自定义文件格式。

关于opengl - 将基本 3D 模型导入 OpenGL 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com