零基础学图形学(12) 几何知识——创建面向矩阵或者本地坐标系统

(1)创建面向矩阵或者是本地坐标系统

在这章中,我们会使用我们所学习关于坐标系统的只是,以及它们所表示的东西建立一个本地的坐标系统,这些向量也可以是法向量。这项技术可以被用在渲染管道上,它做呗定义在一个坐标系统中的点或者向量转化到另外一个坐标系统。让这个点的法向量城池本地坐标系统的一个轴(经常是向上的向量坐标轴,让tangent和bi-tangent成为这个点相互垂直的另外两个轴)。

建立本地系统最好的方式是让那个点P是使用p点处的normal, tangent, bi-tangent向量,如我们之前解释过的,这三个轴应该是相互垂直的单位轴。在计算光线和各种各样的基本几何相交的时候,我们会学习如何计算(导数)derivatives那个点的(我们也叫做dPdu, 和dPdv)用它来描述P点的tangent和bitangent.(可以查看几何基础学习更多的导数相关知识)。我们可以通过P点的dPdu和dPdv之间的叉乘求取P点的法向量。但是,你需要注意的是,这两个向量的方向,确保这个叉乘的结果是指向表面向外的(而 不是向内的)。如果你知道这两个向量在坐标系中的方向,你可以用右手坐标法则去得到正确的法向量的坐标方向(可以参考第三章的点和向量的数学操作)。


假设法向量N对应的是向上的向量,tangent对应的是右向量,bitangent对应的是前向量。我们可以将这几个向量写成行的矩阵形式

你需要很注意你使用这个矩阵,因为有部分的代码比如向上的坐标是表示z轴,当处理阴影的时候这就会是真的,(可以检查之前的球体坐标章节)。那么它的行表示形式就会是下面的样子:


你可以看到法向量的坐标是矩阵的第三行。你可能会问为什么我们要把表面的法向量置为坐标系统的z轴呢?它是很迷惑人的,但是他是很多研究资料在做关于阴影时候的习惯所以我们得采用这个习惯。下图中的的向上的坐标轴被坐标系统的y轴定义,但是在本地坐标系统中表示z轴。


记住当你使用列顺序的时候(这篇教程使用的是行顺序),矩阵还是写成行的样式。比如如果z向量是向上的向量,在第一行中我们会写成T,第二行我们会写成B,第三行我们写成N.

现在你可能会问,我可以使用这个矩阵做什么。如果你有一个定义在世界坐标系中的向量v,然后乘以这个向量,那么会得到一个Vm的向量,这个向量的坐标系统就是你所定义的N, T, B为轴的。你可以看到在第四行中没有平移的变量,所以我们曾为这个矩阵叫做面向矩阵(orientation matrix).你大部分用它的时候是在阴影的时候,通常N表示向上的向量,表示y,或者是,这样可以很简化我们发现一个点上的某点的颜色值。这个技术会在后面的阴影章节中详细讲到。

仿射空间:一些渲染,比如(Embree from Intel)使用矩阵进行变换。使用(Vx, Vy, Vz)代表变换的向量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值