52

我想在 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 应用程序。

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

4

5 回答 5

39

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

在对象加载方面,Bill Dudney正在为 iPhone 开发 Wavefront OBJ 加载器,如果它们可以以该格式导出,它可能能够接收您的 Blender 文件。我还没有在 iPhone 上做太多的纹理工作,但听起来他的例子现在可以工作了。

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

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

于 2009-01-06T16:10:06.347 回答
8

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

为此,我推荐实用程序员的 iphone 书,它有足够的信息可以入门(我从不了解 xcode、obj-c、iphone 或 mac 的情况下开始工作,并且相当快地获得了一个工作应用程序,主要使用这个)。但是我应该补充一点,我来自 C/C++ 和 Java 方面的良好背景。

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

于 2009-01-05T17:58:19.733 回答
8

这是一条古老的线索,我来得太晚了。但我仍然要在这里张贴我的 2 便士。

先睹为快

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

我用

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

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

初始设置

  1. 安装 搅拌机

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

  2. 下载 Cocos3D。.

    当我输入这个时,当前版本是 0.7.2。

  3. 下载 Cocos2D。

    Cocos3D 是在流行的 2D 游戏框架 Cocos2D 之上编写的。这里需要注意的重要一点是,Cocos2D 2.x 版本已经存在并且稳定。但是 Cocos3D 只适用于 Cocos2d 1.x 版本。

    当你解压缩你下载的源代码时,你会在里面找到一个 README 文件,它特别说,

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

    自述文件清楚地说明了安装过程。安装后,您将在 XCode 中获得一个漂亮的 Cocos3D 项目模板。

  4. 将 PVRGeoPOD 扩展添加到 Blender。

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

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

    • PVRShaman - 您可以使用此工具查看 .POD 中的模型。

    在此处输入图像描述

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

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

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

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

    如果您正在使用其他 3D 设计工具,例如 Maya、3D Max,也可以将这个 PVRGeoPOD 扩展添加到其中。只需查看我上面提到的 PDF。

在项目中使用

  1. 下面给出了一步一步的过程。

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

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

    休息一下,我将其保留为默认值。

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

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

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

于 2013-08-05T08:20:16.650 回答
1

我正在玩 iPhone 开发以获得一点乐趣,并购买了 Dave Mark 和 Jeff LaMarche 的《Beginning iPhone Development》(ISBN13:978-1-4302-1626-1),并且很享受阅读这些章节。我有一点 .NET 的 Win32 Delphi 背景,所以 Objective C 对我来说很新。

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

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

于 2009-01-07T11:20:53.700 回答
1

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

于 2014-12-15T16:05:56.970 回答