2012-04-24 38 views
1

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

  1. 可以这样用在Xcode使用OpenGL ES从头一些努力来实现,或者我应该使用3D框架,如果是的话这将是最简单的框架? (我只听说过Unity和它相当昂贵的)

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

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

+0

[击中测试在这里](http://stackoverflow.com/questions/5544808/mapping-from-2d-projection-back-to-3d-point-cloud)。 – 2012-04-24 06:29:18

+0

我无法帮助您进行命中测试,但我链接到一些示例代码,以在此答案中绘制多维数据集:http://stackoverflow.com/a/2858658/19679 – 2012-04-24 16:24:40

回答

1

如果你想要的只是一个文字3D立方体,你可以使用Core Animation来做到这一点。检查出CATransformLayer。您可以使用CATransformLayer很容易地编写出真正的3D层次结构。 Joe Ricioppo有a cool article about this,以及一些示例代码和视频。它与3D CSS3变换类似,但操作代表3D层次结构的单个图层而不是单独变换每个子图层要容易得多。只需旋转最初的所有立方体面并定位它们,以便它们形成一个立方体。然后,您可以将变换应用于变换图层本身,并且它会完成所有的花式数学运算以自动变换您的子图层。

这个问题的最大问题是触摸处理如何工作。您不能CATransformLayer上使用-hitTest:,因为它无法将2D触摸映射到其自己的3D层次结构。您可能可以通过自己的hitTest:实现来解决这个问题,但它几乎感觉比其价值更多的工作。我不知道OpenGL为2D到3D触摸转换提供了什么规定,但这可能是您唯一的选择。

+0

我会试试这个。需要找到一种方法来让触摸工作莫名其妙。非常感谢答案。 – blackpla9ue 2012-04-24 02:49:47

+0

这个@ blackpla9ue的运气怎么样? – seenickcode 2013-06-03 16:12:55

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]; 
+0

这些转换被视为私有API。可能因使用它们而被拒绝 – Mazyod 2014-12-02 19:24:04