前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >读懂 CSS 投影与透视

读懂 CSS 投影与透视

作者头像
Tecvan
发布2022-03-31 20:23:27
1.2K0
发布2022-03-31 20:23:27
举报
文章被收录于专栏:TecvanTecvan

来自团队 邓康 同学的分享

投影

把三维物体变为二维图形表示的过程称为投影变换。

根据投影中心与投影平面之间距离的不同,投影可分为 「平行投影」「透视投影」。平行投影的投影中心与投影之间的距离为无穷大,如左图;而对透视投影,这距离是有限的,如右图。

在 CSS 中,使用 transform3d 变换后的图形也就有了投影的概念。

平行投影

平行投影包括斜平行投影和正平行投影

开启transform3d后,在未开启透视的情况下,所有html元素默认处于translateZ=0的状态,即属于正平行投影

透视投影

一点透视
  1. 视平线
  2. 一个消失点
两点透视
  1. 视平线
  2. 两个消失点
三点透视
  1. 视平线
  2. 三个消失点

在css中,只有一点透视的概念。消失点就是 perspective-origin

平行投影和透视投影

无数条投影线组成投影空间

透视投影的投影空间用四棱锥表示

平行投影的投影空间用四棱柱表示

最终投影得出的画面由棱柱/棱锥的每个截面(缩放到同一大小后)合成,所以透视投影就会出现近大远小,而平行投影反映了物体之间的绝对大小

css透视

perspective

css透视需要关注几个点

如图所示,

  1. 投影中心:眼睛
  2. 投影面:drawing surface
    1. 即屏幕最终显示的效果
    2. 投影面的translateZ=0
  3. 物体:
    1. 虚线的圆代表物体实际的大小
    2. 图1代表物体translateZ>0的情况
    3. 图2代表物体translateZ<0的情况
    4. 实线的圆代表平行投影后的大小
    5. 同时也代表在透视投影中,物体translateZ=0的情况
    6. 蓝色的圆代表透视投影后的大小
  4. 投影中心到投影面的距离:d
    1. 即perspective的值
    2. 如果物体translateZ>=d,那么将不会出现在投影面中
  5. 物体到投影面的距离:z
    1. 即translateZ的值

perspective-origin

perspective-origin即一点透视中的消失点,可以把每个正方体理解为不同origin时展示的画面

读者可通过在线示例了解更多细节:https://codepen.io/dkplus/pen/powJYgm

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tecvan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 投影
    • 平行投影
      • 透视投影
        • 一点透视
        • 两点透视
        • 三点透视
      • 平行投影和透视投影
      • css透视
        • perspective
          • perspective-origin
          相关产品与服务
          图像处理
          图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档