跳至內容

Blender 3D︰從入門到精通/坐標變換

維基教科書,自由的教學讀本

坐標變換

[編輯]

用某種方法改變坐標值的任何一種操作,被稱為變換。比如,你拿起一個物體並把它移到房間中的任何一處而不改變它的方向,這樣物體上的每一個點相對於房間的坐標都調整了一定的數值,這個數值取決於作物舊位置與新位置間的距離和方向;這就叫做平移變換。

物體處於原位置
物體變換到新的位置

如果你只能原地轉動物體,而不將它從原位置移開,這就叫做旋轉

物體旋轉45°

如果物體發生了變大或者變小,就被稱為縮放變換。在現實世界裡,只有很少的物體可以被縮放——比如,一個氣球可以通過充氣或者放氣來變得更大或更小,但保齡球就不能這樣改變尺寸。而在計算機圖像的世界中,任何物體都可以被縮放。縮放可以是按比例的(在所有維度上同等執行)也可以是不按比例的。

物體在原位置上按比例縮放50%
物體在原位置上垂直縮放50%

線性變換

[編輯]

在這裡,我們所關注的最主要的坐標變換各類被稱為線性變換。直線變換後依然是直線;它們不會變成曲線。比如,下圖說明對中間的正方形進行了三種線性變換:一個縮放,一個剪切傾斜變換,一個旋轉,而剩下的一個變換不是線性的,因為它在原來不是曲線的地方引入了曲線。

多重變換

[編輯]

它可能是由一系列的變換串連或者組合而成。由此產生的可能用一個操作來完成一大堆事情——如平移、旋轉、縮放等。然而,組成這一變換的每一個變換的順序就變得很重要——通常來說,它們的順序是不可交換的。比如,比較一下先向前移動我們的模型然後使它繞X軸旋轉的結果:

平移然後旋轉

與先進行旋轉的結果::

旋轉然後平移

逆變換

[編輯]

找出一個變換的逆變換(即,可以取消其效果的反向變換)是相當普遍的需求。例如,一個繞X軸 +45°的旋轉可以通過繞相同軸 -45°的旋轉來取消(按約定順時針方向為正,逆時針為負)。

逆變換有很多用處,其中之一是簡化某些變換的構成。

例如,要組成一個繞坐標系的X、Y或Z軸旋轉的變換很容易。但要繞任意軸旋轉Θ°呢?這可以通過以下幾步做到:

  • 通過一次平移,使旋轉軸通過原點。
  • 適當的繞Y及/或Z軸旋轉,使旋轉軸位於沿X軸。
  • 繞X軸旋轉Θ°。
  • 做使旋轉軸對齊X軸的旋轉的逆變換。
  • 做使旋轉軸過原點的平移的逆變的。

我們對3D模型所做的大部分變換的都是可逆的,但並不全是——下一節我們可以看到那些不能的。

投影

[編輯]

我們的大多數顯示和輸出設備都不是三維的。因而,需要將三維的圖像投影到一個二維的界面上(比如顯示屏,或者打印頁)以便於我們能夠查看。

主要有兩種方式來進行這樣的投影。第一種是投影,即從三維物體的每一個畫出相互平行的直線,到代表顯示界面的平面上:

關於正投影的更多內容

另一種方法是透視投影,即畫出的直線並不平行,而是交於代表觀看者眼睛位置的一點:

投影也是一種線性變換。但當把一個三維的物體弄平到一個二維的界面中時,某些信息就丟失了。也就是說這屬於不可逆變換;它們不能被取消,至少來說不能被單獨取消——深度信息都丟失了。

關於透視投影的更多內容

數學上的透視概念首先由Alhazen在11世紀提出,並於四百年後,由意大利文藝復興時期的畫家使之發揚光大。