objective-c - 加载触摸响应 3D 模型

标签 objective-c ios 3d xcode4.5

我正在编写一个博物馆应用程序,我想显示一个响应用户触摸的 3D 模型,例如捏合以缩放或在模型周围移动。我搜索了很多,但我发现的只是游戏引擎,对于这个东西来说似乎非常复杂。有什么方法可以导入模型(不管它们的格式如何)、显示它并使其响应触摸?如果代码(或引擎)是开源的会更好,我更喜欢免费应用而不是付费应用。非常感谢!

更新:现在我可以使用 cocos3D 加载 3D 模型,但正如我在回答中所说,我可以加载的模型非常低效。这是一个博物馆的应用程序,我必须是一个更详细的模型。我正在使用显示动画“hello world”的 cocos3D 标准模板项目,只是更改了 .pod 文件以加载我想要的文件并开始添加一些修改以支持用户触摸交互。我减少了大约 80% 的原始多边形数量来加载它(this is how looks a small part of the model ).如果我尝试加载减少原始模型 50% 的模型(看起来不错,like these ),应用程序崩溃并给我这个日志崩溃:

** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“OpenGL ES 1.1 仅支持顶点索引的 GL_UNSIGNED_SHORT 或 GL_UNSIGNED_BYTE 类型” * 首先抛出调用栈: (0x22cc012 0x1ca9e7e 0x22cbe78 0x173ff35 0x1b550f 0x186751 0x180a81 0x17b750 0x11de32 0x1270d4 0x1263ac 0x14f1a2 0x13ca01 0x14ee02 0x14d45e 0x14d3c2 0x14bb22 0x14a452 0x14efcc 0x14d493 0x14d3c2 0x1643e3 0x162a41 0x10c197 0x10c11d 0x10c098 0x3d79c 0x3d76f 0x85282 0x16e9884 0x16e9737 0x8b56f 0xc4192d 0x1cbd6b0 0x505fc0 0x4fa33c 0x4fa150 0x4780bc 0x479227 0x51bb50 0xbef9ff 0xbf04e1 0xc01315 0xc0224b 0xbf3cf8 0x2fd4df9 0x2fd4ad0 0x2241bf5 0x2241962 0x2272bb6 0x2271f44 0x2271e1b 0xbef7da 0xbf165c 0x1ca506 0x2a55) libc++abi.dylib:终止调用抛出异常 (lldb)

它无法加载所有的多边形和崩溃。有什么解决办法吗?或者我必须寻找另一种方式来加载模型?如果您想了解更多信息,请询问。谢谢。

最佳答案

我用了Cocos3D导入地球模型并根据用户的手势旋转它。您可以看一下,这不是一件复杂的事情。

看看this post有关加载模型的一些示例代码。对于处理旋转,我发现非常有用 this post .

关于objective-c - 加载触摸响应 3D 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13073896/

相关文章:

javascript - WebGL 透视相机 Canvas 大小调整问题

c++ - 围绕另一个 vector 旋转一个 vector

c++ - 无法使用带有 Linux 的 Qt 4.8 从 3Dconnexion SpaceNavigator 获取事件

ios - NSDateFormatter 无法将 '1988-04-10' 解析为 iOS 6 中的 NSDate 实例。这是一个错误吗?

ios - 为什么 Apple Push Notification Authentication Key (Sandbox & Production) 没有出现

ios - 集合在枚举时发生了变化——所有内容都是同步的,并且在迭代时没有发生变化

ios - 使用 NSSecureCoding 编码/解码 NSArray 时出现意外类错误

ios - cordova run ios --device 没有向设备启动应用程序

objective-c - 使类符合现有方法类别的协议(protocol)

Objective-C IOS 设备之间的异步通信