摘要: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