1

我现在搜索了很长时间,以找到可以将 Blender 3D .obj 文件导入 xcode 以在 iphone 应用程序上使用它的东西。

我找不到描述如何在任何地方实现类似的东西!

我不想使用任何引擎。我只想知道我必须完成的步骤和基本的事情。

www上真的什么都没有。您可以找到 2005 - 2008 年的文章,但这些都不是最新的,也没有任何效果。

那么,有人知道该怎么做吗?

4

2 回答 2

1

查看libgdx中的源代码,并查看 objloader。他构建了能够加载 obj 文件的库,并且应该可以跨多个平台(包括 ios)工作。通过阅读源代码,您会发现仅为顶点创建对象加载器非常简单,但是当您开始关注法线和纹理坐标时,就会变得更加复杂。这是一个用于抓取 obj 文件的简单算法(我将解析相关的 tpl 文件以供读者自己研究):

  1. 读入文件的行,去掉所有以#(comments)开头的行
  2. 顶点看起来像:v 1.000 1.000 1.000,因此,如果行以'v '在空格上拆分行并将 3 个浮点数存储(并转换为浮点数)作为顶点开始。
  3. 法线看起来像:vn 1.000 1.000 1.000,因此,如果行以'vn '数字 2 开头,但存储为法线。
  4. 纹理坐标看起来像vt 1.000 1.000具有可能的第三个[w]值,以相同的方式分割和存储线。
  5. 现在变得棘手了,看起来f 1/1/1 2/2/2 3/3/3这些面部描述正在按索引为形状的每个顶点(通常是三角形)描述 3 个顶点/文本坐标/法线(按此顺序)。最困难的部分是 obj 文件类型使用三个索引,而不是像 opengl 或 direct3d 那样的一个索引。因此,您必须调整顶点/坐标/法线的顺序,以便您可以在源上使用索引绘图。

例如,基本上你必须通过重新洗牌来获得f 1/300/30 40/22/400 20/30/10更像。f 1/1/1 2/2/2 40/40/40

该站点为您提供了相同算法的概念,并向您展示了如何在高级算法中执行此操作的示例(在页面的中间进行),并且可以找到他引用的源代码供您查看在这里

无论如何,如果您需要更多帮助,请告诉我。:)

编辑:

顺便说一句,如果你看到这样的东西:f 1//4 2//5 3//7不要惊慌,这是一个预期的有效文件,只是意味着(在这种情况下)没有纹理坐标

于 2013-03-21T20:43:34.960 回答
0

我使用 GLEssentials 示例应用程序作为起点。它真的很简单,但它是你想要开始的那种,所以当你决定以后添加它时,你可以真正理解格式。

https://developer.apple.com/library/mac/#samplecode/GLEssentials/Introduction/Intro.html

于 2013-03-23T17:33:00.770 回答