3D可旋转立方体,侧面有可点击区域

时间:2012-04-24 01:44:59

标签: ios ipad opengl-es 3d

我想要完成的是一个带有3D可旋转立方体的iPad应用程序,并且在立方体的每一侧我想要定义多个区域,一旦点击这些区域将进入另一个视图或显示弹出窗口。

  1. 这可以通过在Xcode中从头开始使用OpenGL ES来实现,或者我应该使用3D框架,如果是这样,最简单的框架是什么? (我只听说过Unity及其相当昂贵的费用)

  2. 有没有人有一个很好的教程让我学习如何做到这一点?

  3. 我已经尝试过3D CSS3转换,但我想把它作为最后的手段。

3 个答案:

答案 0 :(得分:3)

尝试此代码

CATransition *transition = [CATransition animation];
transition.delegate = self;
transition.duration = 0.8;
transition.timingFunction = [CAMediaTimingFunction     functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
NSString *types[4] = {@"cube", @"rippleEffect", @"cube", @"alignedCube"};
NSString *subtypes[4] = {kCATransitionFromTop, kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromBottom};
transition.type = types[0];
transition.subtype = subtypes[1];
[self.view.layer addAnimation:transition forKey:nil];

答案 1 :(得分:1)

如果你想要的只是一个文字3D立方体,你可以使用核心动画。查看CATransformLayer。您可以使用CATransformLayer轻松编写真正的3D层次结构。 Joe Ricioppo有a cool article about this,还有一些示例代码和视频。它类似于3D CSS3变换,除了操作表示3D层次结构的单个图层而不是单独转换每个子图层要容易得多。只需最初旋转所有立方体面并定位它们,使它们形成立方体。然后你可以将变换应用到变换图层本身,它将完成所有花哨的数学运算以自动变换你的子图层。

这方面的一个大问题是触摸处理将如何工作。您无法在-hitTest:使用CATransformLayer,因为它无法将2D触摸映射到其自己的3D层次结构。您可能可以使用自己的hitTest:实现来解决这个问题,但这几乎感觉就像它的价值更多的工作。我不知道OpenGL为2D到3D触摸翻译提供了哪些条款,但这可能是您唯一的选择。

答案 2 :(得分:0)

也许不完全是您正在寻找的但我们已经制作了一些功能上可能对您有帮助的代码: http://www.chupamobile.com/products/details/2106/Cube+Selector/

它功能齐全,随时可以使用