代码之家  ›  专栏  ›  技术社区  ›  jbrennan

在3D(iPhone)中包装/扭曲Calayer/uiView(或OpenGL)

  •  7
  • jbrennan  · 技术社区  · 15 年前

    我有一个uiview(和一个calayer),我试图在三维空间中稍微弯曲或弯曲。也就是说,假设我的uiview是一个平面标签,我想把它部分包裹在一个啤酒瓶上(不是360度,只是在一边)。

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

    我怎样才能做到这一点?

    3 回复  |  直到 14 年前
        1
  •  2
  •   falconcreek    15 年前

    看看苹果的示例代码 PVRTextureLoader 这是一个OpenGL项目,演示了如何在曲面上(在本例中,在圆柱体上)显示纹理(标签)。

    杰夫·拉马克贴了一张漂亮的 tutorial 开始使用开放式总账。

        2
  •  3
  •   Frank Schmitt    15 年前

    对核心动画最好的方法是进行分段线性近似。

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

      _
     / \
    |   |
    

    你可以给他们所有相同的图像,但改变翻译,使他们在边缘排队。然后给每个人一个转换(简单的水平压缩或者一种“keystone”,如果你想看透视图的话)。

    事实上,你可能想要使用八个以上的片段。请注意,它们将集中在视图边缘附近。

    This CSS animation 可能会给你一些灵感。

        3
  •  1
  •   Barrie Reader    15 年前

    本页有几个“扭曲”示例: http://www.sgi.com/products/software/opengl/examples/more_samples/

    我(老实说)不知道该怎么做,但我已经为这个页面加了一段时间的书签,试图用网格/网格扭曲/变形uiview。

    祝你好运。

    ^ ^