【Unity】4.3 地形編輯器

来源:http://www.cnblogs.com/rainmj/archive/2016/04/10/5373313.html
-Advertisement-
Play Games

分類:Unity、C#、VS2015 創建日期:2016-04-10 一、簡介 Unity擁有功能完善的地形編輯器,支持以筆刷繪製的方式實時雕刻出山脈、峽谷、平原、高地等地形。Unity地形編輯器同時提供了實時繪製地表材質紋理、樹木種植、大面枳草地佈置等功能。值得—提的是,Unity中的地形編輯器支... ...


分類:Unity、C#、VS2015

創建日期:2016-04-10

一、簡介

Unity擁有功能完善的地形編輯器,支持以筆刷繪製的方式實時雕刻出山脈、峽谷、平原、高地等地形。Unity地形編輯器同時提供了實時繪製地表材質紋理、樹木種植、大面枳草地佈置等功能。值得—提的是,Unity中的地形編輯器支持LOD(Level of Detail)功能,能夠根據攝像機與地形的距離以及地形起伏程度調整地形塊(Patch)網格的疏密程度。遠處或平坦的地形塊使用稀疏的網格,近處或陡峭的地形塊使用密集的網格。這將使游戲場景即真實、精細,同時也不影晌性能。

註意:地形與其他的游戲對象有些不同,地形支持Transform(幾何變換)組件中的Position(位置)變換,但對於Rotation(旋轉)以及scale(縮放)操作是無效的。

二、地形的創建方式

要創建地形並實現山脈、峽谷、平原、高地、樹木種植、大面枳草地佈置等功能的繪製,必須先熟悉下麵的基本概念。

1、添加地形對象

先創建一個新的場景,然後打開菜單欄中的【Terrain】→【Create Terrain】,就創建了一個地形對象:

image

新創建的地形會在項目工程中創建一個地形資源,併在當前場景中添加—個地形實例(Project視圖和Hierarchy視圖中同時出現了該地形的相關文件),如下圖所示:

image

新建地形對象後,在檢視器視圖中可以看到該對象所掛載的組件,除了Transform組件外,還有一個Terrain(地形)組件以及一個Terrain Collider(地形碰撞)組件。

2、地形組件

Terrain組件共包含7個選項按鈕,利用這些選項就可以繪製地形起伏、地表紋理或附加細節如樹、草或石頭等:

image

在這7個選項按鈕中,前3個用於地形高度繪製。

(1)按鈕1--升高/降低高度

image

單擊此選項按鈕後,再展開的選項卡中,先設置Brush Size(筆刷大小)、Opacity(不透明度)的值以及繪製時使用的Brushes(筆刷),然後就可以在場景中用滑鼠單擊或拖動繪製地形了。

單擊滑鼠會增加高度,保持滑鼠按下狀態移動滑鼠會不斷的升高高度直到達到高度的最大值。如果想降低高度,按住Shift鍵再單擊滑鼠即可。

(2)按鈕2--噴塗高度

單擊左側開始的第2個按鈕選項,可進入噴塗高度模式。該模式一般用於繪製平整的高地或峽谷等地形。

設置Brush Size(筆刷大小)、Opacity(不透明度)、Height(高度)的值以及繪製時使用的Brushes(筆刷),就可以利用滑鼠移動場景中地形上的任意部分,直到達到你希望的高度為止。

image

(3)按鈕3--平滑高度

單擊左側開始的第3個按鈕選項,可進入平滑高度模式。該模式用於柔化繪製的區域的高度差,使地形的起伏更加平滑。

image

(4)按鈕4--繪製紋理

單擊左側開始的第4個按鈕選項,可進入紋理繪製模式。單擊【Edit Texture】可添加、編輯、移除紋理。重覆“Add Texture”這個過程,可以添加多個紋理。

image

添加地形紋理以後,選擇想使用的地形紋理,即可使用此紋理拖動滑鼠左鍵對地形進行紋理繪製,如下圖所示:

image

選擇不同的紋理再拖動滑鼠繪製,就可以在同一個場景中繪製出各種形式的地形紋理。

(5)按鈕5—植樹

單擊左側開始的第5個按鈕選項,可進入植樹模式。

image

單擊【Edit Tree】可添加、編輯、移除樹。重覆“Add Tree”這個過程,可以添加多種樹。

image

選擇使用的樹,設置樹的密度(Tree Density)為合適的值,然後就可以將其繪製在場景中了,此時當前滑鼠所在位置會標記為藍色高亮,如下圖所示,單擊即可。

單擊地形的任何地方都能種樹。按住滑鼠左鍵不放並拖動滑鼠可在地形上連續種樹。按住Shift鍵然後單擊地面,可以擦掉相應位置種植的樹。

image

參數設置(Settings):

Bush Size:筆刷的尺寸。設置植樹時筆刷的大小,取值範圍在1~100之間。

Tree Density:樹木密度。用於控制樹對象的間距。值越大樹木越密集、間距越小。取值範圍在10~100之間。

Tree Height:樹的基準高度。值越大樹木越高,取值範圍在50~200之間。

Color Variation:每棵樹的顏色所能夠使用的隨機變數值,取值範圍在0~1之間。

(6)按鈕6—種草

單擊左側開始的第6個按鈕選項,可進入Paint Details模式,利用該模式可繪製草坪(用Grass Texture種草)以及指定對草坪進行細節性描述的網格(Detail Mesh)。

image

其中,【Settings】下的【Target Strength】表示目標強度,用於控制種草以及添加細節網格時所產生的影晌,取值範圍在0~1之間。

單擊【Edit Details…】,在彈出的快捷菜單項中選擇【Add Grass Texture】,然後選擇某種草坪紋理,並設置相關參數,單擊【Add】即可添加一種草坪:

image

Details Texture:草坪的圖片。

Min Width、Max Wdth、Min Height:設定草坪的最小寬度、最大寬度、最小高度值。

Noise Spread:噪波範圍。用於控制草產生簇的大小。該值越低意昧著噪波越低。

Healthy Color:健康顏色。此顏色在噪波中心較為明顯。

Dry Color:乾燥顏色。此顏色在噪波邊緣較為明顯。

Billboard:廣告牌。該項如果被勾選,草將隨著攝像機一起轉動,永遠面向主攝像機。

單擊【Edit Details…】,在彈出的快捷菜單項中選擇【Add Details】,然後選擇某種草的預設,並設置相關參數,單擊【Add】即可添加一種草的預設體:

image

這兩項選擇後,就可以在場景中用滑鼠種草了。

按住Shift鍵可用滑鼠選擇刪除,按住Ctrl鍵可用滑鼠刪除選擇的細節網格。

image

(7)按鈕7—地形參數設置

單擊左側開始的第7個按鈕選項,進入地形設置模式。

image

基本地形(Base Settings)選項卡下的參數如下:

Draw:是否繪製基本地形。

Pixel Erroe:像素容差。在顯示地形網格時允許的像素誤差。是地形LOD系統的一個參數。

Base Map Dist:基本地圖距離。設置地形貼圖顯示高解析度的距離。

Cast Shadows:投影。設置地形是否投射陰影。

Mterial:材質。通過單擊右側的圓圈按鈕為地形指定材質。

image

樹和細節配置(Tree & Details Objects)選項卡下的參數如下:

Draw:如果選中該項,所有的樹、草和細節模型都將被渲染出來。

Bake Light Probes for:

Detail Distance:細節距離。該項用於設定攝像機停止對細節渲染的距離。

Collect Detail Patches:

Detail Density:細節密度。該項用於控制細節的密度。預設為1,如果將此值調小,過密的地形細節將會不被渲染。

Tree Distance:樹林距離。該項用於設定攝像機停止對樹對象進行渲染的距離。值越高,越遠的樹會被渲染。

Billboard Start:開始廣告牌。該項用於沒定攝像機將樹渲染為廣告牌的距離。

Fade Length:漸變距離。該項用於控制樹對象從模型過渡到廣告牌的速度,如果值設置為0,模型會突變為廣告牌。

Max Mesh Trees:最大網格樹。該項用於控制在地形上所有模型樹的總數量上限。

image

針對草的風設置(Wind Settings for Grass)選項卡下的參數如下:

Speed:速度。該頂用於設定風吹過的速度。

Size:大小。該項用於設定風力影響的面枳。

Bending:彎曲。該項用於沒定草木被風吹的彎曲程度。

Crass Tint:草的色調。該項用於設定所有草以及細節網格整體的色調。

image

【Resolution】選項卡下的參數用於添加地形對象後設置相關的屬性。參數含義如下:

HeightMap Resolution:高度圖解析度。

Detail Resolution:細節解析度。控制草地和細節網格的地圖解析度。如果希望提高繪製性能,可將該數字設置低一些,比如設置為512或者256。

Base Texture Resolution:基礎紋理解析度,用於代替在一定距離的潑濺貼圖 (splat map) 的複合紋理解析度。

三、示例(Demo05)

這裡介紹實際操作的基本步驟,當你熟悉了這些基本步驟後,就可以繪製各種絢麗的地形了。按這些基本步驟操作完成後,即可得到下麵的簡單示例效果:

image

1、添加地形對象

在層次視圖中滑鼠右擊選擇【Terrain】→【Create Terrain】,創建一個地形。此時在Project的Assets下也會自動添加一個文件名為【New Terrain】的地形組件。

image

將Project的Assets下的【New Terrain】拖放到Demos05子文件夾下,並將其換名為【Demo05Terrain】。

在“層級視圖”(Hierarchy) 中選中地形 (Terrain) 後,便可以使用 F(焦點)鍵對地形進行輕鬆導航。按 F 後,無論滑鼠在哪個位置,都會移動到場景視圖 (Scene View) 的中心位置。這樣就可以對某個區域進行潤色,快速移動到另一個區域並修改其他東西。如果在按下 F 鍵時滑鼠沒有懸停在地形 (Terrain) 的某個區域,則整個地形 (Terrain) 都會被置於場景視圖 (Scene View) 的中心位置。

2、設置地形長寬

在檢視圖中,單擊地形組件中的【按鈕7】,修改【Resolution】選項卡下的參數設置,將地形的長(Length)寬(Width)都設置為2000,其他使用預設值:

image

下麵是在Unity 5.3.4中初次創建地形後的預設值:

寬(Terrain Width):500

長(Terrain Length):500

高度(Height):600

Heightmap Resolution:513

細節解析度(Detail Resolution):1024

Detail Resolution Per Path:8

Control Texture Resolution:512

Base Texture Resolution:1024

3、繪製山脈

在檢視圖中,單擊地形組件中的【按鈕1】,然後在地形上繪製出山脈的初步效果,這—步驟主要從整體角度來把握山脈效果,繪製出山脈的大致起伏即可:

image

然後在【Brushes】欄中選擇筆刷的樣式,為山脈增加細節結構,用於模擬山脊的效果:

image

4、繪製平坦地面

繪製山脈上的部分平坦地面,如下圖所示:

技巧:按住Shift鍵配合單擊或按住滑鼠左鍵可以實時獲取到筆刷所在地形的相應位置的高度,並將該高度設為筆刷的高度值。

image

5、為地形添加材質(可選)

滑鼠右擊Demo05文件夾,在該文件夾下創建一個材質:

image

然後將其命名為【Demo05Material】:

image

選中Demo05Material材質,在Inspector視圖中單擊Shader右側的按鈕,在彈出的列表框中依次選擇【Nature】→ 【Terrain】→【Diffuse】項,為terrain材質指定shade:

image

選擇地形,在Inspector視圖中,單擊【按鈕7】,然後單擊【Material】項右側的圓圈按鈕,在彈出的Sehct Matmal對話框中為地形指定剛剛創建的材質:

image

說明:地形的材質不是必須設置的,通常沒置地形的材質是為了能夠更改地形的渲染Shader。如果該材質設置為空,Unity會使用一套內置的地形材質。

6、添加紋理

單擊地形編輯器中的【按鈕4】切換到【Paint Textures】模式,單擊【Edit Texture】按鈕,選擇【Add Texture】項,會彈出Add Terrain Texture對話框,單擊Texture頂的【Select】按鈕,在彈出的Select Texture2D對話框中指定一張紋理作為地形的首層紋理:

image

指定首層紋理後,Unity會自動將首層紋理平鋪在整個地形上。如果需要修改平鋪的大小,可繼續單擊【Edit Texture】按鈕,選擇【Edit Texture】項,在彈出的對話框中調節【Size】項的X、Y方向的數值即可。

首層紋理指定之後,接下來還可以繼續為地形指定其他紋理用於豐富地形效果,方法與指定首層紋理相同。指定後再選中新添加的紋理,利用筆刷將該紋理繪製到地形上,這裡不再演示。

7、添加路面

辦法與“6.添加紋理”相同。

下麵是添加的路面紋理:

image

下麵是添加路面後的效果:

image

8、添加樹

地形的紋理繪製完畢後,接下來為地形添加樹。單擊地形編輯器中的【按鈕5】切換到【Place Trees】模式,單擊【Edit Trees】按鈕,選擇【Add Tree】,在彈出的Add Tree對話框中單擊【Tree】頂右側的圓圈按鈕,進而在彈出的【Se!ect CameObject】對話框中指定—棵樹作為地形的樹(重覆此操作可以添加多種樹):

image

添加樹以後,在【Trees】預覽框中選中某種樹,設置合適的參數後,就可以利用筆刷在地形上種樹:

image

如果希望修改已添加樹的樣式或受風力影晌的程度等參數,先在Tree預覽框中選擇要編輯的樹,然後單擊【Edit Trees】按鈕,選擇【Edit Tree】,在彈出的對話框中進行編輯。

要移除樹,單擊【Edit Trees】按鈕,選擇【Remove Tree】項即可。

9、添加草、灌木等

繪製完樹,接下來為地形添加草、灌木等細節。

單擊地形編輯器中的【按鈕6】切換到【Paint Deails】模式,然後添加草坪、灌木等細節即可,用法與前面添加樹的辦法類似,這裡就不再細講了。

10、設置其他參數

當你熟悉以後,還可以通過地形編輯器【按鈕7】下的選項,設置風刮草地和樹木的效果。最後,再添加光源讓整個場景看起來明亮絢麗等。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 找到兩個集合中交集部分: source code: ...
  • 在兩個集合中,左邊集合減去右邊集合的元素: source code: ...
  • Modern UI WPF包括兩個內置主題(dark與light)。在1.0.3版本,您可以構建自定義的主題。Modern UI應用程式通常有在全局資源字典App.xaml中有如下定義: “/FirstFloor.ModernUI;component/Assets/ModernUI.xaml”字典包... ...
  • 目錄 1.倉儲模式在MVC應用程式中的使用 2.泛型倉儲模式在MVC應用程式中的使用 3.MVC Code-First和倉儲模式的應用 4.待續.... 附上源代碼:https://github.com/caofangsheng93/CaoDanDeGit 這篇文章中,我會解釋倉儲模式在MVC程式中 ...
  • Modern UI for WPF帶有一個內置的頁面導航框架,易於使用和可擴展的。但這並不是必須的,你也可以自己來自定義一個導航框架。 預設的ModernWindow控制項模板包括標題、菜單和後退控制項用於支持頁面導航框架。在預設模板中ModernWindow.Content屬性將被忽略而且不會被渲染。... ...
  • asp.net MVC請求過程 ASP.NET MVC框架只是給開發者提供了開發web應用程式的一種選擇,並不是要取代Webform這兩種技術各有優缺點,開發者需要根據實際情況,選擇對應的技術有時候,可以在同一個項目中混合使用這兩種技術 WebForm請求過程 個人網站:http://www.51p ...
  • SqlBulkCopy原理是採用了SQL Server的BCP協議進行數據的批量複製,結合使用事務,就我們的案例而言,大約每批800條是平衡點,性能比逐條插入提高了100多倍,並前面同樣使用事務批量插入的案例性能提升了7倍以上。 個人網站:http://www.51pansou.com .net視頻 ...
  • 剛剛接觸NHibernate和FluentNHibernate,所以最好的方法是從一個簡單的例子入手。 開發環境考慮到是實際情況還有好多朋友沒有用VS2015,就用VS2013withUpdate5吧。 1.創建Asp.net Web應用程式(MVC),叫FluentNHibernateDemo1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...