Blender 3D︰從入門到精通/坐标变换

维基教科书,自由的教学读本
跳到导航 跳到搜索

坐标变换[编辑]

用某种方法改变坐标值的任何一种操作,被称为变换。比如,你抢走一个物体并把它移到房间中的任何一处而不改变它的方向,这样物体上的每一个点相对于房间的坐标都调整了一定的数值,这个数值取决于作物旧位置与新位置间的距离和方向;这就叫做平移变换。

物体处于原位置
物体变换到新的位置

如果你只能原地转动物体,而不将它从原位置移开,这就叫做旋转

物体旋转45°

如果物体发生了变大或者变小,就被称为缩放变换。在现实世界里,只有很少的物体可以被缩放——比如,一个气球可以通过充气或者放气来变得更大或更小,但保龄球就不能这样改变尺寸。而在计算机图像的世界中,任何物体都可以被缩放。缩放可以是按比例的(在所有维度上同等执行)也可以是不按比例的。

物体在原位置上按比例缩放50%
物体在原位置上垂直缩放50%

线性变换[编辑]

在这里,我们所关注的最主要的坐标变换各类被称为线性变换。直线变换后依然是直线;它们不会变成曲线。比如,下图说明对中间的正方形进行了三种线性变换:一个缩放,一个剪切倾斜变换,一个旋转,而剩下的一个变换不是线性的,因为它在原来不是曲线的地方引入了曲线。

LinearTransformations.svg

多重变换[编辑]

它可能是由一系列的变换串连或者组合而成。由此产生的可能用一个操作来完成一大堆事情——如平移、旋转、缩放等。然而,组成这一变换的每一个变换的顺序就变得很重要——通常来说,它们的顺序是不可交换的。比如,比较一下先向前移动我们的模型然后使它绕X轴旋转的结果:

平移然后旋转

与先进行旋转的结果::

旋转然后平移

逆变换[编辑]

找出一个变换的逆变换(即,可以取消其效果的反向变换)是相当普遍的需求。例如,一个绕X轴 +45°的旋转可以通过绕相同轴 -45°的旋转来取消(按约定顺时针方向为正,逆时针为负)。

逆变换有很多用处,其中之一是简化某些变换的构成。

例如,要组成一个绕坐标系的X、Y或Z轴旋转的变换很容易。但要绕任意轴旋转Θ°呢?这可以通过以下几步做到:

  • 通过一次平移,使旋转轴通过原点。
  • 适当的绕Y及/或Z轴旋转,使旋转轴位于沿X轴。
  • 绕X轴旋转Θ°。
  • 做使旋转轴对齐X轴的旋转的逆变换。
  • 做使旋转轴过原点的平移的逆变的。

我们对3D模型所做的大部分变换的都是可逆的,但并不全是——下一节我们可以看到那些不能的。

投影[编辑]

我们的大多数显示和输出设备都不是三维的。因而,需要将三维的图像投影到一个二维的界面上(比如显示屏,或者打印页)以便于我们能够查看。

主要有两种方式来进行这样的投影。第一种是投影,即从三维物体的每一个画出相互平行的直线,到代表显示界面的平面上:

OrthographicProjection.svg

关于正投影的更多内容

另一种方法是透视投影,即画出的直线并不平行,而是交于代表观看者眼睛位置的一点:

PerspectiveProjection.svg

投影也是一种线性变换。但当把一个三维的物体弄平到一个二维的界面中时,某些信息就丢失了。也就是说这属于不可逆变换;它们不能被取消,至少来说不能被单独取消——深度信息都丢失了。

关于透视投影的更多内容

数学上的透视概念首先由Alhazen在11世纪提出,并于四百年后,由意大利文艺复兴时期的画家使之发扬光大。