我想要完成的是一个带有3D旋转立方体的iPad应用程序,并且在立方体的每一面我想定义多个区域,一旦点击它就会进入另一个视图或显示弹出。三维可旋转立方体与可点击区域的侧面
可以这样用在Xcode使用OpenGL ES从头一些努力来实现,或者我应该使用3D框架,如果是的话这将是最简单的框架? (我只听说过Unity和它相当昂贵的)
有没有人有一个很好的教程,让我学习如何做到这一点?
我已经尝试过3D CSS3转换,但我想保留它作为最后的手段。
我想要完成的是一个带有3D旋转立方体的iPad应用程序,并且在立方体的每一面我想定义多个区域,一旦点击它就会进入另一个视图或显示弹出。三维可旋转立方体与可点击区域的侧面
可以这样用在Xcode使用OpenGL ES从头一些努力来实现,或者我应该使用3D框架,如果是的话这将是最简单的框架? (我只听说过Unity和它相当昂贵的)
有没有人有一个很好的教程,让我学习如何做到这一点?
我已经尝试过3D CSS3转换,但我想保留它作为最后的手段。
如果你想要的只是一个文字3D立方体,你可以使用Core Animation来做到这一点。检查出CATransformLayer。您可以使用CATransformLayer
很容易地编写出真正的3D层次结构。 Joe Ricioppo有a cool article about this,以及一些示例代码和视频。它与3D CSS3变换类似,但操作代表3D层次结构的单个图层而不是单独变换每个子图层要容易得多。只需旋转最初的所有立方体面并定位它们,以便它们形成一个立方体。然后,您可以将变换应用于变换图层本身,并且它会完成所有的花式数学运算以自动变换您的子图层。
这个问题的最大问题是触摸处理如何工作。您不能在CATransformLayer
上使用-hitTest:
,因为它无法将2D触摸映射到其自己的3D层次结构。您可能可以通过自己的hitTest:
实现来解决这个问题,但它几乎感觉比其价值更多的工作。我不知道OpenGL为2D到3D触摸转换提供了什么规定,但这可能是您唯一的选择。
我会试试这个。需要找到一种方法来让触摸工作莫名其妙。非常感谢答案。 – blackpla9ue 2012-04-24 02:49:47
这个@ blackpla9ue的运气怎么样? – seenickcode 2013-06-03 16:12:55
试试这个代码
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];
这些转换被视为私有API。可能因使用它们而被拒绝 – Mazyod 2014-12-02 19:24:04
也许不是正是你正在寻找,但我们已经产生了一些代码,功能可以帮助你: http://www.chupamobile.com/products/details/2106/Cube+Selector/
它的功能齐全,并准备使用出来的该框
[击中测试在这里](http://stackoverflow.com/questions/5544808/mapping-from-2d-projection-back-to-3d-point-cloud)。 – 2012-04-24 06:29:18
我无法帮助您进行命中测试,但我链接到一些示例代码,以在此答案中绘制多维数据集:http://stackoverflow.com/a/2858658/19679 – 2012-04-24 16:24:40