iphone - 在 3D 中包裹/扭曲 CALayer/UIView(或 OpenGL)(iPhone)

标签 iphone opengl-es core-animation transform calayer

我有一个 UIView(以及一个 CALayer),我试图在 3D 空间中稍微扭曲或弯曲。也就是说,假设我的 UIView 是一个平面标签,我想将其部分包裹在啤酒瓶上(不是 360 度,只是在一侧)。

我认为通过对 View 的图层应用变换可以实现这一点,但据我所知,这种变换仅限于图层的统一旋转、缩放和平移。至少可以说,我在这里可能是错的,因为我的线性代数目前还很模糊。

我怎样才能实现这个目标?

最佳答案

使用核心动画可以做的最好的事情就是进行分段线性近似。

例如,您可以将“圆柱体”分为八段,并按如下方式排列它们:

  _
 / \
|   |

您可以为它们提供相同的图像,但更改翻译,以便它们在边缘对齐。然后对每个进行变换(如果您想要透视外观,可以是简单的水平压缩,也可以是某种“梯形失真校正”)。

实际上,您可能想要使用八个以上的段。请注意,它们将集中在您 View 的边缘附近。

This CSS animation也许会给你一些启发。

关于iphone - 在 3D 中包裹/扭曲 CALayer/UIView(或 OpenGL)(iPhone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2402923/

相关文章:

iphone - opengl es 2.0 纹理的正确方式

android - 来自 OpenGLRenderer 的 GL 错误 : 0x502

opengl-es - glGetShaderInfoLog 返回空字符串,但着色器程序未正确链接

ios - CATransaction完成区 block 成功或失败

ios - iPad 未出现在 Storyboard 中的 "view as"部分

iphone - 当从 iOS4 的后台重新唤醒时,如何更新 View 的数据?

iphone - 如何控制分组表格 View 单元格中图像的位置?

android - Android中显示定制视频的高效路径

swift - 为什么 UIView 和 UIImageView 的动画效果不同?

cocoa - 即使 CGPathRef 已释放,CAShapeLayer 如何继续在路径 (CGPathRef) 上绘制?