5.6.1 局部空间和世界空间

假设你在做电影工作,你的团队已经为了一些特效镜头构建的火车场景微缩版。特别是,假设你的任务是做一个小的桥梁。现在,你就不会在在场景的中间构建桥梁,你有可能从不同的角度构件,并注意不要弄乱组成场景的其他缩影。相反,你会把桥梁带离场景到自己的工作平台上。然后,当全部完成时,您会将桥梁放置在现场的正确位置和角度。

3D艺术家绘制3D对象时做同样的事情。他们将相对于局部坐标系(局部空间)指定对象的几何形状;而不是相对于全局场景坐标系(世界空间),一旦3D模型的顶点在局部空间已经确定,它被放置在全局空间。

为了做到这一点,我们必须定义局部空间和世界空间的转换;这是通过指定我们想要局部空间的原点坐标轴相对于世界场景坐标系完成的,以及执行坐标变换的变化(见图5.16和§3.4)。坐标相对于一个局部坐标系到全局场景坐标系的过程被称为世界变换,相应的矩阵被称为世界矩阵

world-system-local

场景中的每个对象都有自己世界矩阵。在所有的对象已经从它的局部空间转换到世界空间后,那么所有的坐标是相对于相同的坐标系(世界坐标)。如果您想直接在世界空间中定义一个对象,那么你就可以提供一个世界矩阵。

相对于它自己的局部坐标系统定义每个模型具有几个优点:

1.更简易。例如,通常是在局部空间中的对象将以原点为中心和相对于主轴对称。作为另一个例子,对于一个立方体如果我们选择一个局部坐标系,原点位于其中心,并且轴垂直于立方体表面;它的顶点将更容易指定.见图5.17。

2.对象可能跨越多个场景使用时,在这种情况下,硬编码对象的坐标是没有意义的。相反,最好是相对于一个局部坐标系存储其坐标,然后通过的一个坐标变化矩阵定义

3.最后,有时我们在不同的场景的不同的位置,方向和比例绘制同一对象,(例如,树对象可以重复使用多次去建立一个森林)。每个实例复制其对象的顶点和索引数据将是一种浪费。相反,我们存储几何对象(即,顶点和索引列表)相对于局部空间的单个副本。 然后我们绘制对象多次,但每次在世界空间中,使用不同的世界矩阵以指定的位置,方向和比例,例如。这就是所谓的实例化。

advantage

正如§3.4.3所示,对象的世界矩阵是通过描述局部空间的坐标相对于世界空间给定和以矩阵的行放置这些坐标给定的。如果QW=(Qx,QY,QZ,1),UW=(UX,UY,UZ,0),VW=(VX,VY,VZ,0),和WW=(WX,WY,WZ,0),分别地描述原点,x轴,y轴,z轴的局部空间中的均匀坐标,相对于世界空间,那么我们由§3.4.3知道从局部空间到世界空间的坐标变换矩阵是:

coordinate change matrix

我们看到,构造一个世界矩阵,我们必须直接找出局部空间坐标原点和坐标轴相对世界空间。这有时并不那么容易和直观。更常见的方法是定义W作为变换的序列,W = SRT,缩放矩阵S来缩放对象进入世界,接着是旋转矩阵R来定义局部空间相对于世界空间的方向,平移矩阵T定义本地空间相对于世界空间的原点。从3.5节,我们知道,转换序列可以被解释为坐标变换的变化,而W = SRT存储局部空间相对于世界空间的x轴,y轴,z轴,原点的齐次坐标

例题:

假设我们相对于局部空间定义了一个单位正方形,最小和最大点(-0.5,0,-0.5),(0.5,0,0.5),分别地。发现世界矩阵,在世界空间中,正方形边长度为2,在xz平面顺时针旋转45度,位于在(10,0,10)。我们构建S,R,T和W如下:

SRTW

当我们通过W将局部空间的坐标转换成世界空间,正方形在世界空间的坐标是(见图5.18)。

world position

 

本文固定链接:http://www.oxox.work/web/directx11/local-space-world-space/ | 虚幻大学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚坏叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值