我无法找到如何在任何地方实现类似内容的描述!
我不想使用任何引擎。我只想知道我必须采取的步骤 满满的和基本的事情。
www上真的没什么。你可以找到2005年至2008年的文章 但这些都不是最新的,没有任何效果。
那么,有人知道该怎么做吗?
答案 0 :(得分:0)
查看libgdx中的来源,并查看objloader。他构建了lib以便能够加载obj文件,并且应该可以跨多个平台(包括ios)工作。通过阅读源代码,您将看到为顶点创建对象加载器非常简单,但是当您开始关注法线和纹理坐标时会变得更加复杂。这是一个用于抓取obj文件的简单算法(我将离开解析相关的tpl文件以供读者自己研究):
#
开头的行(评论)v 1.000 1.000 1.000
,因此,如果行以'v '
开头,则在空格上划分线并存储(并转换为浮点数)3浮点数作为顶点。vn 1.000 1.000 1.000
,因此,如果行以'vn '
开头,请执行与数字2相同的操作,但要正常存储。vt 1.000 1.000
,可能有第3 [w]
个值,以相同的方式拆分并存储该行。f 1/1/1 2/2/2 3/3/3
的面部描述,它们描述了形状的每个顶点(通常它们是三角形)的3个顶点/ textcoords / normals(按此顺序)指数。最难的部分是obj文件类型使用三个索引而不是像opengl或direct3d这样的索引。因此,您必须按照顶点/坐标/法线的顺序进行随机播放,以便可以在源上使用索引绘图。 E.g。基本上,你必须通过改组订单让f 1/300/30 40/22/400 20/30/10
变得更像f 1/1/1 2/2/2 40/40/40
。
This site为您提供了相同算法的概念,并向您展示了如何在高级算法中进行此操作的示例(在页面的中间位置),以及他为您引用的源代码可以找到here。
无论如何,如果您需要更多帮助,请告诉我。 :)
编辑:
顺便说一句,如果你看到这样的话:f 1//4 2//5 3//7
不要惊慌,这是一个有效的文件,只是意味着(在这个例子中)没有纹理坐标
答案 1 :(得分:0)
我使用GLEssentials示例应用作为起点。它真的很简陋,但它是你想要开始的那种,所以你可以真正理解你决定稍后添加它的格式。
https://developer.apple.com/library/mac/#samplecode/GLEssentials/Introduction/Intro.html