Unity Shader学习记录(2)——Shader里的模型变换和坐标系

在这里插入图片描述
使用多个坐标参考,是为了能准确描述物体上每一个部分在不同观察视角下的坐标(三维软件,Unity,摄像机相对位置,摄像机视角,屏幕视角),这样在不同应用场景下会对使用者变得很方便,但在屏幕显示时需要多次变换到屏幕视角下的坐标。

模型空间:美术人员定义模型的坐标轴原点和模型上顶点的坐标值
在这里插入图片描述

世界空间:对模型变换,将模型上的顶点坐标变换到U3D世界坐标系下的坐标值,包含缩放,旋转,平移等操作(实际操作顺序可以任意,但计算机在计算时是不同的,矩阵不满足交换律,必需先缩放,再旋转,最后平移,否则会因为0*任何数都是0导致transform变换操作失败 )。
在这里插入图片描述

矩阵:满足结合律不满足交换律,ABC相乘,(AB)C = A(BC) ,这里统一采用右乘。
在这里插入图片描述

观察空间:投影变换,在U3D世界坐标内有观察的摄像机,需要将物体世界坐标系的顶点转换到相对于世界内相机位置的坐标,逆向思维将摄像机视为放到原点,对进行过模型变换的顶点坐标进行投影变换,由于摄像机内使用的是右手坐标系,再对物体Z取反操作。
在这里插入图片描述

在这里插入图片描述
裁切空间:相机有一个视椎体,只能观察到处于视椎体内部近裁切面和远裁切面之间的物体,需要将模型顶点位于观察空间的坐标。这里有两种裁切方法,在透视图里裁切,和在正交视图裁切

透视投影的计算方法
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

正交投影的计算方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
屏幕映射:得到裁切空间内的物体顶点坐标后,我们知道了摄像机能看到的范围,接下来需要投影到屏幕上进行栅格化处理,由于屏幕是2维,所以可以不计算z方向的点,变换到齐次坐标系(x,y,z,w),用w除x,y,z;得到最终在屏幕上看到的图像。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

法线变换:法线在坐标系中的变换,使用原变换矩阵的逆转置矩阵来变换法线就可以得到正确的结果在这里插入图片描述

在这里插入图片描述
Unity内部封装了变换的方法
在这里插入图片描述
在这里插入图片描述

补充:Shader里面的几种不同坐标系

世界空间

设置世界原点,场景内顶点物体的顶点都以原点为参照取值
在这里插入图片描述
物体空间坐标
模型师建模时,每个模型物体会有一个原点,模型上的所有顶点以这个原点为参照取值。
请添加图片描述

切线空间坐标
切线空间以顶点的UV坐标为参照,可以更好的表示顶点法线方向,用来使用法线贴图。
请添加图片描述
请添加图片描述
请添加图片描述

观察空间坐标

相机观察视角与物体坐标分别为不同坐标系(右手坐标系,左手坐标系),在这个空间内需要对物体的世界空间进行变换,得到物体在观察空间的坐标。
请添加图片描述
请添加图片描述

裁切空间

摄像机视椎体的视角范围空间,与摄像机焦距,视角有关系,不属于该空间内的物体会被裁切。
在这里插入图片描述

3D空间中不同的坐标系有不用的用处。如局部空间坐标系(模型空间坐标系)方便对3D模型进行建模,在这个空间中我们不需要考虑模型在场景中的位置、朝向等细节,可以专注于模型本身。在世界空间下我们关心的问题是场景装各个物体的位置、朝向,而不必关注相机的观察位置及其朝向。可见一个坐标系的根本用途,是让我们在处理不同的问题时,能以合适的参照系,抛开不想管的因素,从降低问题的复杂度。

切线空间

颜色空间

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值