多邊形網狀表示法是目前通用的物體模型近似建構的方式之一, 基本概念是由最小的多邊形(三角形網狀)去組合出物體的形狀如圖一
圖一
舉例來說, 一個正方形表面, 要先知道是由哪兩個最小單元的三角形網狀面組成, 而這兩個三角形又是個別由哪三條邊線所建構出來的, 最後每條邊線是由哪兩點構成的, 如圖二.
圖二
所以對於一個最小單元的多邊形(三角形網狀),我們應該要有其頂點的資訊, 線的資訊和面的資訊.上述的資訊都需要存在資料結構內 , 但若每個人對於模型所需的資訊存放格式都不同的話, 對於後續的研究多少會造成發展上的阻礙, 故出現了一些通用的存放格式.以OBJ 檔案格式為例,如圖三, 先看灰色區塊, 小寫英文字母v ,代表某個頂點,其後面三個數字分別是它的x,y和z座標位置(此時的坐標系還是物體自己本身的坐標系)
圖三
字母vt, 代表的是某個頂點的紋理座標 u和 v, 此紋理座標的功用是透過其座標值對應到的紋理像素顏色,模擬出物體表面的材質感,如圖四
圖四
再來看到字母vn, 代表的是某個頂點的法向量值, 此法向量可以用來計算出光線照射到物體上的反應, 最後看到 f 字母 ,代表的是某個面分別是由哪三個頂點構成, 而每個頂點又會有對應到的法向量及紋理座標值
我們還可以設定此模型它的質地表現, 像是皮膚的粗糙感, 玻璃的光滑感,這些資訊都可以放在某個mtl檔內.
有了模型的描述後, 對於最終的呈像,就跟真實的世界一樣,需要設定光源資訊讓光線照亮物體,並且也要有觀察者,接收反射出來的光進入我們的眼睛(鏡頭), 還要決定好成像的位置在螢幕的哪邊, 這些設定以及對硬體輸出輸入裝置的操作, 可以透過現有的API 幫我們輕鬆做到像是: OpenGL , Direct3D等, 如圖五, 在下一個小節將更進一步的介紹目前繪圖硬體的成像原理
圖五



沒有留言:
張貼留言