将开源3D物理添加到iOS应用程序中
许多游戏和电影采用虚拟对象之间物理交互的逼真模拟。人们对预期的身体行为有一种直觉。有时卡通人物在坠落之前在空中盘旋是可以接受的,但虚假的物理效果会破坏真实场景的沉浸感。
像广受欢迎的《愤怒的小鸟》等2D游戏便运用了令人信服的物理机制去强化玩家与虚拟世界的直接互动感。观看盒子和玻璃块翻滚、坠落、相互弹跳和破碎提供了很大的娱乐。《愤怒的小鸟》采用了开源模式Box2d物理引擎创造令人信服的幻觉。
一个物理引擎是一个经过测试的代码库,适用于各种应用程序。(苹果使用这个术语框架描述用相关资源打包的可重用代码的类似集合。)准确地模拟物理对象、碰撞、力和加速度之间的相互作用可能具有挑战性,并且需要特殊的专业知识。幸运的是,现有的开源代码提供了一个近乎理想的解决方案。
本教程将超越2D物理,探索iOS应用程序的逼真3D物理模拟。开源子弹物理引擎是在自由主义下出版的吗zlib许可,在任何应用程序中实现无成本重用。该引擎包含许多高级功能,并已被许多应用所采用,包括迪士尼的《赛车2》和Android版《激流GP》等游戏。本文描述了一个简单的iOS应用程序,它结合了Bullet和苹果的GLKit框架来制作3D图像。本文末尾提供了本教程源代码的链接。
开始
Bullet主要用c++编程语言实现。它并不是专门为iOS而创建的,但它可以直接移植到iOS上。第一步是下载Bullet源代码子弹- 2.80 - rev2531.tgz。一定要获取带有“Unix行结尾”的版本。
下载完成后,双击bullet-2.80-rev2531。并将生成的bullet-2.80-rev2531文件夹移动到存储源代码的文件系统位置。注意:由于Bullet使用的是开源工具链,一旦开始添加自己的代码,移动代码就不方便了。
接下来,下载免费的Cmake应用.获取标记为“Mac OSX 64/32位通用(适用于英特尔,雪豹/10.6或更高版本)”的版本。Cmake是一个类似于许多开源项目使用的命令行“configure”工具的应用程序。解压缩Cmake,并运行应用程序。图1显示了配置好的Cmake,假设Bullet源代码文件夹在桌面上。
图1Cmake应用程序
在Cmake中,按下标有Configure的按钮。将出现如图2所示的窗口。确保你选择了Xcode选项。
图2Cmake的配置窗口与Xcode选择
当您按下Done时,Cmake会产生大量关于Mac OS x中的头文件和实用程序的输出消息。当配置完成时,Cmake会显示一个类似于图3所示的窗口。
图3生成Mac OS X配置信息后的输出
您应该在配置选项表中看到许多红色文本。在这种情况下,红色是好的。这是由USE_GLUT选项,如图4所示。让它处于选中状态是无害的,因为Cmake在检测到Mac OS X不提供所需的库时会做正确的事情。不幸的是,Cmake会生成一个不完整的Xcode项目USE_GLUT未被选中。
图4Cmake的USE_GLUT选项必须被选中,即使在Mac OS X上不支持
最后,按下Cmake的Generate按钮,就在Configure按钮旁边。Xcode项目文件几乎是瞬间生成的。不再需要Cmake了。从现在起,一切都将在Xcode中管理。
双击BULLET_PHYSICS。在bullet-2.80-rev2531文件夹中生成的Xcodeproj。Xcode应该包括61个目标,如图5所示。选择AppAllBulletDemos目标并按Run。
图5Xcode与BULLET_PHYSICS。加载xcodeproj并选择AppAllBulletDemos目标
Xcode编译了数百个包含在Bullet中的文件,并生成了一个Mac OS X演示应用程序,展示了Bullet的大部分主要功能。尝试演示以了解Bullet的功能。图6包含了AppAllBulletDemos的屏幕截图。应用程序显示SoftBody压力测试。
图6AppAllBulletDemos应用程序