我想在 iPhone 上显示和旋转单个 3D 模型,最好是带纹理的。不需要放大和缩小,或者有背景,或者任何东西。

我有以下内容:

  • 一部iPhone
  • MacBook
  • iPhone SDK
  • 搅拌机

我的知识库:

  • 我可以在各种 3D 程序中制作 3D 模型(我最喜欢使用 3D Studio Max,我曾经上过该课程,但我也使用过其他程序)
  • 多年前的过程编程常识(QuickBasic - 我老了!)
  • 初学者通过简单的 Java 和 C# 教程了解面向对象编程的知识(Head Start C# 书籍和我妻子使用 Java 的 OOP 入门课程)
  • 我已经成功地显示了 3D 纹理模型,并使用我从网上下载的 C# 教程(我不只是复制和粘贴,我基本上了解它是如何工作的)和 XNA 游戏开发库,使用 Visual Studio 来旋转它视窗。

我不知道的是:

  • 关于 Objective C 的更多内容
  • 关于 iPhone 显然使用的 OpenGL 或 OpenGL ES 的任何信息
  • 关于 XCode 的任何信息

我的主要问题是我不知道从哪里开始!我发现的所有 iPhone 书籍似乎都是关于创建 GUI 应用程序,而不是 OpenGL 应用程序。我找到了一本 OpenGL 的书,但我不知道有多少(如果有的话)适用于 iPhone 开发。我发现 Objective C 语法有些令人困惑,奇怪的嵌套方法命名,诸如“id”之类没有意义的东西,以及我必须进行手动内存管理的可怕想法。

最好从哪里开始?我找不到任何关于此类事情的教程,但也许我的 Google-Fu 很弱。或者也许我应该从学习 Objective C 开始?我知道像 Aaron Hillgrass 这样的书,但我也读到它们已经过时了,并且大部分示例代码无法在 iPhone SDK 上运行,而且它似乎面向模型-视图-控制器范式,但它并不适用。似乎适合 3D 应用程序。

基本上我对我的第一步应该是什么感到困惑。

有帮助吗?

解决方案

您可能应该从一些更简单的 iphone 应用程序/教程开始,只是为了在 obj-c 和 xcode 等方面站稳脚跟。

为此,我推荐实用程序员的 iphone 书,其中有足够的信息来入门(我一开始对 xcode、obj-c、iphone 或 mac 毫无了解,但很快就找到了一个可以工作的应用程序,主要使用这个)。不过我应该补充一点,我有相当好的 C/C++ 和 Java 背景。

对于您的特定项目,也许可以看看 答案指的是一个开源 3D 应用程序,您可以查看它并从中获取提示。

其他提示

再说一次,如果我可以插入我自己的作品,我有 写了一篇文章 关于我从在 iPhone 上开发 OpenGL ES 应用程序中学到的东西。那个应用程序, 分子 (由 Frankodwyer 提及),是开源的,我有一个 写上去 关于我在开发过程中遇到的其他一些棘手问题。该应用程序生成 3D 模型,并允许您用手指旋转和缩放它们,这听起来很接近您的需求。您可以在几分钟内下载代码、编译并在桌面上运行它。如果您加入 iPhone 开发者计划,则可以将其安装在您的设备上。

当谈到对象加载时, 比尔·杜德尼 正在研究一个 适用于 iPhone 的 Wavefront OBJ 加载器 如果您的 Blender 文件可以以该格式导出,那么它可能能够接收它们。我还没有在 iPhone 上做太多纹理工作,但听起来他的例子现在已经可以工作了。

总的来说,我发现通过示例学习并开始开发一些小型的、有针对性的应用程序(您可能永远不会发布)对我来说很有效。尝试调整上面列出的示例,看看会发生什么。您应该能够通读这些示例中的 Objective-C 代码,并开始了解它们在做什么。

尽管 Hillegass 的书(第三版刚刚出版并且是最新的)主要针对 Mac,但他教授的 Cocoa 基础知识仍然与 iPhone 相关。MVC 设计模式在 iPhone 上和在 Mac 上一样适用。事实上,我在 Molecules 中的一些地方偏离了这种模式,我对这个决定感到遗憾,因为应用程序的这些部分变得一团糟。这本书很容易阅读,非常值得您花时间。

这是一条古老的线索,而我却迟到了。但我还是要把我的 2 便士贴在这里。

抢先预览

在我进入这头野兽之前,这是我的设置。

我用

  1. 搅拌机 创建 3D 模型。(您可以使用Maya或3D Max,我会告诉您如何导出搅拌机的模型,以3D Max和Maya的相同作品)。
  2. Cocos3D 游戏引擎。
  3. PVRGeoPOD 搅拌机扩展 从 Imagination Technology 到 将 Blender 模型转换为 Cocos3D 可以理解的格式。你可以看到 该链接下载一个安装程序文件,该文件又会下载 整个 SDK。我看不到下载搅拌机的简单方法 仅扩展。

所以如果你是 不打算使用Cocos3D, , 你可以 跳过这个答案 并为你的钱而奔跑。

初始设置

  1. 安装 搅拌机.

    我不会因为细节而让你难堪。

  2. 下载 Cocos3D。.

    当我输入此内容时,当前版本是 0.7.2。

  3. 下载 Cocos2D。

    Cocos3D 是建立在流行的 Cocos2D 之上的,这是一款流行的 2D 游戏 框架。这里需要注意的重要一点是,Cocos2D 2.x 版本 已经在那里并且稳定了。但 Cocos3D 可以与 Cocos2d 1.x 一起使用 仅限版本。

    解开下载的源时,您会在里面找到一个redme文件,并专门说,

    请注意 cocos3d 0.7.2 与 cocos2d 2.x 不兼容. 。务必 下载 cocos2d 1.x 与 cocos3d 一起使用.(强调我的)

    README 文件清楚地说明了安装过程。安装后,您将在Xcode中获得一个不错的Cocos3D项目模板。

  4. 将 PVRGeoPOD 扩展添加到 Blender。

    这需要一些解释。运行PVRGEOPOD安装程序时,屏幕会显示需要安装的功能和哪些功能。我只选择了

    • PVR GeoPOD - 将 .blend 文件中的模型转换为 Cocos3D 可以理解的 .POD 格式

    • PVR萨满 - 您可以使用此工具查看.POD 内的模型。

    enter image description here

    你可以安装列表中的其他工具,但我只使用了这两个。

    现在,在安装过程(可能需要一些时间)之后,您 需要将 PVRGeoPOD 插件添加到搅拌机中。您可以找到PVRGeoPOD.用户手册.PDF 文件位于刚刚安装的文件夹中,其中还包含以下信息。

    • 找到Blender Add-On文件夹,可以打开blender python控制台并运行命令 bpy.utils.script_paths("addons") 以查看 此文件夹的路径。
    • 在安装路径的 PVRGeoPOD 文件夹内找到搅拌机附加文件。当您看到类似的文件时libPVRGeoPOD.dylibPVRGeoPODScript.py 和 2 个 QT 文件,停在那里,因为这就是位置。复制这 4 个文件并将它们粘贴到 Blender 添加文件夹。
    • 现在打开搅拌机,选择 优先, , 寻找 添加在 选项卡,搜索并查找PVRGEOPOD扩展名,并通过单击右侧的复选框来启用它。
    • 现在退出并重新启动搅拌机(如果需要),然后选择文件->导出并查看是否有一个名为 PVRGeoPOD(.pod/.h/.cpp), 如果是,你就成功了。

    现在,您可以在Blender中创建模型,并将这些模型导出为.POD文件,而POD文件可以理解。

    如果您使用其他3D设计工具,例如Maya,3D Max,则可以向其添加此PVRGeoPod扩展名。只需查看我上面提到的PDF即可。

项目中使用

  1. 下面给出了分步过程。

    在搅拌机 (.blend) 中创建模型并将其导出为 .POD 文件。导出时我通常选择以下选项

    • 基本类型 - 索引三角形列表
    • 材料选项卡 - 检查导出材料选项

    其余的我将其保留为默认值。

  2. 在XCode中创建一个新项目,选择Cocos3D模板。
  3. 将 .POD 文件添加到您的项目中。如果您是纹理模型,请将该纹理添加到您的项目中。
  4. 模板项目本身包含一个 你好世界.POD 文件,您可以用.pod文件替换该行,以便可见模型。

    [self addContentFromPODFile: @"YourPODFileName.pod"];
    

现在您的第一个 3D 模型在 iOS 设备中可见。

无耻插头

我做了一个小 AC3D iPhone 的渲染器。 友情链接>>

请随意尝试一下,我们提供了 iPhone 模拟器的演示库。请注意,iPhone 上的 OpenGLES 性能与模拟器中的性能不同。

它使用优化阶段并构建三带并构建最终的顶点数组以便能够在 iPhone 上运行。

观看一个 快速开始 如何使用它

这篇文章已经很老了,我认为现在有更好的资源可以做你想做的事情。我也是一个初学者,但经过一些研究后,我发现这个链接最有用:

http://38leinad.wordpress.com/2011/10/19/practical-blender-with-glkit-part-1-introducing-glkit/

它解释了 glkit,它应该更容易处理 OpenGL,并且还包括一个很好的教程,如何与 Blender 交互。

我正在尝试 iPhone 开发,并购买了 Dave Mark 和 Jeff LaMarche 编写的《Beginning iPhone Development》(ISBN13:978-1-4302-1626-1)并且我很享受阅读这些章节的过程。我有 Win32 Delphi 背景和一点 .NET,所以 Objective C 对我来说非常陌生。

其中一章是关于 OpenGL 和 Quartz 的,您可能会感兴趣。我还没有做到这一点,所以我无法真正评论它对你自己有多大用处,但写作风格非常容易理解,而且节奏很好(无论如何对我来说)。

最初的章节通过对 Xcode 和 InterfaceBuilder 的良好介绍准确地解释了如何开始运行。

对于 iOS 8 或更高版本上的任何内容,答案是 SceneKit。SceneKit 将渲染 Collada (DAE) 文件。任何像样的建模包(例如 Cheetah、Blender)都应该导出 DAE 文件 - 它是 XML 中记录的可移植格式(尽管 xCode 将它们编译为二进制格式以节省空间)。

2 个适用于 iPhone 的优秀 3D SDK:

sio2interactive 和乌龙。

sio2interactive 在其网站上有很棒的视频和 src 教程。它将帮助混合器和模型导出和渲染 - 让您正确进行游戏开发。sio2的src全部是c语言的,代码注释得很好。这是开始学习 3d 和 opengles 的好地方。Blender 到 sio2 的导出是所见即所得的。

从头开始执行所有这些操作,您将必须知道如何自己导出和导入模型。所以对于入门者来说这两个都是很棒的库。

使用 Emcore3D - (https://github.com/Things3D/Emcore3D)

只需定义 obj、mt 和纹理的路径即可。

T3DModelPathInfo *newModelPath = [T3DModelPathInfo createModelPathInfoWithModelName:@"model.obj" 材质:@"model.mtl" 路径:@"/3DModels/"];

之后,您使用 T3DModelPathInfo 创建一个 T3DObject 并将其添加到 T3DRenderController。

T3DObject *newObject = [T3DObject initWithModelPathObject:newModelPath];[renderVC addT3DObject:newObject];

附:披露我是 Emcore3D 团队的一员

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top