Blender 3D︰从入门到精通/Blender中的坐标空间
我们将开始关注如何在Blender中表示3D场景。
正如 "三维几何" 一节中所说的,Blender在场景中是用坐标来表示位置的。一个位置的坐标包括三个用来表示其相对于原点的距离和方向的数字。详细的说:
- 位置的第一个坐标(或者说X坐标)表示它到YZ平面(同时包含Y和Z轴的平面)的距离。位于该平面+X方向上的位置的X坐标值为正,-X方向的为负。
- 它的第二个坐标(或者说Y坐标)表示它到XZ平面的距离。同样,位于该平面-Y方向的位置的Y坐标值为负。
- 它的第三个坐标(或者说Z坐标)表示它到XY平面的距离。位于该平面-Z方向的位置的Z坐标值为负。
所以原点(同时位于3个轴和3个平面上)的坐标是(0,0,0)。
全局和局部坐标
[编辑]Blender中将上述坐标系称为全局坐标系,虽然它并非真正全局的——每个场景有自己的全局坐标系。每个全局坐标系有自己的原点和基准方向,但我们可以通过在场景中移动或旋转一个虚拟的摄像机来从不同方向查看它。
如果场景中只有单一固定物体,或每个物体都只是场景中的一个点,那全局坐标系就完全足够了。但当处理移动的对象(或者多个有大小与形状的物体)时,为每个物体规定一个局部坐标系(一个可以随物体移动的坐标系)就很有必要了。一个物体的局部坐标系的原点通常被称为物体的中心(即使它与物体的几何中心并不需要相符)。
Blender中的3D物体通常用顶点(物体上的点,单数形式:vertex)来描述。一个顶点的全局坐标取决于:
- 顶点在物体的局部坐标系中的(x,y,z)坐标
- 物体中心的位置
- 局部坐标系相对于全局坐标系的任何旋转,以及
- 局部坐标系相对于全局坐标系的任何缩放(放大或缩小)。
例如,图1中的茶杯是一个由171个顶点构成网格模型,每个顶点相对于茶杯的中心有不同的局部(x,y,z)坐标。如果你平移这个杯子(移动而不旋转),模型唯一改变的部分只有中心的全局坐标;它所有顶点的局部坐标都不会发生变化。
子物体坐标
[编辑]任何一个物体都可以作为场景中一个或多个其它物体的父物体,那这些物体就被称为它的子物体。(一个物体最多只能有一个直接的父物体,但父物体也可以作为其它物体的子物体。)
如果一个物体有父物体,那它的位置、旋转和缩放都是用它在父物体的局部坐标系的位置来衡量的,就好像它只是父物体的一个顶点。也就是说,子物体中心的位置是用它相对于父物体中心的位置来衡量,而非相对于全局坐标系原点的位置。所以,当您移动一个父物体时,它的子物体也会跟着移动,即使子物体的坐标没有改变。子物体的坐标系的方向和比例同样是相对于父物体来衡量的。如果你旋转父物体,子物体也跟着相同的轴旋转(并且可能绕动)。
物体间的父-子关系使在任意方向上进行旋转和缩放变得更容易(甚至是制作动画)。在图 1b中茶杯是坐标十字右边的子物体。十字也是它自身的子物体(它既是父又是子)。在杯子的局部坐标系中,它并没有旋转,但当十字绕它的Z轴右旋转时,也使得杯子进行旋转和绕动。
视图坐标
[编辑]考虑到场景的观看者,这里还存在一个坐标空间:视图坐标。在图 2中,镜头代表了观看者。视图坐标的Z轴总是直接正对着指向观看者。X轴向右,Y轴向上(图 3)。
事实上你总是在使用视图坐标,只要不做特别设置。这在当你对齐视角来建模尤其的方便,比如:如果一个物体有一个倾斜的顶部,而你想要在它的顶上创建一个窗户,如果使用物体的局部坐标系来创建这个窗户将会很复杂,但如果你先将视角对齐物体倾斜的顶,你就能很容易的在视图坐标系中完成它。
如果你使用三个基本视图之一(前视图/顶视图/侧视图),视图坐标也就与全局坐标的方向对齐了;因此,使用基本视图之一进行建模是非常自然的,很多人都认为这是建模的最佳方式。
法线坐标
[编辑]尽管Blender是一个3D程序,只有面是可见的。由于很多原因,面的方面还是非常重要。比如,在日常生活中,一本书平放在桌上是很明显的。这要求桌子的表面与书的表面平行。如果我们在3D程序中放一本书在桌子上,这里没有保证这些表面平行的机制;我们需要自己确保这一点。
面的方向可以通过所谓的法线来描述。它总是垂直于表面。如果同时选中多个面,那总的法线方向取决于每个面的法线方向的平均值。在 图 4 中画出了每个可见的面的法线坐标。
这一概念可以应用到物体上的单个的点,即使点自身并没有方向。点的法线方向是与它相邻面的法线方向的均值。
此教程的图片使用 Blender v2.46. 制作