Unity3D自帶功能:地形(Terrain)


Unity3D中的地形類似于Maya中使用置換貼圖來(lái)變形高段數(shù)的多邊形平面齿诞,其原理是自動(dòng)創(chuàng)建一個(gè)中等多邊形密度的mesh plane(多邊形平面)芭商,然后指定一張16bit的灰階圖作為height map(高差圖),并根據(jù)mesh各個(gè)頂點(diǎn)所對(duì)應(yīng)的灰度數(shù)值沿著Y軸改變?cè)擁旤c(diǎn)的高度,形成高低起伏的復(fù)雜地形。

Unity3D內(nèi)置了一套簡(jiǎn)單的brush(筆刷)工具來(lái)方便用戶對(duì)地形物體的編輯修改。

通過(guò)菜單GameObject > 3D Object > Terrain可以創(chuàng)建一個(gè)Terrain (地形)馅笙。


Terrain Settings

Terrain Settings是對(duì)Terrain整體的參數(shù)設(shè)置面板。

最上面的一排按鈕分別用來(lái)對(duì)地形及植被進(jìn)行“刷制”的工具面板切換厉亏,最右邊的Terrain Setting面板是針對(duì)地形整體的設(shè)置董习,這里挑一些常用的重點(diǎn)的來(lái)講:

  • Base Terrain:基本地形設(shè)置
    • Draw:是否顯示該地形
    • Pixel Error:貼圖和地形之間的準(zhǔn)確度,值越高越不準(zhǔn)叶堆,但系統(tǒng)負(fù)擔(dān)越小
    • Pixel Map Dist.:在多少距離以外地形貼圖將自動(dòng)轉(zhuǎn)為較低分辨率(以提高效率)
    • Cast Shadow:是否投射陰影(如果是很平的地形可以不投射陰影)
    • Material:地形使用的材質(zhì)類型
    • Reflection Probes:地形是否會(huì)被反射探球所計(jì)算(也就是說(shuō)是不是能出現(xiàn)在反射貼圖里面)
    • Thickness:在發(fā)生碰撞時(shí)阱飘,該地形向-y方向延伸的厚度(用來(lái)防止高速物體穿過(guò)較薄的地形)
  • Tree & Detail Objects:樹(shù)和細(xì)節(jié)物體
    • Detail Distance:在多少米視距范圍內(nèi)顯示Details物體
    • Collect Detail Patches
      -Detail Density:Details物體的密度(1單位面積內(nèi)最多出現(xiàn)多少個(gè)Detail物體)
    • Tree Distance:在多少米視距范圍內(nèi)顯示Tree物體
    • Billboard Start:多少米以外Tree物體開(kāi)始顯示為一張貼圖
    • Fade Length:從多少米以外Tree物體開(kāi)始被逐漸替換成貼圖
    • Max Mesh Trees:場(chǎng)景中最多出現(xiàn)多少顆真正的多邊形樹(shù)(也就是說(shuō)超過(guò)這個(gè)數(shù)量的樹(shù)不論距離攝影機(jī)的距離有沒(méi)有達(dá)到標(biāo)準(zhǔn)都會(huì)被替換成一張貼圖),這個(gè)值太小的話虱颗,“跳幀”現(xiàn)象會(huì)非常明顯
  • Wind Settings for Grass:風(fēng)和草的設(shè)定
    • Speed:風(fēng)速沥匈,風(fēng)速越快,草的擺動(dòng)越大
    • Size:草物體的基礎(chǔ)大小
    • Bending:草物體被風(fēng)吹彎的最大程度
    • Grass Tint:對(duì)草物體統(tǒng)一添加一個(gè)顏色忘渔,通常會(huì)設(shè)置為與地面顏色接近的顏色
  • Resolution:地形分辨率
    • Terrain Width:地形最大寬度(米)
    • Terrain Length:地形最大長(zhǎng)度(米)高帖,所以默認(rèn)500×500就是500米×500米,1/4平方公里區(qū)域范圍
    • Terrain Height:地形最大高度(米)畦粮,這個(gè)值決定了我們能夠刷出的最高的地形高度
    • Heightmap Resolution:刷出來(lái)的高差圖的分辨率散址,513的話代表一個(gè)像素值控制大概1米區(qū)域的地貌,由于我們的筆刷是按照像素來(lái)規(guī)定大小的宣赔,如果我們?cè)谝粋€(gè)較低的Heightmap Resolution下刷好地面以后修改Heightmap Resolution為一個(gè)較高的值预麸,會(huì)發(fā)現(xiàn)我們刷好的范圍會(huì)變成一個(gè)角落里的一小塊地形,所以千萬(wàn)不要刷到一半的時(shí)候再去修改這個(gè)數(shù)值
    • Detail Resolution
    • Detail Resolution Per Patch
    • Control Texture Resolution:控制貼圖的分辨率儒将,所謂控制貼圖是說(shuō)控制各層貼圖的“透明通道”的分辨率吏祸,比如基層貼圖是泥土,上層貼圖是草地钩蚊,那么草地貼圖本身是完全覆蓋的贡翘,但通過(guò)一個(gè)“控制貼圖”的灰度來(lái)決定每個(gè)點(diǎn)草地貼圖與泥土貼圖如何融合
    • Base Texture Resolution:對(duì)于很遠(yuǎn)處的地形蹈矮,Unity3D會(huì)切換成顯示一個(gè)自動(dòng)創(chuàng)建好的“融合”了各層貼圖效果的Basemap,這樣比去計(jì)算多層貼圖融合要高效很多鸣驱,這個(gè)參數(shù)就是設(shè)置這個(gè)Basemap的分辨率的
  • Heightmap:這里可以導(dǎo)入RAW圖像作為heightmap使用泛鸟,或者將當(dāng)前的heightmap導(dǎo)出成RAW圖像。我們可以從地理數(shù)據(jù)庫(kù)中獲得真實(shí)的某一地區(qū)的地形高差圖踊东,也可以利用第三方工具(如:Bryce)創(chuàng)建地形然后將高差圖導(dǎo)出給Unity3D使用北滥。

要注意的是,Heightmap Resolution是指水平方向的分辨率递胧,而不是地形的垂直分辨率碑韵,地形垂直分辨率取決于高差圖的色深范圍。缎脾,如果是普通jpg或者png圖片做高差圖的話祝闻,垂直分辨率就是256,代表最多能表達(dá)256個(gè)不同高度遗菠,用這樣的垂直分辨率刷高山區(qū)域联喘,很容易出現(xiàn)“梯田”狀的結(jié)果,所以最好使用16bit或32bit色深的高動(dòng)態(tài)圖片來(lái)做高差圖辙纬。

我們用筆刷刷出來(lái)的heightmap都是16bit的豁遭。


Raise / Lower Terrain

按下鼠標(biāo)左鍵開(kāi)始提升地形高度,如果同時(shí)按住shift鍵贺拣,則降低地形高度直到0蓖谢。

  • Brushes:我們可以選擇不同的筆刷形狀來(lái)進(jìn)行繪制工作,簡(jiǎn)單來(lái)說(shuō)就好像在Photoshop里面繪制一張16bit色深的灰階圖譬涡。
  • Settings
    • Brush Size:筆刷大小
    • Opacity:筆刷透明度
    • Lighting:關(guān)于光照烘焙的詳細(xì)設(shè)置

Paint Height

直接刷出特定高度闪幽,按住shift鍵獲取某一點(diǎn)的高度。非常適合用來(lái)刷出非水平面高度的平整地形涡匀,比如山頂或山間的一塊平整地面等等盯腌。同時(shí)如果場(chǎng)景中有水面,由于Terrain不能刷出水平面以下的地形(最低刷到水平面)陨瘩,可以首先將全部地形提升到一定高度腕够,再將水域地形刷低。

  • Settings
    • Brush Size:筆刷大小
    • Opacity:筆刷透明度
    • Height:目標(biāo)高度舌劳,后面的Flatten按鈕可以將這一高度應(yīng)用到全部地形
    • Lighting:關(guān)于光照烘焙的詳細(xì)設(shè)置

Smooth Height

相當(dāng)于光滑筆刷工具

  • Settings
    • Brush Size:筆刷大小
    • Opacity:筆刷透明度
    • Lighting:關(guān)于光照烘焙的詳細(xì)設(shè)置

Paint Texture

在地形表面上繪制貼圖帚湘。

首先需要在Textures欄中點(diǎn)擊Edit Textures...,再選擇Add Texture以添加一層貼圖甚淡。

在這個(gè)“添加地形貼圖”面板中我們可以設(shè)置一張顏色貼圖和一張法線貼圖客们,并指定貼圖的重復(fù)度。如果檢測(cè)出顏色貼圖含有Alpha通道材诽,就會(huì)將這個(gè)Alpha通道與作為光滑度的貼圖底挫,否則就會(huì)出現(xiàn)一個(gè)Smoothness參數(shù)供我們調(diào)節(jié)這一層表面的光滑度,此外還提供一個(gè)Metallic參數(shù)供我們調(diào)節(jié)這一層表面的金屬顏色脸侥。

這里的貼圖都需要處理成無(wú)縫貼圖建邓,否則場(chǎng)景中會(huì)出現(xiàn)明顯的接縫。貼圖不需要特別大睁枕,因?yàn)橹貜?fù)度會(huì)被設(shè)置得比較高官边,通常512或者1024分辨率的貼圖就可以了。

第一層貼圖會(huì)默認(rèn)覆蓋整個(gè)地形區(qū)域外遇,從第二層(從左往右)開(kāi)始注簿,添加好貼圖以后需要在地形上刷出該層貼圖的出現(xiàn)范圍。

  • Settings
    • Brush Size:筆刷大小
    • Opacity:筆刷透明度
    • Target Strength:相當(dāng)于筆刷的最大力度跳仿,配合Opacity參數(shù)可以得到比較細(xì)致的力度控制诡渴,當(dāng)然如果使用手繪板來(lái)繪制就更好了
    • Lighting:關(guān)于光照烘焙的詳細(xì)設(shè)置

需要編輯各層的貼圖設(shè)置只需點(diǎn)擊Edit Textures... > Edit Texture...,需要?jiǎng)h除貼圖層就點(diǎn)擊Edit Textures... > Remove Texture菲语。

我一直都覺(jué)得這是個(gè)非常精妙的設(shè)計(jì)妄辩,用無(wú)縫貼圖的大量重復(fù)來(lái)覆蓋區(qū)域,然后疊加多層貼圖以消除重復(fù)感山上,不論是顏色貼圖還是控制貼圖都不需要很大的尺寸就能覆蓋超大的地形區(qū)域眼耀。

可以嘗試在Maya中使用這種思路來(lái)設(shè)計(jì)地面材質(zhì)的shading network。


Place Trees

在地形上刷出樹(shù)來(lái)佩憾。

按下鼠標(biāo)左鍵開(kāi)始刷樹(shù)哮伟,按住Shift鍵再刷可以刪除已經(jīng)刷出來(lái)的樹(shù),按住Ctrl鍵再刷可以刪除當(dāng)前選擇的特定類型的樹(shù)妄帘。

在Trees欄點(diǎn)擊Edit Trees...楞黄,再選擇Add Tree,可以添加一個(gè)GameObject作為“樹(shù)”寄摆。這個(gè)物體可以是任意GameObject谅辣,并不一定非要是Tree Object。

然后就可以用鼠標(biāo)在地形表面“刷”出這類樹(shù)來(lái)了婶恼,同時(shí)也會(huì)出現(xiàn)具體的Settings參數(shù)桑阶。

  • Settings
    • Brush Size:筆刷大小
    • Tree Density:樹(shù)的密度,還可以點(diǎn)擊Mass Place Trees按鈕來(lái)用一大批樹(shù)布滿整個(gè)地形
    • Tree Height:樹(shù)的高度(Y軸縮放)勾邦,如果勾選Random?則可以設(shè)置一個(gè)范圍蚣录,系統(tǒng)自動(dòng)隨機(jī)生成不同高度的樹(shù)
    • Lock Width to Height:是否鎖定縮放比例,如果不鎖定眷篇,可以在下面Tree Width參數(shù)中設(shè)定樹(shù)的寬度(X軸和Z軸一定是等比縮放的)
    • Color Variation:顏色的隨機(jī)變化程度萎河,會(huì)自動(dòng)讓不同的樹(shù)的顏色產(chǎn)生一定的差異
    • Lighting:關(guān)于光照烘焙的詳細(xì)設(shè)置

我們可以添加多種type的樹(shù),然后一層層刷出復(fù)雜的森林結(jié)構(gòu)。

同樣的虐杯,我們也可以點(diǎn)擊Edit Trees... > Edit Tree給樹(shù)更換GameObject玛歌,或點(diǎn)擊Edit Trees... > Remove Tree刪除某一層的樹(shù)。

說(shuō)是Place Trees擎椰,其實(shí)可以用來(lái)放置各種場(chǎng)景物體支子,我個(gè)人比較喜歡用這個(gè)功能在場(chǎng)景中添加比較大塊的巖石,因?yàn)椴粫?huì)出現(xiàn)自旋的現(xiàn)象达舒。


Place Details

在地形上刷出細(xì)節(jié)物體值朋,通常用來(lái)做草。

按下鼠標(biāo)左鍵開(kāi)始刷細(xì)節(jié)物體巩搏,按住Shift鍵再刷可以刪除已經(jīng)刷出來(lái)的細(xì)節(jié)物體昨登,按住Ctrl鍵再刷可以刪除當(dāng)前選擇的特定類型的細(xì)節(jié)物體。

在Details欄點(diǎn)擊Edit Details...贯底,再選擇Add Grass Texture丰辣,打開(kāi)Add Grass Texture面板設(shè)置新建“草貼圖”的參數(shù):

  • Detail Texture:選擇一張花或者草的貼圖
  • Min WidthMax Width丈甸、Min Height糯俗、Max Height:?jiǎn)蝹€(gè)草物體的最大最小的寬高值
  • Noise Spread:添加一點(diǎn)分布隨機(jī)度
  • Healthy Color:草的健康顏色(會(huì)被tint到貼圖的上部)
  • Dry Color:草的干枯顏色(會(huì)被tint到貼圖的底部)
  • Billboard:是否以永遠(yuǎn)面向攝像機(jī)的單面形式生成單個(gè)草物體,如果選否的話就會(huì)以十字交叉雙平面方式來(lái)生成單個(gè)草物體

在Details欄點(diǎn)擊Edit Details...睦擂,再選擇Add Detail Mesh得湘,打開(kāi)Add Detail Mesh面板設(shè)置新建“細(xì)節(jié)面片”的參數(shù):

  • Detail:選擇一個(gè)prefab作為細(xì)節(jié)模型
  • Noise Spread:添加一點(diǎn)分布隨機(jī)度
  • Min WidthMax Width顿仇、Min Height淘正、Max Height:?jiǎn)蝹€(gè)細(xì)節(jié)模型的最大最小的寬高值
  • Healthy Color:細(xì)節(jié)模型的健康顏色(會(huì)被tint到頂部)
  • Dry Color:細(xì)節(jié)模型的干枯顏色(會(huì)被tint到底部)
  • Render Mode:細(xì)節(jié)模型的渲染模式,選擇Grass的話模型會(huì)被壓扁成一個(gè)薄片臼闻,然后用草物體的渲染方式來(lái)渲染鸿吆,選擇Vertex Lit的話模型會(huì)以頂點(diǎn)照明的方式接受場(chǎng)景光照

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市述呐,隨后出現(xiàn)的幾起案子惩淳,更是在濱河造成了極大的恐慌,老刑警劉巖乓搬,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件思犁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡进肯,警方通過(guò)查閱死者的電腦和手機(jī)激蹲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)江掩,“玉大人学辱,你說(shuō)我怎么就攤上這事乘瓤。” “怎么了策泣?”我有些...
    開(kāi)封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵衙傀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我着降,道長(zhǎng)差油,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任任洞,我火速辦了婚禮,結(jié)果婚禮上发侵,老公的妹妹穿的比我還像新娘交掏。我一直安慰自己,他們只是感情好刃鳄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布盅弛。 她就那樣靜靜地躺著,像睡著了一般叔锐。 火紅的嫁衣襯著肌膚如雪挪鹏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天愉烙,我揣著相機(jī)與錄音讨盒,去河邊找鬼。 笑死步责,一個(gè)胖子當(dāng)著我的面吹牛返顺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔓肯,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼遂鹊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蔗包?” 一聲冷哼從身側(cè)響起秉扑,我...
    開(kāi)封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎调限,沒(méi)想到半個(gè)月后舟陆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旧噪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年吨娜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淘钟。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宦赠,死狀恐怖陪毡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勾扭,我是刑警寧澤毡琉,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站妙色,受9級(jí)特大地震影響桅滋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜身辨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一丐谋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煌珊,春花似錦号俐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蔬浙,卻和暖如春猪落,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背畴博。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工笨忌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绎晃。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓蜜唾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親庶艾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子袁余,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容