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

Ios 侧面有可点击区域的3D可旋转立方体,ios,ipad,opengl-es,3d,Ios,Ipad,Opengl Es,3d,我想要完成的是一个带有3D可旋转立方体的iPad应用程序,在立方体的每一侧,我想要定义多个区域,在这些区域中,一旦单击,就会进入另一个视图或显示弹出窗口 这可以通过在Xcode中从头开始使用OpenGL ES来实现吗?或者我应该使用3D框架吗?如果是的话,最简单的框架是什么?(我只听说过Unity,它的价格相当昂贵) 有没有人给我一个很好的教程来教我怎么做 我已经尝试过3D CSS3转换,但我想把它作为最后的手段。如果您只需要一个文字3D立方体,可以使用核心动画来实现。退房使用CATTransf

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

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

  • 有没有人给我一个很好的教程来教我怎么做


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

    如果您只需要一个文字3D立方体,可以使用核心动画来实现。退房使用
    CATTransferMLayer
    可以非常轻松地构建真正的3D层次结构。Joe Ricioppo提供了一些示例代码和视频。它类似于3D CSS3变换,只是更容易操作表示3D层次的单个层,而不是单独变换每个子层。只需先旋转所有立方体面,然后定位它们,使它们形成一个立方体。然后,您可以将变换应用于变换层本身,它将完成所有奇妙的数学运算来自动变换子层


    最大的问题是触摸处理将如何工作。您不能在
    CATTransferMLayer
    上使用
    -hitTest:
    ,因为它无法将2D触摸映射到自己的3D层次结构。您可能能够装配自己的
    hitTest:
    实现来解决这个问题,但这几乎让人觉得工作太多了。我不知道OpenGL为2D到3D触摸翻译提供了哪些规定,但这可能是您唯一的选择。

    如果您只需要一个文字3D立方体,您可以使用核心动画来实现。退房使用
    CATTransferMLayer
    可以非常轻松地构建真正的3D层次结构。Joe Ricioppo提供了一些示例代码和视频。它类似于3D CSS3变换,只是更容易操作表示3D层次的单个层,而不是单独变换每个子层。只需先旋转所有立方体面,然后定位它们,使它们形成一个立方体。然后,您可以将变换应用于变换层本身,它将完成所有奇妙的数学运算来自动变换子层

    最大的问题是触摸处理将如何工作。您不能在
    CATTransferMLayer
    上使用
    -hitTest:
    ,因为它无法将2D触摸映射到自己的3D层次结构。您可能能够装配自己的
    hitTest:
    实现来解决这个问题,但这几乎让人觉得工作太多了。我不知道OpenGL为2D到3D触摸翻译提供了哪些规定,但这可能是您唯一的选择。

    试试这段代码

    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];
    
    试试这个代码

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

    可能不完全是您想要的,但我们已经生成了一些代码,在功能上可能会帮助您:


    它功能齐全,可以开箱即用

    可能并不完全符合您的需求,但我们提供了一些代码,在功能上可能会帮助您:


    它功能齐全,可以开箱即用

    我要试一试。我们需要找到一种方法,让这些接触以某种方式发挥作用。非常感谢你的回答。这个@blackpla9ue有什么好运气吗?我要试试看。我们需要找到一种方法,让这些接触以某种方式发挥作用。非常感谢您的回答。在@blackpla9ue?这个问题上运气好吗?我无法帮助您进行命中测试,但我链接到了一些用于在此答案中绘制多维数据集的示例代码:。我无法帮助您进行命中测试,但我链接到了一些用于在此答案中绘制多维数据集的示例代码:这些转换被视为私有API。可能会因为使用这些转换而被拒绝这些转换被视为私有API。可能会因为使用它们而被拒绝