美文网首页
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变换

    3D变换的矩阵3D变换其实就是加了一个维度。对应的,旋转、平移、缩放也增加了维度。 透视投影由于屏幕是2维的,要展...

  • CSS3动画

    CSS3之2D/3D动画 2D的变换3D的变换动画 2D动画的变换 基本说明 注意:一般要写不同浏览器的适配 移动...

  • 关于IOS核心动画

    iOS 核心动画高级技术核心动画是基于苹果iOS用户界面的技术。通过使用核心动画的全部功能,可以用2D和3D视觉效...

  • iOS核心动画2——隐式动画和图层行为

    前言: 《iOS Core Animation Advanced Techinques》学习笔记之:iOS核心动画...

  • iOS核心动画3——图层性能调优

    前言: 《iOS Core Animation Advanced Techinques》学习笔记之:iOS核心动画...

  • iOS核心动画高级技巧 - 8

    iOS核心动画高级技巧 - 1iOS核心动画高级技巧 - 2iOS核心动画高级技巧 - 3iOS核心动画高级技巧 ...

  • iOS核心动画之仿射变换

    仿射变换经过变换以后,原有的平行关系不变的变换。 变换其实就是矩阵相乘对于layer的每一个点,都乘以一个矩阵,然...

  • CAKeyframeAnimation动画二

    - IOS 核心动画之CAKeyframeAnimation - 简单介绍 是CApropertyAnimatio...

  • IOS 核心动画

    - IOS 核心动画之CAKeyframeAnimation - 简单介绍 是CApropertyAnimatio...

  • iOS 核心动画的变换

    很不幸,没人能告诉你母体是什么,你只能自己体会 -- 骇客帝国 如果你依然在编程的世界里迷茫,不知道自己的未来规划...

网友评论

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

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