创建具有向前和向后导航的模拟 3D "space"



在iOS中,我希望在"空间"中有一系列项目,类似于Time Machine的工作方式。"空间"将通过页面侧面类似滚动条的功能进行导航。因此,如果人向上滚动,它基本上会放大空间,距离更远的物体会更靠近参考点。如果缩小,那么这些对象将消失在后面,参照框后面的任何东西都将进入视野。有点像这样。

我对各种解决方案持开放态度。我想openGL中有一个相对简单的解决方案,我只是不知道从哪里开始。

在github上查看Nick Lockwood的iCarousel。这是一个非常好的组件。他提供的示例代码使用了一种自定义的旋转木马样式,与您描述的非常相似。你应该通过一些调整来达到目的。

正如您所说,在OpenGL(ES)中,实现您的要求相对容易,但向对OpenGL不自信的人解释可能不那么容易:)

首先,我建议你看一下OpenGL的参考指南《红皮书》,或者OpenGLWiki
首先,您可以使用GLUT进行一些练习;它将帮助您对OpenGL充满信心,提供一些高级API,让您跳过设置OpenGL上下文的枯燥环节,直接进入绘图部分。

OpenGL ES是OpenGL的一个子集,因此本质上具有相同的结构。一旦你了解了如何使用OpenGL,使用OpenGL ES应该不会那么困难。当然,苹果文档是一个非常重要的资源。

既然你已经了解了很多关于OpenGL的东西,你应该能够很容易地理解你的程序应该如何结构化。
例如,你可以固定你的观点并翻译世界(反之亦然)。(当然)没有一个普遍的解决方案,尤其是因为唯一重要的是最终结果。


另一个解决方案(可能同样好,取决于您的需求)可能是简单地放大和缩小图像(代表您世界中的对象),以模拟对象本身的运动。

例如,您可以使用数组来存储所有图像,并使用滑块来设置(增加/减少)图像的尺寸。一旦图像对于显示器来说太大,您可能会逐渐减小alpha,这样后面的图像就会慢慢出现。看看UIImageView参考,它包含了你需要的所有API

这可能会导致你失去三维性,但这可能是一个比学习OpenGL更简单/更快的解决方案。

最新更新