想要在 iPhone 上显示 3D 模型:如何开始? [关闭]

Posted

技术标签:

【中文标题】想要在 iPhone 上显示 3D 模型:如何开始? [关闭]【英文标题】:Want to display a 3D model on the iPhone: how to get started? [closed] 【发布时间】:2010-09-29 15:49:55 【问题描述】:

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

我有以下几点:

一部 iPhone MacBook iPhone SDK 搅拌机

我的知识库

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

我不知道的:

更多关于目标 C 关于 iPhone 显然使用的 OpenGL 或 OpenGL ES 的任何信息 关于 XCode 的一切

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

先睹为快

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

我用

    Blender 创建 3D 模型。 (你可以使用 Maya 或 3D Max,我 将告诉您如何为 Blender 导出模型,同样适用于 3D Max 和 Maya)。 Cocos3D 游戏引擎。 PVRGeoPOD blender extension 从想象科技到 将搅拌机模型转换为 Cocos3D 可以理解的格式。你可以看到 该链接下载一个安装程序文件,该文件依次下载 整个 SDK。我看不到下载搅拌机的简单方法 单独扩展。

因此,如果您不打算使用 Cocos3D,则可以跳过此答案并为您的钱而奔波。

初始设置

    安装 blender

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

    下载 Cocos3D.

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

    下载Cocos2D.

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

    当你解压你下载的源代码时,你会发现一个 README 文件 里面特别写着,

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

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

    将 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个文件并粘贴进去 搅拌机添加文件夹。 现在打开 blender,选择 Preferences,找到 Add-On 选项卡,搜索并找到 PVRGeoPOD 扩展并通过单击启用它 右侧的复选框。 如果需要,现在退出并重新启动搅拌机,然后选择文件->导出并查看是否有一个名为 PVRGeoPOD(.pod/.h/.cpp) 的选项, 如果是,你就成功了。

    现在您可以在搅拌机中创建模型,然后导出这些模型 模型为 Cocos3D 可以理解的 .POD 文件。

    如果您使用的是其他 3D 设计工具,例如 Maya、3D Max,则此 PVRGeoPOD 扩展也可以添加到它们中。只看我的PDF 上面提到过。

在项目中使用

    下面给出一步一步的过程。

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

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

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

    在XCode中新建项目,选择Cocos3D模板。 将 .POD 文件添加到您的项目中。如果您的模型是带纹理的,请添加 您的项目也可以使用该纹理。

    模板项目本身包含一个HelloWorld.POD文件,你 可以用您的 .POD 文件替换该行,以便您的模型 可见的。

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

现在您可以在 ios 设备上看到您的第一个 3D 模型。

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于想要在 iPhone 上显示 3D 模型:如何开始? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在主 Bundle 之外访问

如何3d模型在web网页显示展示?用啥技术

如何在颤动中显示 3D 模型? [关闭]

如何修复 3d 模型中的“裂缝”?

3D大场景模型如何进行轻量化处理,让它能在网站上流畅打开并展示?

放大时,iPhone 5 上不显示 3d 地图