跳至內容

Blender 3D︰從入門到精通/Blender中的坐標空間

維基教科書,自由的教學讀本
圖 1: 三維場景中的物體。坐標系的中心是全局坐標系原點。

我們將開始關注如何在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: 父物體作為子物體全局坐標的來源。子物體是杯子;父物體的方向用彩色的箭頭表示。
上圖的動畫

任何一個物體都可以作為場景中一個或多個其它物體的父物體,那這些物體就被稱為它的子物體。(一個物體最多只能有一個直接的父物體,但父物體也可以作為其它物體的子物體。)

如果一個物體有父物體,那它的位置、旋轉和縮放都是用它在父物體的局部坐標系的位置來衡量的,就好像它只是父物體的一個頂點。也就是說,子物體中心的位置是用它相對於父物體中心的位置來衡量,而非相對於全局坐標系原點的位置。所以,當您移動一個父物體時,它的子物體也會跟著移動,即使子物體的坐標沒有改變。子物體的坐標系的方向和比例同樣是相對於父物體來衡量的。如果你旋轉父物體,子物體也跟著相同的軸旋轉(並且可能繞動)。

物體間的父-子關係使在任意方向上進行旋轉和縮放變得更容易(甚至是製作動畫)。在圖 1b中茶杯是坐標十字右邊的子物體。十字也是它自身的子物體(它既是父又是子)。在杯子的局部坐標系中,它並沒有旋轉,但當十字繞它的Z軸右旋轉時,也使得杯子進行旋轉和繞動。

視圖坐標

[編輯]
圖 2: 視圖坐標與投影平面

考慮到場景的觀看者,這裡還存在一個坐標空間:視圖坐標。在圖 2中,鏡頭代表了觀看者。視圖坐標的Z軸總是直接正對著指向觀看者。X軸向右,Y軸向上(圖 3)。

Figure 3: 從觀看方向上看視圖坐標

事實上你總是在使用視圖坐標,只要不做特別設置。這在當你對齊視角來建模尤其的方便,比如:如果一個物體有一個傾斜的頂部,而你想要在它的頂上創建一個窗戶,如果使用物體的局部坐標系來創建這個窗戶將會很複雜,但如果你先將視角對齊物體傾斜的頂,你就能很容易的在視圖坐標系中完成它。

如果你使用三個基本視圖之一(前視圖/頂視圖/側視圖),視圖坐標也就與全局坐標的方向對齊了;因此,使用基本視圖之一進行建模是非常自然的,很多人都認為這是建模的最佳方式。

法線坐標

[編輯]
圖 4: 面的法線坐標空間。法線方向用藍色表示

儘管Blender是一個3D程序,只有面是可見的。由於很多原因,面的方面還是非常重要。比如,在日常生活中,一本書平放在桌上是很明顯的。這要求桌子的表面與書的表面平行。如果我們在3D程序中放一本書在桌子上,這裡沒有保證這些表面平行的機制;我們需要自己確保這一點。

面的方向可以通過所謂的法線來描述。它總是垂直於表面。如果同時選中多個面,那總的法線方向取決於每個面的法線方向的平均值。在 圖 4 中畫出了每個可見的面的法線坐標。

這一概念可以應用到物體上的單個的點,即使點自身並沒有方向。點的法線方向是與它相鄰面的法線方向的均值。

此教程的圖片使用 Blender v2.46. 製作