(四)unity shader基础之——————学习shader所需的数学基础:上篇(笛卡尔坐标系、点和矢量、矩阵、矩阵变换)

计算机图形学之所以深奥难懂,很大原因在于它是建立在虚拟世界上的数学模型。数学渗透到图形学方方面面,当然也包括shader,我们写shader最常使用的就是矢量和矩阵(线性代数)。但很多情况下我们需要打交道的只是一些基础的数学运算,只要掌握了这些内容,就发现很多事情可以迎刃而解。

一、左手坐标系和右手坐标系

在三维笛卡尔坐标系中要区分左手坐标系和右手坐标系,如果两个坐标系具有相同的旋向性,那么就可以通过旋转的方法来让它们的坐标轴指向重合。但是如果具有不同的旋向性(例如坐标系A属于左手坐标系,B属于右手坐标系,那么就无法达到重合的目的)。

我们可以利用我们的双手来判断一个坐标系的旋向性,举起自己的左手,用食指和大拇指摆出一个“L”的手势,并让自己的食指指向上,大拇指指向右,现在伸出中指,应该是指向自己的前方,现在已经得到了一个左手坐标系,手指分别对应了+x,+y和+z轴的方向。

同样可以通过右手来得到一个右手坐标系,举起右手,这次仍然食指指向上,中指指向前方,不同的是大拇指将指向左侧。

另外一个确定左手坐标系和右手坐标系的方法是,判断前向的方向。让自己坐直,伸出右手,此时右手的方向就是x轴正向,而你头顶上的方向就是y轴正向。这时如果你的正前方的方向是z轴正向,那么你本身所在的坐标系就是一个左手坐标系,如果你的正前方对应的是z轴负向,那么就是一个右手坐标系。

 

除了坐标轴朝向不同之外,左手坐标系和右手坐标系对于正向旋转的定义也不同,即在初高中物理中学到的左手法则和右手法则。在左手坐标系中,可以这样应用左手法则:举起自己的左手,握拳,伸出大拇指让自己指向旋转轴的正方向,那么旋转的正方向就是剩下4个手指弯曲方向,在右手坐标系中,使用右手法则对旋转正方向判断类似。在左手坐标系中,旋转正方向是顺时针的,而在右手坐标系中,旋转正方向是逆时针的。

二、unity使用的坐标系

在unity中,模型空间和世界空间unity使用的是左手坐标系,这可以从scene视图的坐标轴显示看出来,如下图所示:

但对于观察空间来说,unity使用的是右手坐标系。观察空间通俗来讲就是以摄像机为原点的坐标系。在这个坐标系中,摄像机的前方是z轴负方向,这与在模型空间和世界空间中的定义相反,也就是说z轴坐标的减少意味着场景深度的增加。如下图所示:

 三、点和矢量

点是n维空间的一个位置,他没有大小、宽度这类概念。矢量是n维空间中一种包含了模和反向的有向线段。速度就是一种典型的矢量。

3.1单位矢量

在很多情况下我们只关心矢量的方向而不是模。例如在计算光照模型时,我们往往需要得到顶点的法线反向和光源方向,此时我们不关心这些矢量有多长。这种情况下就需要计算单位矢量。

单位矢量指的是那些模为1的矢量。单位矢量也被称为被归一化的矢量。对任何给定的非零矢量,把他转换成单位矢量的过程就被称为归一化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值