使用前向和后向导航创建模拟3D“空间”

时间:2012-02-19 02:43:52

标签: objective-c ios opengl-es cocos2d-iphone

在iOS中,我希望在“空间”中有一系列类似于Time Machine工作方式的项目。 “空间”将通过页面侧面的滚动条功能导航。因此,如果人向上滚动,它将基本上放大空间,而更远的对象将更接近参考点。如果一个缩小,那么这些物体将会褪色到后面,而参考帧后面的任何东西都会被看到。有点像this

我愿意接受各种解决方案。我想在openGL中有一个相对简单的解决方案,我只是不知道从哪里开始。

2 个答案:

答案 0 :(得分:1)

github查看Nick Lockwood的iCarousel。这是一个非常好的组件。他提供的示例代码使用自定义轮播样式,与您描述的非常相似。你只需要做一些调整即可到达那里。

答案 1 :(得分:1)

正如你所说,OpenGL(ES)相对容易实现你的要求,但是对于那些对OpenGL没有信心的人解释它可能并不容易:)

首先,我建议您查看The Red Book,OpenGL参考指南或OpenGL Wiki
首先,您可以使用GLUT进行练习;它将帮助您对OpenGL充满信心,提供一些高级API,让您跳过设置OpenGL上下文的无聊方面,让您直接进入绘图部分。

OpenGL ES是OpenGL的一个子集,因此基本上具有相同的结构。一旦了解了如何使用OpenGL就不应该如此难以使用OpenGL ES。当然Apple documentation是一个非常重要的资源。

现在您已经了解了很多关于OpenGL的内容,您应该能够轻松了解您的程序应该如何构建。 例如,您可以保持视点固定并翻译世界(或反之亦然)。当然没有(当然)通用解决方案,特别是因为唯一重要的是最终结果。


另一种解决方案(可能同样好,它取决于您的需求),可能只是简单地放大和缩小图像(代表您的世界的对象)来模拟通过对象本身的移动。

例如,您可以使用数组存储所有图像,并使用滑块设置(增加/减少)图像的尺寸。一旦图像变得太大而无法显示,您可能会逐渐减少alpha,以便后面的图像会慢慢显示。看看UIImageView reference,它包含了您需要的所有API。

这可能会导致您失去三维性,但它可能比学习OpenGL更简单/更快。