XNA - Basic HeightMap (高度映射)

摘要:XNA - Basic HeightMap (高度映射)

現在要跟大家介紹甚麼是HeightMap,為什麼會想要介紹這個呢?

最近在Trace XNA Creator Club的專案,剛好看到這個專案檔案...


範例

剛開始不知道這個是甚麼的人,可能會覺得很奇怪,不知道專案幹嘛取成這樣的名字...

只是看到一顆球在地圖上面移動而已,沒有甚麼太大的差別

仔細看的話你就會發現,事實上這一張地圖,就是用一張黑白灰階的圖片製作而成的



就是這張圖片,而他原始的3D樣子為



經由上面的3D模型,轉換成2D的圖片...

他的做法一般都是制定一個平面,重那個平面往下垂直計算那個點的距離,再把他畫分成255個階級,看他屬於哪個數值...

這樣子做法,看起來就是深度,越深數值越白,越上面越黑,看你是怎麼設定的

將每一個PIXEL都去做計算,在將灰階值,儲存在一張BITMAP上面的點

上述模型,全部做完,就變成上面那張2D圖片...

再來就是如何將地圖恢復原狀呢???

你現在只知道兩個資訊
1. 每個PIXEL的位置
2. 灰階值

而事實上呢,只要需要以上數據就夠恢復原來地圖了


從上面那張圖片,就大概可以看出來了吧

所謂的PIXEL位置,也就是XZ平面上面的座標,而高度呢就是灰階值...

以上就是做簡短的介紹,沒有說的特別深入,當然恢復地圖的方式有很多種,你甚至還可以變換出新的地圖,看你怎麼設定"高度"的取樣值...

在來說一說這樣做有甚麼好處???
你們覺得一個模型FBX或是X FILE,他們的檔案大小,跟一張2D圖片比較,誰會比較大?
當然是3D圖片囉~~

再來,經由CONTENT PIPELINE以後3D模型跟2D圖片,誰會比較大?
當然是3D圖片

所以很多遊戲設計,都用Height Map的方式儲存地圖
像是
Myth、Battlefield 2等眾多遊戲用這種方式製作,當然隨著儲存裝置日異漸大,省那些空間,可能對於一些人來說根本沒有影響,所以還是很多人用FBX或是X建立地圖。

希望以上講解,大家能夠對Height Map有初步的了解

圖片轉至
www.povray.org

wiki - Heightmap