為什么我們需要多個坐標系統呢?任何一個坐標系統都是無限的,包括了空間中的所有點。所以,我們用任意一個坐標系統,然后規定它是“世界空間”,然后所有的點位置都可以用這個坐標系統來描述了。難道就不能更簡單點了么?實踐證明的答案是不能。很多人發現在不同的場景下使用不同的坐標系統更方便。
使用多個坐標系統的原因是,在一個特定的場景上下文中,可以擁有一份確定的信息。也許整個世界上的所有點都可以在一個坐標系里表示,然而,對於一個確定的頂點a,我們可能不知道它在世界坐標中的位置,但是我們可能可以明確它在相對於某些坐標系統中的位置。
比如,有兩個相鄰的城市A,B。A城市聰明的居民們在代價公認的一個城市的中心建立了坐標原點,然后用羅盤所指的方向來作為坐標軸,而B城市的居民可能在他們的城市中一個任意的位置建立了坐標原點,然后然坐標軸的方向在一個任意的方向,兩座城市的居民都覺得他們各自的坐標系統十分便利。然而,這時候有一名工程師被分配了一個任務,要求他在兩個城市之間建立第一條公路,而且需要一個地圖來清楚地看兩個城市以及城市間的所有細節。因此引入了更為便利的第三坐標系,這個坐標系對於兩座城市的居民沒有任何影響。兩座城市中各自的坐標點都需要從本地坐標轉換成新的坐標系的坐標來繪制新地圖。
在今天開明的時代,我們習慣於在媒體上聽到文化相對主義,這促使人們認為,認為一個文化或信仰系統或國家議程優於另一個文化或信仰系統是不正確的。 將想象力擴展到我們所謂的“轉換相對主義”並不是太大的飛躍,即沒有地方或方向或坐標系統被認為優於其他方面的論點。 在某種意義上,這是真的,喬治·奧威爾解釋:“所有的坐標系統被認為是平等的,但有些是比別人更平等”。現在讓我們看看一些在3D圖形中常見的坐標系統。
不同的坐標系統都是有必要的,因為只有在一些特殊的場景下這些信息才是有意義和可以使用的。在這一節,將會有一些公共坐標系的例子。
世界坐標系(World space)
作者寫這本書的時候在芝加哥。有一個確定的經緯度,這個經緯度是絕對的,所以,你並不需要知道芝加哥在哪里,不需要芝加哥在美國,因為這個經緯度是絕對的。在這個世界上,人們規定經度是0的地方在格林尼治天文台,緯度為0的地方在赤道。
(有一些好奇的讀者可能意識到這個經緯度的坐標系並不是笛卡爾坐標系了,這是一種其他的坐標系,但是對於這次我們討論的話題沒有什么影響,我們生活在一個二維的平面上,就是地球的表面,只不過這個平面是包裹在一個球的外層的。)
世界坐標系是一個特殊的坐標系,它建立了一個全局的場景,有了這個全局的坐標系,其他的坐標系統就可以被確立了。換句話說,我們可以把在其他坐標系中的點轉成世界坐標系來表示。但是我們不能用更大的坐標系來表示和包括世界坐標系了。
在非技術的角度來看,世界坐標系是建立一個我們關心的最大的坐標系統,但很多情況下這並不是整個世界,舉個例子,如果我們希望渲染一個笛卡爾坐標系中的一個畫面,我們會真實用到的笛卡爾坐標系就是“世界”,我們沒必要關心這個世界坐標系被定位在哪里,甚至它是否存在於真實的世界中。
我們之前說了世界坐標系是用來描述點的絕對坐標的。希望你聽到這樣的說法的時候耳朵有些刺痛,因為你知道這不完全是真理。我們這里說的絕對坐標是指的在這個我們剛定義的最大的坐標系統中的坐標,而不是在真實的世界中的坐標。就比如之前所說的,你可能知道你現在的位置的經緯度,但是放眼整個宇宙,假設把世界坐標系的原點放在整個銀河系的中心的時候,怕是沒有人能說出來自己的確切位置了。
世界坐標系在很多時候也被叫作全局坐標系和宇宙坐標系。
物體坐標系(Object spce)
物體坐標系是關聯了一個指定的物體,每一個物體都有一個獨立的物體坐標系。當一個物體移動旋轉改變了它的朝向,那么與這個物體關聯的物體坐標系也隨之改變了,也一起改變了朝向。比如,我們都帶着自己的坐標系統,如果我們對你說“向前走一步”,我們給了你一個相對於你自己的物體坐標系的指令(請原諒我們把你說成是一個物體,其實你知道我們想表述的意思的)。我們沒辦法描述你要移動的絕對方向,你可能會向北移動,也可能向南移動,這些“向前”,“向后”,“向左”,“向右”對於一個物體坐標系是有意義的。當你駕車的時候,有的人給你一些指示,有時候告訴你“向左轉”,還有的時候告訴你“向東走”。“向左走”是對於一個物體坐標系的,而“向東走”呢,是對於世界坐標系來說的。
位置和方向在物體坐標系也是可以被明確的。比如,當我問你你車上的杯子在哪里,你不會說在芝加哥,甚至不會說在哪條街道,在這種情況下,如果回答是一個相對於全局的位置是沒有意義的,我當然希望的是你能說清楚你的杯子位於你的車的物體坐標系的哪里。
在圖形學中,物體坐標系又被稱作模型坐標系(model space),因為模型的頂點都是在這個模型坐標系中表示的。物體坐標系也被廣泛用於物理中,比如,用身體的中軸線來當坐標軸。
相機坐標系(Camera Space)
有一個比較特殊的物體坐標系就是相機坐標系,這個坐標系是我們的視點用來渲染看到的場景所用的坐標系。在相機坐標系中,相機一直處於相機坐標系的原點,+x的方向是向右的,+z的方向是向前的(向屏幕里的方向,因為使用的是左手坐標系),+y的方向是向上。這里的像上不是世界坐標的正上,而是一個相機的上方向。可以來看一下這個相機坐標系的圖片。
這里要注意一些細節,相機的坐標是三維空間,而我們在屏幕上看到的是二維的。因為我們是做了一個映射,把三維空間的東西映射到了一個二維的平面上,這個映射就是大家知道的“投影”了。