Blender 3D:菜鸟到高手/Blender 中的坐标空间
我们先来看看 Blender 中是如何表示 3D 场景的。
正如在 "3D 几何体" 模块 中解释的那样,Blender 通过坐标来表示场景中的位置。一个位置的坐标由三个数字组成,它们定义了它距离固定原点的距离和方向。更准确地说
- 位置的第一个(或 x-)坐标定义为它距离 YZ 平面(包含 Y 轴和 Z 轴的平面)的距离。位于该平面 +X 侧的位置被分配正 x 坐标,位于 -X 侧的位置被分配负 x 坐标。
- 它的第二个(或 y-)坐标是它距离 XZ 平面的距离,位于该平面 -Y 侧的位置具有负 y 坐标。
- 它的第三个(或 z-)坐标是它距离 XY 平面的距离,位于该平面 -Z 侧的位置具有负 z 坐标。
因此,原点(位于所有三个轴和所有三个平面的交点)具有坐标 (0, 0, 0)。
Blender 将上面描述的坐标系称为 全局坐标系,虽然它并不真正是全局的,因为每个场景都有自己的全局坐标系。每个全局坐标系都有一个固定的原点和一个固定的方向,但我们可以通过在场景中移动虚拟相机和/或旋转相机来从不同的角度观察它。
全局坐标对于包含单个固定对象的场景和每个对象仅是场景中单个点的场景来说是足够的。当处理四处移动的物体(或多个具有大小和形状的物体)时,为每个物体定义一个 **局部坐标系** 将是有帮助的,即一个可以随物体移动并跟随物体的坐标系。物体局部坐标系的原点通常称为 **物体中心**,尽管它不必与物体的几何中心重合。
Blender 中的 3D 对象主要使用 **顶点**(物体中的点,单数形式:**顶点**)来描述。顶点的全局坐标取决于
- 顶点在物体 **局部** 坐标系中的 (x, y, z) 坐标
- 物体中心的方位
- 局部坐标系相对于全局坐标系的任何旋转(转动),以及
- 局部坐标系相对于全局坐标系的任何缩放(放大或缩小)。
例如,图 1 中的茶杯由包含 171 个顶点的网格模型描述,每个顶点相对于杯子的中心都具有不同的局部 (x, y, z) 坐标。如果你 **平移** 茶杯(在不旋转的情况下移动它),模型中唯一需要改变的部分是中心的全局坐标。所有顶点的局部坐标将保持不变。
任何物体都可以作为同一个场景中一个或多个其他物体的 **父** 物体,然后这些物体被称为 **子** 物体。(一个物体不能有多个直接父物体,但父物体本身也可能是其他物体的子物体。)
如果一个物体有父物体,它的位置、旋转和缩放是在父物体的局部坐标系中测量的,几乎就像它是父物体的顶点一样。即子物体中心的方位是从父物体中心而不是全局坐标系的原点测量的。因此,如果你移动一个父物体,它的子物体也会移动,即使子物体的坐标没有改变。子物体局部坐标系的方向和缩放同样是相对于其父物体测量的。如果你旋转父物体,子物体将会旋转(并且可能绕轴旋转)。
物体之间的父子关系使执行(和动画)任意方向的旋转、缩放和移动变得更加简单。在 **图 1b** 中,茶杯是右边坐标交叉的子物体。该交叉本身是不可见父物体的子物体。(它既是父物体又是子物体。)在茶杯的局部坐标系中,它没有旋转,但当右边的交叉围绕其 Z 轴旋转时,它会导致茶杯旋转和绕轴旋转。在实际动画中,当拿着茶杯的角色旋转时,茶杯会相应地改变位置,这会更容易。
考虑到场景的观看者,还有一个坐标空间:视图坐标。在 **图 2** 中,观看者用相机表示。视图坐标的 Z 轴始终直接指向正交投影中的观看者。X 轴指向右侧,Y 轴指向向上(**图 3**)。
实际上,如果你没有进行其他设置,你始终在视图坐标中工作*。如果您在建模之前对视图进行了对齐,例如,如果一个物体有一个倾斜的屋顶,并且您想创建一个适合该屋顶的窗户,那么在物体的局部坐标系中构建窗户将非常复杂,但是,如果你首先将你的视图对齐到倾斜的屋顶,你就可以轻松地在该视图坐标系中工作。
(* 在 Blender 2.6 系列中,默认设置已更改为全局坐标。视图坐标仍然是一个选项。)
如果您在三个标准视图(正面/顶部/侧面)中的一个中工作,视图坐标的对齐方式将适合全局坐标。因此,在其中一个标准视图中建模是相当自然的,许多人发现这是最好的建模方式。
虽然 Blender 是一个 3D 程序,但只有物体的面才是可见的。面的方向对于很多原因都很重要。例如,在日常生活中,一本平放在桌上的书似乎相当明显。这需要桌子表面和书表面相互平行。如果我们在 3D 程序中将一本放在桌子上,没有机制强制这些表面平行。艺术家需要确保这一点。
面的方向可以用所谓的 **表面法线** 来描述。它始终垂直于表面。如果选择多个面,则结果法线将从每个面的法线平均得到。在 **图 4** 中绘制了可见面的法线坐标。
这个概念可以应用于物体上的单个点,即使这些点本身没有方向。点的法线是相邻面的法线的平均值。
在后面的部分(例如,谈论纹理)中,您会遇到标有“U”和“V”的坐标。这些只是为了避免与“X”、“Y”和“Z”混淆而选择的不同字母。例如,光栅图像通常布置在一个平坦的二维平面上。图像上的每个点都可以用 X 和 Y 坐标识别。但是 Blender 可以获取此图像并将其作为纹理包裹在 3D 物体的表面。物体上/中的点具有 X、Y 和 Z 坐标。因此,为了避免混淆,图像上的点使用 U 和 V 来标记它们的坐标,而不是 X 和 Y。然后,我们将“UV 映射”称为确定每个 (U, V) 图像点在 (X, Y, Z) 物体上最终位置的过程。