【问题标题】:Apply a perspective transform without rotating应用透视变换而不旋转
【发布时间】:2013-05-18 18:08:54
【问题描述】:

我一直在尝试对 UIView 执行透视变换。我一直在这个example工作。

但是,该示例在视图上应用了旋转以及透视变化。有没有办法在不旋转的情况下改变视图的视角?可能看起来像这样:

我一直在尝试移除旋转,但是当我这样做时,透视变换没有得到应用。我找不到任何只涉及改变视角的例子。提前致谢。

【问题讨论】:

    标签: ios objective-c core-animation catransform3d perspectives


    【解决方案1】:

    只是添加到大卫的答案:要获得图像中的输出,您必须围绕 x 轴(水平轴)旋转视图,以便视图矩形的上边缘看起来“更远离”查看器比下边缘,例如

    CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
    rotationAndPerspectiveTransform.m34 = 1.0 / -200;
    rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 1.0f, 0.0f, 0.0f);
    layer.transform = rotationAndPerspectiveTransform;
    

    【讨论】:

    • @martinr 我应用了你的技术,但我没有得到透视旋转。我有一个平的(视野似乎到处都是相同的距离......)
    • @VanDuTran: 嗯,它是 3D 转换矩阵中的组成部分之一 :) 我不确定我是否可以很好地解释它,无论如何它对于 来说太复杂了评论。您应该在 Internet 上找到有关它的信息。
    • 我现在开始工作了!但是,我得到了一个奇怪的效果。我有一个矩形,锚点位于底部中间。当我旋转矩形时,它看起来很好。但是当我向我旋转矩形时,矩形变得如此之大以至于超出了屏幕......就像它会落在我的头顶上!你知道如何解决这个问题吗?
    • 好吧,我知道了。 .34 越小,效果就越差。
    【解决方案2】:

    如果没有相对于您的视点进行任何旋转,透视图将不可见。即使您不旋转,透视图仍然被应用,但它不会很明显。

    另一个显示透视的变换是沿 Z 轴平移,这使得视图看起来像是在缩放。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多