現在要跟大家介紹甚麼是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
最近在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
文章標籤
全站熱搜

其實除了減少儲存量外,High map還有加速碰撞運算(應該也是這個Sample主要的用途)、以及做地形LOD的好處喔!
嗯 贊同這個說法"加速碰撞運算" 要判定兩個3D模型有沒有碰撞,可以畫分半徑,但是這種做法在一個凹凸不平的情況,分長的不好用... 所以用HeighMap方式,可以記錄每一個PIXAL高度,在來跟物體高度做比較,這樣也比較有效率,可以剛剛好貼在地圖上面...
"經由上面的3D模型,轉換成2D的圖片..." 這句話是不是有點小問題 好像顛倒了
嗯… 如果以這個範例來說,省空間是完全不列入考量的= =" 因為它在 ContentPipeline 處理的時候,就將 HeightMap 製作成一個3D模型擋,檔案大小挺可觀的XD 這篇應該還是強調碰撞的部分O_O
對的 他在content pipeline中會建立一個模型擋 這種地圖製作方式有蠻多缺點的,只是他碰撞的部分計算簡單。 缺點部分就是他當中是用比例的方式,來決定兩點間的間距,還有就是要儲存成heightmap的圖片,已經先被取樣過一次,很多細節都不見了,所以這樣地圖出來有點粗糙... 加速運算才是他的宗旨
雖然3D技巧才是本篇文章的重點,但因我情況特別故詢問該2D灰階圖的製作… 這2D灰階圖是否是用PhotoShop的雲狀濾鏡加兩層做的? 順帶一提,我也有玩jubeat XD
HEIGHT MAP可以用3D MAX產生 他只是一張257*257的BMP圖片 所以可以用你所說的方式產生 附帶:我沒完JU很久了XD