【Unity】4.5 樹木創建器

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

分類:Unity、C#、VS2015 創建日期:2016-04-11 一、簡介 在地形編輯器一節中,已經告訴了你如何使用已經創建好的樹來形成大片樹林。這一節告訴你在 Unity 5.3.4中如何利用【樹木創建器】一步一步地創建一棵樹: 當你學會了創建樹的基本操作後,你就可以根據自己的需要創建任意形狀... ...


分類:Unity、C#、VS2015

創建日期:2016-04-11

一、簡介

在地形編輯器一節中,已經告訴了你如何使用已經創建好的樹來形成大片樹林。這一節告訴你在 Unity 5.3.4中如何利用【樹木創建器】一步一步地創建一棵樹:

image

當你學會了創建樹的基本操作後,你就可以根據自己的需要創建任意形狀的樹了:

image

二、導入Unity自帶的Environment組件

如果你原來沒有導入Unity自帶的Environment組件,需要導入它:

image

辦法是:滑鼠右擊工程視圖下的Assets文件夾,選擇Environment,在彈出的視窗中,單擊【All】按鈕,然後單擊【Inport】按鈕。

此時,在Standard Assets文件夾下就會看到導入的資源:

image

依次單擊Environment/SpeedTree文件夾下的各個子文件夾,觀察子文件夾中的文件,以便對其結構有一個大概的瞭解。

image

另外,除了樹組件(SpeedTree)以外,Environment下還包含地形組件(TerrainAssets)以及水組件(Water)。

導入Environment以後,就可以直接使用這些組件了。

三、創建第一棵樹

1、創建場景

先添加一個Demo06文件夾,然後在該文件夾下創建一個名為Demo06Scene的場景:

image

雙擊打開該場景。

2、添加一棵新樹

要在剛創建的場景中創建一個新的樹 (Tree) 資源,需要先滑鼠右擊層次視圖(Hierarchy),選擇【3D Object】->【Tree】:

image

此時在工程視圖 (Project View) 中創建了一個文件名為Tree的預製體文件,將該文件拖放到Demo06文件夾中:

image

拖放後,在Demo06文件夾下就可以看到這個文件,將其換名為Demo06Tree01以方便識別是哪個例子創建的:

image

換名後,在當前打開的場景中,即可看到實例化的Demo06Tree01樹(如果看到的不是這樣,將其旋轉縮放一下就看到了):

image

現在這棵新樹還很簡單,只有一個樹幹,接下來我們為它添加樹枝、樹葉。

3、觀察樹木創建器的大致結構

選中這棵樹,先在檢視器 (Inspector) ) 中看一下樹木創建器的大致結構(紅色框):

image

檢視器中提供了塑造和雕刻你所創建的樹的所有工具和屬性。

在【Tree】選項卡下,可看到呈現節點的樹木層級視圖 (Tree Hierarchy) :樹根 (Tree Root) 節點和一個單一的樹枝組 (Branch Group) 節點(稱為樹幹)。

為了方便介紹,以後將樹木創建器中右下角的4個小按鈕(小紅色框內)從左到右分別命名為【按鈕1】、【按鈕2】、【按鈕3】、【按鈕4】:

【按鈕1(Add Leaf)】:添加樹葉。向當前選擇的組節點添加一個樹葉組節點。

【按鈕2(Add Branch)】:添加樹枝。向當前選擇的組節點添加一個樹枝組節點。

【按鈕3(Copy Node)】:複製節點。複製當前選擇的組。

【按鈕4(Delete Node)】:刪除節點。刪除層次視圖 (Hierarchy) 中當前選擇的組或場景視圖 (Scene View) 中的一個節點或一個樣條線點。

除了這4個按鈕外,還有:

【樹木狀態(Tree Stats)】:樹木的狀態信息(在4個小按鈕的上方),此狀態告訴你樹木具有多少頂點、多少三角形和多少種材質。

【外部重載(External Reload)】:也叫刷新,即再次計算整棵樹(該按鈕在4個小按鈕的左邊)。在樹葉網格已改變的情況下,可使用此按鈕。

4、添加樹枝(Adding Branches)

在【Tree】選項卡中,單擊【按鈕2(Add Branch)】添加一個樹枝:

image

選中剛添加的樹枝,利用4個按鈕下方的【移動樹枝】、【旋轉樹枝】、【自定義樹枝】按鈕,以及【按鈕4(Delete Node)】,通過滑鼠拖放小方塊在場景中改變該樹枝的形狀:

image

單擊主樹幹,然後單擊【按鈕2(Add Branch)】,按照上面介紹的相同的辦法,再添加另一個樹枝:

image

在樹幹上創建了樹枝後,還可以進一步選擇次級樹枝組 (Branch Group) 並再次單擊【按鈕2(Add Branch)】在新創建的樹枝上添加更小的樹枝。微調這個組的值,可繼續創建更多連接至次級樹枝的樹枝。

現在,這棵簡單的樹的樹枝結構已經完成,如果游戲場景不是發生在冬天,那麼還需要在樹枝上添加樹葉(Leaf)。

5、添加樹葉

添加樹葉和添加樹枝的操作基本上是一樣的。基本步驟是:先選中某個樹枝節點,然後單擊【按鈕1(Add Leaf)】按鈕即可。

image

如果想進行非常細緻地塑造,也可以再在最小的樹枝上添加另一個樹葉組。

下圖是分別在樹幹和2個樹枝上各添加一個樹葉後的場景:

image

現在,樹葉僅僅被渲染成不透明的平面。這是因為在為它們添加材質之前,我們需要先調整樹葉的值(大小、位置、旋轉等)。調整合適以後,就可以為其添加材質了。

6、添加材質

為了使樹看起來更加逼真,還需要在樹枝和樹葉上應用材質 (Material)。

(1)創建樹枝材質

滑鼠右擊Demo06文件夾,選擇【創建 (Create)】 -> 【材質 (Material)】 ,在該文件夾下創建一種新材質,並將其重命名為Demo06Bark01,意思是Demo06文件夾下創建的第1個樹皮(Bark)材質。

image

在著色器 (Shader) 下拉菜單中,選擇【自然 (Nature)】 -> 【樹木創建器樹皮 (Tree Creator Bark)】:

image

將【基礎(Base)】屬性和【光澤 (Gloss)】屬性都選擇【BroadleafBark】紋理:

image

法線貼圖 (Normalmap) 屬性使用【BroadleafBark_Normal】紋理:

image

這樣在Demo06文件夾下就得到了創建的樹枝材質(Demo06Bark01.mat文件):

image

選擇某個樹枝,將創建的樹枝材質應用到該樹枝:

image

依次選擇其他樹枝,直到全部應用材質為止。

(2)創建樹葉材質

按照與創建樹枝材質同樣的步驟,再創建一個文件名為Demo06Leaf01.mat的材質。

在著色器 (Shader) 下拉菜單中,選擇【自然 (Nature)】 -> 【樹木創建器樹葉 (Tree Creator Leaves)】:

image

指定紋理:

image

這就得到了樹葉材質:

image

選擇某個樹葉,將材質應用到該樹葉:

image

對所有樹葉都做同樣的處理,直到所有樹葉應用完畢。

現在再來看看添加材質後的這棵樹(每個樹枝上都有一個樹葉):

image

選中某個樹葉,觀察【Frequency】屬性的值,可看出此時該值預設為1:

接下來將【Frequency】屬性的值調整為42,即得到下麵的效果:

image

對另外兩個樹枝執行同樣的操作,就得到了我們希望的樹:

image

說明:創建樹是一個反覆試驗的過程,總的原則是一般不要創建太多的樹葉/樹枝,因為太多的話會影響渲染的性能。

7、添加角色控制器

最後再添加一個第1人稱角色控制器,以便旋轉、拉伸、移動場景:

image

按【播放】按鈕預覽運行效果。

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

-Advertisement-
Play Games
更多相關文章
  • I will gradually learn some instructions about Network in Linux. First, here are somethings about IPv4: There are A, B, C, D, E, 5 classes. (images co ...
  • 前段時間換成Mac電腦之後,發現有一點不爽,不能在Mac下寫入NTFS格式的磁碟,所以就去研究了一下。 解決方法有如下三種。 第一種,直接使用第三方軟體,如Paragon NTFS for MAC,Tuxera NTFS等,不過大部分都是收費的。有一款免費的是Mounty,我之前用了一下,我自己的機 ...
  • 代碼如下,實現了Linux系統的一些常見的監控變數,分享給大家@.·.@ ...
  • ...
  • 註:下麵用 [$] 標註的表示收費工具,但部分收費工具針對開源軟體的開發/部署/托管是免費的) 目錄 API 應用框架(Application Frameworks) 應用模板(Application Templates) 人工智慧(Artificial Intelligence) 程式集處理(As ...
  • flex 訪問WebService的方法有很多種,使用FLEX4中的"數據/服務"功能可以自動生成訪問WebService的代理類,這樣可以避免把所有的數據訪問都寫到MXML頁面上,便於重覆利用,同時可以直接導入後臺自定義數據類型,方便傳參。 直接上代碼:其中WebService介面 ? 1 2 3 ...
  • 閱讀目錄 開始 簡單使用 非同步調用WebServeices WebServices驗證 相關概念及資源 WebServices:簡單理解--解決了不同平臺之間應用程式間通信的問題,數據以XML格式在程式間傳輸 實際的應用場景:例如 比價網 為什麼比價網可以從眾多的電商站點獲得用戶搜索的產品數據?We ...
  • 首先來說,委托的作用就是可以給類的方法傳遞其他類的方法而不必將類實例化。第二點,委托就是事件和響應事件的方法的橋梁(就是傳遞響應事件的方法給事件)。這裡要註意,委托跟類平級,事件與方法平級。 全文 事件與委托似乎很難以理解,這是因為它們的使用方式與常用的編碼有很大的差別,例如通常編寫的都是同步代碼, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...