美文网首页
iOS核心动画之3D变换

iOS核心动画之3D变换

作者: 我是花老虎 | 来源:发表于2016-08-03 09:07 被阅读155次
    1. 3D变换的矩阵
      3D变换其实就是加了一个维度。



      对应的,旋转、平移、缩放也增加了维度。

    CATransform3DMakeRotation(CGFloat angle, CGFloat x, CGFloat y, CGFloat z)
    CATransform3DMakeScale(CGFloat sx, CGFloat sy, CGFloat sz) 
    CATransform3DMakeTranslation(Gloat tx, CGFloat ty, CGFloat tz)
    
    1. 透视投影
      由于屏幕是2维的,要展示3维的效果,必须借助于投影。
      CATransform3D的透视效果通过一个矩阵中一个很简单的元素来控制:m34m34用于按比例缩放X和Y的值来计算到底要离视角多远。
      一般设置为-1/d, d为500-1000的值就好。
    2. 灭点
      3D投影时,所有视线的交点叫做灭点。
      灭点
      一般来说,屏幕上所有物体的灭点应该是一个点,因为一个屏幕是一个整体。灭点对应于anchorpoint,所以要先把所有的layer的anchorpoint设为屏幕中心,然后平移变换到指定位置,然后再做3D变换。而不能直接设置position,也就是anchorpoint,也就是灭点。所有的3D图层都应该共享一个灭点。
    3. sublayerTransform
      如果要一个屏幕有多个图层,为了达到统一的灭点和投影效果,需要分别设置每个layer的变换,很繁琐。还好有sublayerTransform属性,可以一次性设置所有子layer的变换,然后子layer可以在这个变换基础上做变换。而且还有一个额外的好处。

    灭点被设置在容器图层的中点,从而不需要再对子图层分别设置了。这意味着你可以随意使用position和frame来放置子图层,而不需要把它们放置在屏幕中点,然后为了保证统一的灭点用变换来做平移。

    1. 2

    相关文章

      网友评论

          本文标题:iOS核心动画之3D变换

          本文链接:https://www.haomeiwen.com/subject/mekqsttx.html