在3D(iPhone)中包装/扭曲CALayer/UIView(或OpenGL)
我有一个UIView(也就是CALayer),我正试图在3D空间中稍微扭曲或弯曲它。也就是说,假设我的UIView是一个平面标签,我想将其部分包裹在啤酒瓶周围(不是360度,只是在一面) 我想这可能是通过对视图的层应用变换实现的,但据我所知,该变换仅限于层的旋转、缩放和平移。我可能错了,至少可以说,我的线性代数在这一点上是模糊的在3D(iPhone)中包装/扭曲CALayer/UIView(或OpenGL),iphone,opengl-es,core-animation,transform,calayer,Iphone,Opengl Es,Core Animation,Transform,Calayer,我有一个UIView(也就是CALayer),我正试图在3D空间中稍微扭曲或弯曲它。也就是说,假设我的UIView是一个平面标签,我想将其部分包裹在啤酒瓶周围(不是360度,只是在一面) 我想这可能是通过对视图的层应用变换实现的,但据我所知,该变换仅限于层的旋转、缩放和平移。我可能错了,至少可以说,我的线性代数在这一点上是模糊的 如何实现这一点?核心动画的最佳方法是进行分段线性近似 例如,您可以将“圆柱体”分成八段,并按如下方式排列: _ / \ | | 你可以给他们所有相同的图像,
如何实现这一点?核心动画的最佳方法是进行分段线性近似 例如,您可以将“圆柱体”分成八段,并按如下方式排列:
_
/ \
| |
你可以给他们所有相同的图像,但改变翻译,使他们在边缘线。然后给每个元素一个变换(如果你想要透视的话,可以是一个简单的水平压缩,也可以是一种“keystone”)
实际上,您可能需要使用八个以上的片段。请注意,它们将集中在视图的边缘附近
也许会给你一些灵感 看看苹果的示例代码 这是一个OpenGL项目,演示如何在曲面(在您的案例中,在圆柱体上)上显示纹理(您的标签) Jeff LaMarche发布了一篇很好的OpenGL入门文章。本页有几个“扭曲”的例子: 我(老实说)不知道怎么做,但我已经把这个页面标记了很长一段时间,试图用网格/网格扭曲/变形UIView 祝你好运
^.^为此,您需要OpenGL。(我不知道怎么做。)肯尼对这个问题的回答:展示了如何对二维层进行更复杂的扭曲,但我不相信仅使用这样的变换就可以实现曲率。@Brad Larson:对,我可以做那样的扭曲,没问题。我要的是曲率。我对OpenGL一无所知,但如果有人这样做,那是可以接受的。这个答案有什么关系?这是正确的方向,但它没有提到任何关于“弯曲”一层的内容。