Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第1-5章 AR-VR的技術(shù)基礎(chǔ) -Unity3D中的UI系統(tǒng)_第1頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第1-5章 AR-VR的技術(shù)基礎(chǔ) -Unity3D中的UI系統(tǒng)_第2頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第1-5章 AR-VR的技術(shù)基礎(chǔ) -Unity3D中的UI系統(tǒng)_第3頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第1-5章 AR-VR的技術(shù)基礎(chǔ) -Unity3D中的UI系統(tǒng)_第4頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第1-5章 AR-VR的技術(shù)基礎(chǔ) -Unity3D中的UI系統(tǒng)_第5頁
已閱讀5頁,還剩323頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

AR/VR的技術(shù)基礎(chǔ)目錄虛擬現(xiàn)實關(guān)鍵技術(shù)概覽立體顯示技術(shù)內(nèi)容創(chuàng)建技術(shù)網(wǎng)絡(luò)傳輸技術(shù)渲染技術(shù)自然交互技術(shù)虛擬現(xiàn)實關(guān)鍵技術(shù)概覽五大技術(shù)0105040203虛擬現(xiàn)實近眼顯示技術(shù)內(nèi)容創(chuàng)建技術(shù)網(wǎng)絡(luò)傳輸技術(shù)渲染技術(shù)感知和自然交互技術(shù)科技樹AR/VR核心技術(shù)1.Near-eyedisplay(近眼顯示技術(shù))包括傳統(tǒng)的屏幕顯示技術(shù)(LCOS/OLED/可折疊的AMOLED/MicroLED)和光學技術(shù)(光場顯示/波導技術(shù)等等)。2.Contentcreation(內(nèi)容創(chuàng)作技術(shù))包括虛擬角色和場景構(gòu)建、動作捕捉、全景視頻拍攝與編輯等等3.Networkcommunication(網(wǎng)絡(luò)傳輸技術(shù))這方面最受人關(guān)注的當然就是即將商用的5G技術(shù),以及傳說中傳輸速率可達每秒1T的下二代6G技術(shù)了。當然還有一系列的其它技術(shù)有待發(fā)展。4.RenderingProcessing(渲染技術(shù))包括本地渲染、云渲染、光場渲染、多重視角渲染,以及硬件渲染加速等等技術(shù)。5.Perception&interaction(感知和自然交互)包括跟蹤定位技術(shù)、多感官自然交互技術(shù)(腦波、語音交互、觸感交互等等)、機器視覺技術(shù)(SLAM/場景分離與識別等)專利研發(fā)立體顯示技術(shù)雙眼視差原理偏振光分光3D顯示基于線偏振光的IMAX電影圖像分色立體顯示兒時的紅藍分光眼鏡杜比圖像分色技術(shù)杜比3D眼鏡分時顯示主動式快門眼鏡VR頭戴顯示技術(shù)VR頭戴設(shè)備視網(wǎng)膜投影技術(shù)HoloLens、GoogleGlass光場顯示技術(shù)MagicLeap/question/36921637

商用全息投影技術(shù)初音未來全息演唱會便攜全息投影技術(shù)Ostendo量子光電子成像儀內(nèi)容創(chuàng)建技術(shù)內(nèi)容創(chuàng)建傳統(tǒng)3D建模360全景拍攝3D掃描360度全景拍攝優(yōu)點:百分百真實缺點:無法切換焦點,無法和場景及人物互動傳統(tǒng)計算機3D建模優(yōu)點:精度高,流程成熟缺點:耗費大量人力、時間、精力3D掃描-

方法概述接觸式3D掃描時差測距三角測距結(jié)構(gòu)光源調(diào)變光非接觸被動式掃描立體視覺法色度成形法輪廓法立體光學法光場相機3D掃描-

基于結(jié)構(gòu)光掃描速度極快,數(shù)秒內(nèi)100多萬點精度高,可達0.03mm單次測量范圍大便攜大景深2020/stock/relnews/us/2020-03-20/doc-iimxyqwa2069651.shtml表情和動作捕捉光學動作捕捉慣性動作捕捉機械動作捕捉超聲波動作捕捉電磁動作捕捉表情和動作捕捉游戲引擎Unity3DUE4寒霜

SourceVuforiaARKitARCore網(wǎng)絡(luò)傳輸技術(shù)5G&6G渲染技術(shù)渲染技術(shù)感知和自然交互技術(shù)3D光感應(yīng)技術(shù)-IntelRealsense可選的手勢識別設(shè)備及SDK,可配合OculusRiftCV1和HTCVive使用LeapMotionFOV眼動追蹤技術(shù)語音交互和語義理解觸覺反饋嗅覺及其它感覺模擬器腦機接口Unity3d的下載與安裝目錄Unity3d的授權(quán)類型在Windows系統(tǒng)下安裝Unity3d在Mac系統(tǒng)下安裝Unity3dUnity3d的授權(quán)類型授權(quán)類型個人版加強版專業(yè)版企業(yè)版在windows系統(tǒng)下安裝Unity3d安裝1下載Unity

Hub2.使用UnityHub安裝Unity3d在Mac系統(tǒng)下安裝Unity3d安裝1下載Unity

Hub2.使用UnityHub安裝Unity3d創(chuàng)建一個全新的Unity3d項目王寒目錄創(chuàng)建并登錄UnityID創(chuàng)建新項目創(chuàng)建并登錄UnityID瀏覽中打開網(wǎng)址在郵箱中確認創(chuàng)建UnityID創(chuàng)建新項目Unity3d編輯器入門王寒目錄界面布局和核心視圖工具欄頂部菜單欄界面布局新項目打開后界面組成界面項目視圖資源商城層級視圖場景視圖游戲視圖檢視視圖控制臺視圖項目視圖資源商城視圖資源商城視圖1.使用UnityID登錄2.下載和導入標準資源包StandardAssets3.刪除版本不兼容的文件場景視圖游戲視圖檢視視圖控制臺視圖工具欄工具欄組成界面變換工具變換輔助工具播放控制協(xié)作開發(fā)、云服務(wù)和賬戶分層下拉菜單布局下拉菜單變換工具1.手型工具2.移動工具3.旋轉(zhuǎn)工具4.縮放工具5.矩形工具6.操作工具變換輔助工具1.Center/Pivot按鈕Center是以所有選中的對象所組成的軸心作為游戲?qū)ο蟮妮S心參考點,通常用于大量對象的整體移動;而Pivot則是以最后一個選中的游戲?qū)ο筝S心來作為參考點。默認狀態(tài)下此處會顯示Center。2.Global/Local按鈕該按鈕用來切換物體旋轉(zhuǎn)時的坐標參照系。當選擇Global時,物體旋轉(zhuǎn)時的坐標軸也就是世界坐標軸。當選擇local時,物體旋轉(zhuǎn)時的坐標軸是自身的坐標。當場景中的物體沒有父物體時(也就是在層次結(jié)構(gòu)中沒有掛靠在另外一個物體上),或者父物體的坐標是(0,0,0)時,local和global的坐標軸是一樣的。播放控制三個按鈕分別對應(yīng)的是Play(播放),Pause(暫停),Step(步進)。協(xié)作開發(fā)、云服務(wù)和賬戶關(guān)于協(xié)作開發(fā)和云服務(wù),目前還處于beta階段,因此這里我們暫且不必研究其中的細節(jié)。最右側(cè)的是賬戶設(shè)置,點擊下拉菜單可以登錄官網(wǎng)進行賬戶(Account)設(shè)置、登入登出賬戶以及升級為Plus或Pro版本。分層下拉菜單分層下拉菜單(Layers)用于控制游戲?qū)ο笤赟cene視圖中的顯示),在下拉列表中右側(cè)眼睛為睜開的圖層對象,將會被顯示在Scene視圖中,否則將會被隱藏。布局下拉菜單布局下拉菜單(Layout)用來切換視圖的布局,同時也可以自定義設(shè)置自己習慣的界面布局頂部菜單欄工具欄組成界面文件菜單編輯菜單資源菜單游戲?qū)ο蟛藛谓M件菜單窗口菜單幫助菜單文件菜單主要用于項目和場景的創(chuàng)建、存儲和輸出編輯菜單主要用于場景內(nèi)部的編輯設(shè)置資源菜單用來管理游戲資源的工具,該菜單下的命令可以在場景中添加新的游戲?qū)ο螅€可以導入或者導出所需要的資源包游戲?qū)ο蟛藛斡脕碓趫鼍爸刑砑佑螒驅(qū)ο?,以及進行一些相關(guān)的設(shè)置。選擇需要的游戲?qū)ο?,并修改它的位置,就能將游戲?qū)ο髴?yīng)用到游戲的場景內(nèi),組件菜單Component菜單是Unity3D為開發(fā)者提供的便捷的內(nèi)置系統(tǒng)設(shè)置,比如燈光、尋路和光照等等。每個系統(tǒng)都對應(yīng)一項特殊功能,同時又可以用展開進行更多的設(shè)置窗口菜單控制整個編輯器的頁面布局以及控制各種視圖窗口的開關(guān)。筆者建議牢記菜單的快捷鍵,以便提高開發(fā)時的工作效率幫助菜單集合了所有Unity3D官方的相關(guān)資源鏈接網(wǎng)站,同時具備管理軟件授權(quán)的方法《星際逃生》實戰(zhàn)項目王寒目錄產(chǎn)品的策劃與設(shè)計創(chuàng)建新項目搭建游戲場景添加游戲角色預覽游戲效果發(fā)布到PC平臺產(chǎn)品的策劃與設(shè)計1.游戲背景

2.游戲概述

3.游戲場景(科幻畫風)

4.游戲規(guī)則(逃生模式)創(chuàng)建新項目打開UnityHub,創(chuàng)建新項目,命名為SpaceEscape搭建游戲場景在Assetstore中下載Sci-FiStyledModularPack添加游戲角色1.在Assetstore中下載StandardAssets

2.解決版本沖突問題(可跳過)

3.添加FPSController并設(shè)置屬性

預覽游戲效果點擊工具欄上的Play按鈕發(fā)布到PC平臺1.打開BuildSettings

2.添加當前場景

3.設(shè)置產(chǎn)品名稱和保存路徑

4.打開測試C#的基本語法目錄變量和數(shù)據(jù)類型運算符和表達式C#中的流程控制函數(shù)類和方法變量和數(shù)據(jù)類型常用數(shù)據(jù)類型

int

–整型,用于保存游戲中的整數(shù)數(shù)據(jù),如金幣數(shù)量等

float

-單精度浮點數(shù),用于保存游戲中的浮點數(shù)據(jù),如玩家移動速度

double

-雙精度浮點數(shù),常用于保存游戲中的精確數(shù)值

string

-字符串,常用于保存名稱和信息等,如玩家姓名

bool

–布爾,常用于判斷條件,如游戲邏輯判斷:角色是否死亡變量在編程語言中,每一個數(shù)值都需要存儲在某個特定的地方,我們稱之為變量。變量由變量名稱和數(shù)據(jù)類型構(gòu)成。變量的數(shù)據(jù)類型決定了我們可以在其中存儲哪種類型的數(shù)據(jù)。通過使用變量,可以讓我們的應(yīng)用擁有記憶。你可以把變量看做是存儲某個數(shù)據(jù)的臨時儲物箱。正如儲物箱有各種類型和尺寸的一樣,數(shù)據(jù)也五花八門。變量在編程語言中,每一個數(shù)值都需要存儲在某個特定的地方,我們稱之為變量。變量由變量名稱和數(shù)據(jù)類型構(gòu)成。變量的數(shù)據(jù)類型決定了我們可以在其中存儲哪種類型的數(shù)據(jù)。通過使用變量,可以讓我們的應(yīng)用擁有記憶。你可以把變量看做是存儲某個數(shù)據(jù)的臨時儲物箱。正如儲物箱有各種類型和尺寸的一樣,數(shù)據(jù)也五花八門。常用數(shù)據(jù)類型

int

–整型,用于保存游戲中的整數(shù)數(shù)據(jù),如金幣數(shù)量等

float

-單精度浮點數(shù),用于保存游戲中的浮點數(shù)據(jù),如玩家移動速度

double

-雙精度浮點數(shù),常用于保存游戲中的精確數(shù)值

string

-字符串,常用于保存名稱和信息等,如玩家姓名

bool

–布爾,常用于判斷條件,如游戲邏輯判斷:角色是否死亡定義一個變量什么是注釋什么是注釋:編譯器會忽略掉被注釋的語句和代碼注釋風格:C語言風格的注釋/**/單行注釋//多行注釋變量命名規(guī)范必須以字母,下劃線或者@開頭(第一個字符不能為數(shù)字)后面可以跟任意“字母”,數(shù)字,下劃線變量名不可以是系統(tǒng)保留的關(guān)鍵字大小寫敏感同一個變量名不能重復定義,可以重復賦值正確:firstName、lastName、car1不推薦:firstname、lastname錯誤:1car、*name常量C#還支持一種特殊的變量——常量。所謂的常量是指在程序運行過程中值不會發(fā)生變化的量。在聲明變量時,只需在變量的前面加上關(guān)鍵字const或readonly即可把該變量指定為一個常量。比如:constintconsNum=2;readonlyintreadOnly=3;運算符和表達式算術(shù)運算符下表顯示了C#語言支持的所有算術(shù)運算符。假設(shè)變量A的值為10,變量B的值為20,則:算術(shù)運算符示例賦值運算符在C#中,賦值運算符用于將一個數(shù)據(jù)賦予一個變量、屬性或者引用。數(shù)據(jù)本身是常量、變量或者表達式。賦值運算符本身又分為簡單賦值和復合賦值特別說明對于初學者需要特別注意的是,除非特別用途,

1.代碼中所用到的雙引號和分號必須采用半角輸入,如果使用全角輸入,是沒辦法得到想要結(jié)果的。2.標點符號3.代碼不要copy&paste關(guān)系運算符C#的關(guān)系運算符條件運算符條件運算符用于進行邏輯判斷,并返回一個布爾類型的運算結(jié)果。流程控制流程控制所謂的流程控制,就是對某個條件進行判斷,如果判斷通過,就執(zhí)行某語句。C#中的流程控制方法和其他語言基本相同。支持if…else,while,do…while,for,foreach,switch這些流程控制語句。if...else語句示例:

定義兩個int類型的變量a,b,對a和b進行對比,如果a>b,則輸出”a大于b”,如果a小于等于b,則輸出”a小于等于b”。while語句while語句和if...else語句類似,都是需要先進行條件判斷,結(jié)果為True將執(zhí)行循環(huán)語句do...while語句do...while區(qū)分于while語句的地方是:do...while語句會首先執(zhí)行一次里面的語句,然后進行條件判斷for語句for語句中初始值語句只會執(zhí)行一次,隨后進行判斷,如果判定成立,執(zhí)行花括號中的語句,再執(zhí)行值變化語句,再執(zhí)行判斷。如果判斷不成立,跳出該循環(huán)。foreach語句首先創(chuàng)建一個int數(shù)組,然后通過foreach遍歷數(shù)組中的每一個元素。foreach會按順序依次取出數(shù)組中的每一個元素Switch語句Switch語句是一個判斷選擇語句。當您想要將單個變量與一系列常量進行比較時,它們非常有用:函數(shù)什么是函數(shù)?134在數(shù)學里面,函數(shù)的作用是讓輸入值根據(jù)特定的規(guī)則計算出某個結(jié)果并輸出。而在編程領(lǐng)域,函數(shù)的作用與之類似,不過不僅僅局限于計算數(shù)值,而是可以實現(xiàn)任何所需要的功能。簡單來說,函數(shù)就是可以完成特定功能,可以重復執(zhí)行的代碼塊。什么是函數(shù)?135以王者榮耀為例,在無限大亂斗模式里面,每兩分鐘會隨機變換一次BUFF,比如所有英雄的移速增加30%、所有英雄攻擊增加30%,所有英雄額外獲得鐘馗的飛鉤技能……那要讓游戲里面10個英雄同時獲取這些隨機變換的BUFF,就可以用函數(shù)來實現(xiàn)了,因為我們在實現(xiàn)這些功能的時候,就是輸入了一些可以重復執(zhí)行的代碼塊。函數(shù)示例類和方法C#對象和類C#是一門面向?qū)ο蟮木幊陶Z言,而類和對象則是面向?qū)ο笾械闹匾拍?。具有相同屬性和功能的一組對象的集合就是一個類。比如人是一個類,貓是一個類。C#方法C#中的方法,其形式和函數(shù)類似,也是為了實現(xiàn)某些特定功能的代碼塊。但是方法和函數(shù)的區(qū)別在于,方法通常是某個對象所特有的。換而言之,函數(shù)是代碼世界里獨立的生命體,它不依賴于某個對象而生存。但方法不同,任何一個方法都是某個對象的附屬生命,同時也只有它的宿主對象才能調(diào)用這個方法。以王者榮耀為例,方法就是每一個英雄所獨有的技能,一個技能只有該英雄本人可以釋放,其他英雄釋放不了這個技能。Demo示例創(chuàng)建并引用一個弓箭手類。什么是繼承繼承就是在類之間建立一種“父子”關(guān)系,子類可以擁有某些來自父類的屬性和方法父類也被稱為基類,子類也被稱為派生類在Unity3d項目中創(chuàng)建和使用腳本王寒目錄VisualStudio及腳本編輯器的設(shè)置在項目中創(chuàng)建腳本將腳本關(guān)聯(lián)為游戲?qū)ο蟮男袨榻M件VisualStudio及腳本編輯器的設(shè)置

VisualStudio的安裝1.在安裝Unity時安裝2.單獨安裝Unity代碼編輯器的設(shè)置在項目中創(chuàng)建腳本創(chuàng)建方式

1.在Project視圖中創(chuàng)建2.在Inspector視圖中創(chuàng)建3.在外部創(chuàng)建,然后拖動到項目之中創(chuàng)建方式

1.在Project視圖中創(chuàng)建在Project視圖中右鍵單擊Assets,選擇Create-C#Script,會創(chuàng)建一個新的文件,把文件名更改為HelloUnity。將腳本關(guān)聯(lián)為游戲?qū)ο蟮男袨榻M件關(guān)聯(lián)游戲?qū)ο髲腍ierarchy視圖中選中MainCamera,然后在Inspector視圖中點擊AddComponent,選擇Scripts-HelloUnity創(chuàng)建和使用角色類王寒目錄案例描述案例實施案例描述案例描述在很多游戲中,將角色分為不同的類型,比如坦克、戰(zhàn)士、魔法師等等。我們可以將所有的角色看做一個基類,每個不同的類型看做它的子類,而某個具體的角色則是某種類型角色的子類。在這個小案例中,我們將創(chuàng)建一個自己的英雄角色,并嘗試在項目中實際使用。在創(chuàng)建某個角色前,我們通常需要按照以下的步驟進行。1. 創(chuàng)建所有角色的基類2. 創(chuàng)建某個特定角色的子類案例實施案例實施1.創(chuàng)建新項目MyHero2.創(chuàng)建所有角色的基類Hero,并定義其屬性和方法3.創(chuàng)建英雄角色子類MyHero,并定義其特有屬性和技能4.創(chuàng)建游戲?qū)ο驢eroCommandObject及對應(yīng)的組件腳本HeroCommandScript5.實際測試Unity3d的內(nèi)置對象和工具目錄基本幾何體地形引擎天空盒Unity資源包基本幾何體基本幾何體Unity引擎為我們提供了許多基礎(chǔ)的幾何體,比如說正方體、圓柱體、球體、膠囊體、平面、四邊形等。可以使用這些基本的幾何體來快速制作游戲的基本原型,包括物品和場景等?;編缀误w地形引擎地形引擎Unity中內(nèi)置了一個地形引擎系統(tǒng),可以讓開發(fā)者快速給游戲添加基礎(chǔ)的地形地貌。和3D模型不同,在游戲運行時,編輯器中的地形渲染經(jīng)過了高度優(yōu)化,減少了對系統(tǒng)資源的消耗。當然,這套地形引擎系統(tǒng)對開發(fā)者也是十分的友好,通過使用內(nèi)置的相關(guān)工具,開發(fā)者可以在很短的時間內(nèi)快速創(chuàng)建大場景的地形。第三方地形編輯器除了使用Unity內(nèi)置的地形編輯器,在AssetStore中還有一些非常優(yōu)秀的第三方地形編輯插件,如Gaia。使用該插件可以快速創(chuàng)建非常復雜但效果很接近真實的地形天空盒什么是天空盒天空盒我們在玩游戲的時候,尤其是野外的大場景中,要想更逼真離不開三維天空系統(tǒng)。要用程序來模擬無邊無際的天空是不可能的,而聰明的前輩們自然也想到了用“天圓地方”這種古代人們對于天空的認識來作為三維天空設(shè)計思想。如何更換場景中的天空盒更換天空盒Step1.創(chuàng)建新項目和場景Step2.從Asset

Store中下載天空盒,Skybox

Volume

2(Nebula),或其它Step3.將所下載的天空盒導入到場景中Step4.在Window-Rendering-Lighting

Settings中設(shè)置Environment下的Skybox

Material下載天空盒設(shè)置天空盒將SkyboxMaterial設(shè)置為下載的天空盒資源包的導入與導出資源包導入和導出1.創(chuàng)建并導出unitypackage2.導入已有的unitypackage

Unity3d的光照系統(tǒng)王寒目錄什么是光照系統(tǒng)不同光源對象的簡介什么是全局光照光照探頭和反射探頭什么是光照系統(tǒng)Unity光照系統(tǒng)從字面意思理解,光照系統(tǒng)的作用就是給我們的場景帶來光源,用于照亮場景。一個五彩繽紛的游戲場景肯定要比一個漆黑一片的游戲場景更具吸引力,想讓游戲場景變的更漂亮,光照系統(tǒng)是必不可缺的。Unity光照系統(tǒng)組成部分Unity光照系統(tǒng)主要由燈光組件(4個燈光組件,2個特殊功能組件)以及Lighting面板組成。不同光源對象的簡介DirectionalLightPointLightSpotLightAreaLight什么是全局光照全局光照在一個封閉空間內(nèi),兩個玻璃球體互相反射。全局光照極大程度提升了場景中光照的真實性,但這種程度的實時計算是非常消耗資源的。光照探頭和反射探頭Why?當場景中的燈光烘焙后,光照信息和陰影都變成“靜止”的了。如果場景中有動態(tài)的物體,比如可以自由行走的角色,那角色豈不是沒有陰影了?這個問題我們該怎么解決呢?這個時候就需要用到LightProbe(光照探頭)和ReflectionProbe(反射攤手)了。光照探頭的作用是收集附近的光照信息,并對探頭范圍內(nèi)的對象進行實時渲染。LightProbesReflectionProbes效果圖反射探頭和它相似,它的作用是收集附近的反射信息,并反射到范圍內(nèi)的對象上,可以用來提升場景中的燈光效果。Unity3d中的粒子系統(tǒng)王寒目錄什么是Shuriken粒子系統(tǒng)怎么樣添加粒子系統(tǒng)什么是粒子系統(tǒng)什么是粒子系統(tǒng)粒子系統(tǒng)(particlesystems)中的粒子究竟指的是什么?游戲引擎中的粒子當然不是指質(zhì)子、中子、電子甚至夸克這樣的微觀粒子,而是很小很簡單的2D圖像或者3D網(wǎng)格模型。在粒子系統(tǒng)中,通過各種設(shè)置讓微小的粒子以某種特定的形態(tài)展示出來,就形成了粒子特效。從這一點來看,粒子系統(tǒng)中的粒子就如同空氣中的灰塵或者微小顆粒。當大量的粒子聚集在一起時,就會形成我們所期待的各種酷炫效果。ShurikenUnity3d中的粒子系統(tǒng)ParticleSystem怎樣添加粒子系統(tǒng)添加粒子系統(tǒng)在Hierarchy視圖中右鍵Effects→ParticleSystemUnity3d中的Shader王寒目錄什么是ShaderUnity中的標準Shader自定義Shader什么是Shader什么是Shader

在計算機圖形學中,著色器(Shader)是指專用于渲染著色的計算機程序,其作用是設(shè)置圖像的光照、陰暗和色彩等。著色器通常以極高的靈活性在圖形硬件上計算所渲染的效果。大多數(shù)的著色器在編碼時是針對圖形處理單元(GPU)的,著色器編程語言通常可用于編寫GPU渲染管道。通過著色器中預定義的算法,可以動態(tài)修改圖像顯示的像素、頂點、紋理等元素的位置、色調(diào)、飽和度、明亮度和對比度等等。Unity3d中對象的渲染在Unity3D中,對游戲?qū)ο蟮匿秩臼峭ㄟ^材質(zhì)(Materials)、著色器(shaders)和紋理(Textures)共同完成的。三者的關(guān)系非常緊密,共同作用于游戲?qū)ο?,才形成了豐富多彩的游戲世界。材質(zhì)用于定義物體的表面是如何渲染的,包括所使用的紋理貼圖、表面鋪設(shè),以及色彩變化等等。材質(zhì)的可用設(shè)置選項取決于其所使用的著色器。Unity3D中的著色器其實是小的代碼片段,其中包含了各種數(shù)學運算和算法,其作用是基于材質(zhì)的設(shè)置和光照輸入來計算每個像素點的色彩和其它屬性。紋理貼圖其實就是位圖。材質(zhì)中可能包含了到紋理的引用,因此材質(zhì)所使用的著色器可以在計算物體表面色彩的時候使用紋理貼圖。除了用于呈現(xiàn)物體表面的基本色彩(albedo),紋理還可以表現(xiàn)材質(zhì)表面的其它方面,比如反射或粗糙程度等。Unity中的標準Shader使用Shader示例創(chuàng)建新項目使用Shader步驟一在Assets文件夾下右鍵Create→Shader→StandardSurfaceShader使用Shader步驟二然后導入一張圖片使用Shader步驟三右鍵創(chuàng)建Material“Cube”使用Shader步驟四在Material的Shader下選擇“Cunstom/MyShader”使用Shader步驟四選中右側(cè)Select,在里面添加我們的圖片使用Shader步驟五在場景中創(chuàng)建一個Cube物體,最后再將我們的“CubeMaterial”材質(zhì)球拖拽到Cube上自定義Shader自定義ShaderUnity3D支持兩種類型的shader:表面著色器,以及頂點/片元著色器。不管是哪種類型的shader。Unity3D中的shader通常使用ShaderLab語言來編寫,在shader的代碼中可以用多個SubShader部分,Unity將依序執(zhí)行這些給GPU的指令,直到找到可以兼容你所使用的顯卡的代碼段。考慮到游戲的跨平臺支持性,這一點是非常有用的。為了讓開發(fā)人員更輕松的開發(fā)自定義shader,Unity3D從Unity2018.x版本開始正式支持ShaderGraph,可以通過可視化界面輕松實現(xiàn)著色器的創(chuàng)建和編輯。ShaderGraph還支持LWRP和HDRP,甚至支持自定義的pipeline。

使用地形編輯器創(chuàng)建場景中的地形(實戰(zhàn)案例)王寒目錄案例描述案例實施案例描述案例描述在很多3D應(yīng)用和游戲中,除了建筑物之外,我們還需要創(chuàng)建一個模擬的戶外數(shù)字場景。Unity3D內(nèi)置了強大的地形編輯器工具,可以輕松創(chuàng)建各種豐富的地形地貌。為了讓大家熟悉地形編輯器的使用,我們將一起通過實戰(zhàn)學習如何通過地形編輯器來創(chuàng)建簡單的地形。案例實施準備工作Step1.創(chuàng)建新項目,MySpaceStep2.下載最新地形編輯器(在Unity3D的編輯器菜單欄中選擇Window-PackageManager-TerrainTools)Step3.導入地形資源包和標準資源包(在AssetStore中搜索terraintoolssampleassetpack和standardassets),修復一些簡單的bug(刪除StandardAssets\Utility\SimpleActivatorMenu.csStep4.下載并導入FreeRealSkies創(chuàng)建地形在編輯器的菜單欄中選中選擇GameObject-3DObject-Terrain,就可以在場景中添加一個大的扁平的地形編輯地形在Hierarchy視圖中選擇Terrain對象,在Inspector視圖中單擊Terrain組件下的設(shè)置按鈕將Resolution下的TerrainWidth(地形寬度)和TerrainLength(地形長度)均設(shè)置為1200,將TerrainHeight(地形高度)設(shè)置為600繪制山脈在工具欄上選擇第二個按鈕PaintTerrain,然后從下拉列表中選擇Raiseorlowerterrain。接下來根據(jù)自己的喜好來調(diào)整畫筆的尺寸或類型,按住鼠標左鍵不放在地形的特定區(qū)域繪制出山脈或凸起的地形添加樹木在地形編輯器的工具欄上選擇第三個按鈕,然后點擊EditTrees按鈕,選擇AddTree,然后選擇Broadleaf_Desktop,最后點擊Add添加樹木接下來按住鼠標左鍵,在地形中所需要的地方繪制即可添加植被在地形編輯器的工具欄上點擊第四個按鈕“PaintDetails”,點擊下方的EditDetails,點擊AddGrassTexture,然后選擇某個草地紋理,比如GrassFrond01AlbedoAlpha,最后點擊Add確定。添加植被接下來按住鼠標左鍵不放,在地形中的所需區(qū)域添加植被。需要特別注意的是,當我們在場景中添加植被后,如果從比較遠的距離去觀察,是看不到植被的,只有切換視角到靠近的地方才看得到。這就是所謂的LOD(LevelsofDetail),也就是多細節(jié)層次。添加相鄰地形有時候我們會覺得當前的地形還不夠大,那么需要添加相鄰的地形。在Hierarchy視圖中選中當前地形對象,在Inspector視圖的Terrain工具欄中點擊第一個按鈕,可以看到在當前地形的周圍出現(xiàn)了幾個線框,只要點擊任何一個線框,就會添加一個相鄰的地形。更換天空盒通過菜單打開Window-Rendering-LightingSetting,點擊Environment-SkyboxMaterial屬性最右側(cè)的小圖標,從打開的窗口中選擇所需的天空盒素材。創(chuàng)建和使用光源(實戰(zhàn))王寒目錄案例描述案例實施案例描述案例描述通過在場景中添加設(shè)置不同的光源,可以讓場景顯得更加豐富多彩,更加貼近真實。為了讓大家更直觀的了解Unity3D中對不同光源對象的使用,我們將創(chuàng)建一個全新的項目來演示。案例實施案例實施-添加光源Step1.創(chuàng)建一個新項目,命名為MyLightsStep2.添加場景中的物體(通過從菜單欄選擇GameObject-3DObject,在場景中添加一些簡單的幾何體對象)Step3.調(diào)整平行光的各項屬性(角度,色彩,強度等)Step4.添加點光源,并設(shè)置其屬性Step5.添加聚光燈,并設(shè)置其屬性案例實施-設(shè)置燈光烘焙1)在Hierarchy視圖中選中場景中除了MainCamera和DirectionalLight之外的游戲?qū)ο蟆?)在Inspector視圖中,點擊Static右側(cè)的下拉箭頭,選擇ContributeGI。這樣就完成了第一步,告訴系統(tǒng)哪些物體需要被烘焙。3)隨后選擇場景中的DirectionalLight、PointLight和SpotLight,將Mode設(shè)置為Baked。現(xiàn)在我們可以開始烘焙了。4)在頂部菜單欄中選擇Window-Rendering-LightingSettings,即可打開燈光設(shè)置按鈕。取消底部AutoGenerate選項的勾選,點擊GenerateLighting即可開始烘焙案例實施-設(shè)置燈光烘焙稍等片刻烘焙結(jié)束后,可以看到場景中的燈光發(fā)生了細微變化。接下來運行該場景,在Scene視圖中,之前勾選為ContributeGI的對象無法被移動,修改DirectionalLight的角度會發(fā)現(xiàn),對象的陰影并不會改變。修改PointLight的顏色、范圍等,同樣場景不會有任何改變。 如果場景中的燈光發(fā)生了變化,開發(fā)者在需要手動再次進行烘焙,場景中的光效才會發(fā)生改變。創(chuàng)建雪花飄落的粒子特效王寒目錄案例描述案例實施案例描述在有些項目中,我們需要模擬真實世界的環(huán)境,比如刮風、下雨、下雪,甚至雷電等等。對于這類環(huán)境效果,并不適合使用3d模型的方式來呈現(xiàn)。這個時候,我們需要借助粒子特效來實現(xiàn)自己想要的效果。在這個案例中,我們將一起學習如何使用Unity3D中的粒子系統(tǒng)來創(chuàng)建雪花飄落的特效。在掌握了粒子系統(tǒng)的基本用法之后,開發(fā)者還可以嘗試創(chuàng)建其它的環(huán)境特效。案例描述案例實施開始前的準備Step1.創(chuàng)建一個新項目,命名為SnowFallingStep2.導入所需美術(shù)資源(找到snow.png文件并拖動到項目視圖中)導入后選中它,在Inspector視圖中勾選AlphaIsTransparent,然后點擊Apply創(chuàng)建粒子系統(tǒng)Step1.在Hierarchy視圖中右鍵單擊,選擇Effects-ParticleSystem,從而創(chuàng)建一個新的粒子系統(tǒng)Step2.把新創(chuàng)建的粒子系統(tǒng)更名為SnowFalling,同時需要在Inspector視圖中將Transform中Rotation的X值設(shè)置為90,從而讓粒子效果更改方向創(chuàng)建粒子材質(zhì)Step1.在Project視圖中右鍵單擊,選擇Create-Material,并將其命名為SnowMaterialStep2.選中SnowMaterial,在Inspector視圖中將Shader的類型默認的Standard更改為Particles-StandardUnlitStep3.此外,還需要把RenderingMode更改為Cutout,從而去掉外輪廓.Step4.將Albedo設(shè)置為此前添加的snow.png將粒子材質(zhì)添加為粒子系統(tǒng)的組件在Hierarchy視圖中選中SnowFalling這個粒子對象,然后從Project視圖中把SnowMaterial拖到Inspector視圖的底部,從而讓SnowMaterial成為SnowFalling的粒子材質(zhì)更改粒子系統(tǒng)的各項屬性(1) 將Duration設(shè)置為10.00,從而增加雪花的持續(xù)顯示時間(2) 將GravityModifier更改為1,從而讓雪花受到地球重力的影響。(3) 將SimulationSpeed更改為0.5,從而讓雪花飄落的速度減慢。(4) 將MaxParticles更改為5000,從而增加雪花的數(shù)量。(5) 將Emission中RateoverTime更改為100,從而增加雪花的密度。(6) 將Shape從默認的Cone更改為Box,并將Scale中的X和Y值設(shè)置為50,從而增加雪花飄落的覆蓋面積。(7) 將Collision中的Type更改為World,從而讓雪花跟虛擬世界產(chǎn)生交互。(8) 將Collision中的Bounce更改為0,從而讓雪花落到地面時不會反彈設(shè)置場景并測試1.在場景中添加一個Plane對象,并設(shè)置scale中的x和z為52.選中MainCamera,使用工具欄將視角切換到合適的位置,然后使用主菜單的Gameobject-AlignWithView,從而調(diào)整主攝像機的默認視角3.點擊工具欄上的播放按鈕,就可以查看效果了Canvas簡介目錄什么是CanvasCanvas的三種渲染模式Canvas中UI元素的顯示順序什么是Canvas什么是CanvasCanvas是畫布的意思,在Unity3D的UI系統(tǒng)中,所有UI元素都必須作為Canvas的子對象存在。場景中的Canvas對象都關(guān)聯(lián)著一個Canvas組件,是所有UI元素的容器。不過一個場景中并不是只能存在一個Canvas,所以可以根據(jù)應(yīng)用的設(shè)計需求在場景中使用多個Canvas,而不用把所有的UI元素放置于同一個Canvas下。什么是Canvas在Unity3D的場景視圖中,Canvas對象以矩形的形態(tài)呈現(xiàn)。通過使用Canvas,我們可以在需要的時候才呈現(xiàn)出UI界面。而在不需要的時候,則可以將其隱藏起來。當我們創(chuàng)建任何一個UI元素的時候,如果場景中沒有Canvas對象,Unity3D將自動幫我們創(chuàng)建一個Canvas對象,并將新創(chuàng)建的UI元素添加為Canvas的子對象。什么是CanvasCanvas的三種渲染模式Canvas的三種渲染模式ScreenSpace-Overlay1.ScreenSpace–Overlay(屏幕空間-覆蓋)Canvas的默認RenderMode為ScreenSpace-Overlay,此時Canvas下的所有UI元素會直接繪制在游戲窗口的平面上。也就是說,此時Canvas中的UI元素會優(yōu)先顯示在游戲場景中,不會被其他任何對象所遮擋。在該模式下我們無法手動修改Canvas的尺寸等信息,因為Canvas的大小由Game視圖的大小決定,而Canvas是覆蓋在整個Game視圖之上的。ScreenSpace-Camera2.在此模式下,Canvas的顯示效果和前者基本一致,只是在Scene視圖中有較大區(qū)別。將Canvas的RenderMode切換為ScreenSpace-Camera后,需要手動指定RenderCamera(渲染用相機)。ScreenSpace-Camera在ScreenSpaceOverlay/Camera兩種模式下,Canvas的尺寸和Game視圖的尺寸一致,Canvas會將所有UI元素渲染在屏幕最頂端,不會受到場景中其他任何物體的影響。如果屏幕尺寸改變,Canvas會自動重新適應(yīng)屏幕尺寸。WorldSpace需要注意的是,在VR項目的開發(fā)中,所有Canvas必須設(shè)置為WorldSpace。在此模式下,整個Canvas將和其他對象一樣作為3D對象存在于場景中。Canvas中UI元素的顯示順序UI元素的顯示順序Canvas中UI元素的顯示順序和它們在Hierarchy層級視圖中的顯示順序是一致的。第一個子對象將被首先繪制,然后是第二個子對象,以此類推。當兩個UI元素重疊的時候,后繪制的對象將顯示在之前繪制的對象之上。UI元素的顯示順序當我們需要調(diào)整UI元素的顯示順序時,只需要在Hierarchy視圖中通過拖曳的方式來調(diào)整順序即可。UI界面的布局王寒目錄矩形工具(RectTool)矩形坐標(RectTransform)軸點(Pivot)錨點(Anchors)矩形工具(RectTool)矩形工具使用矩形工具,我們可以拖動、縮放和旋轉(zhuǎn)各種UI元素當我們選中某個UI元素后,就可以使用鼠標將其移動到畫布的合適位置。通過點擊和拖曳UI元素的邊緣,可以調(diào)整它的大小。最后,把鼠標光標放到UI元素的周邊,可以看到一個旋轉(zhuǎn)的標記,使用鼠標移動,就可以把UI元素旋轉(zhuǎn)到所需的角度。和其它工具類似,矩形工具的使用也受到錨點和空間的限制。通常情況下,我們可以將其設(shè)置為Pivot和Local矩形坐標(RectTransform)矩形坐標在Unity3D中,普通的游戲?qū)ο螅℅ameObject)都有一個對應(yīng)的Transform組件。而對于UI元素,則使用RectTransform組件來代替。RectTransform組件同樣有多重屬性,如位置、旋轉(zhuǎn)、縮放等。除此之外,它還提供了寬度和高度屬性,以便調(diào)整矩形的大小。軸點(Pivot)軸點所謂的軸點也就是UI元素的參考坐標系原點。對UI元素的旋轉(zhuǎn)和縮放等操作都是基于軸點的位置來進行的。當我們在工具欄中將Pivot按鈕設(shè)置為Pivot模式時,RectTransform的軸點可以在Scene場景視圖中進行移動錨點(Anchors)錨點在RectTransforms中還包含了另外一個布局概念,也就是錨點。錨點在場景視圖中以四個小的圓形手柄來顯示,在Inspector視圖中顯示了錨點的信息。錨點雖然錨點的設(shè)置比較復雜,但是Unity3D通過錨點預設(shè)(AnchorPreset)按鈕讓這一操作大大簡化。點擊錨點預設(shè)按鈕,就可以從彈出的子菜單中選擇所需的錨點預設(shè)。UI工具中的視覺元素王寒目錄文本(Text)圖像(Image)面板(Panel)文本(Text)文本Text文本在UI中通常被稱為Label(標簽),它有一個文本區(qū)域,可以在其中輸入我們想要顯示的文本。我們可以在Inspector視圖中可視化的更改其字體和其它顯示屬性等。除了基本的Text控件,Unity3D還提供了更為實用的TextMeshPro。TextMeshPro除了可以作為UI控件來添加,還可以直接作為3D對象添加到場景之中。在VR等純3D場景中,通常我們會傾向于選擇TextMeshPro。圖像(Image)圖像Image控件對象有一個RectTransform組件和一個Image組件。我們可以通過RectTransform組件來設(shè)置Image對象在場景中的位置,尺寸大小和其它坐標信息。我們可以通過Image組件來指定圖像對象的源圖片,色彩,材質(zhì)等屬性。圖像需要注意的是,當我們將制作好的美術(shù)資源導入到Unity3D后,如果要在用戶界面的Image控件對象中使用,必須將其TextureType設(shè)置為Sprite(2DandUI)。面板(Panel)面板Panel是一種特殊的UI元素,可以把它看做UI元素的容器,我們可以在上面放置各種UI元素。Panel對象有一個Image組件,可以用來設(shè)置背景圖片。當Canvas上面有比較多的UI元素時,我們可以考慮使用Panel來組織,從而達到更好的視覺呈現(xiàn)效果。UI工具中的交互元素王寒目錄什么是UI交互元素按鈕(Button)勾選按鈕(Toggle)滑動條(Slider)其它什么是UI交互元素UI交互元素顧名思義就是和用戶進行交流互動的界面,在Unity中具有許多的交互元素,例如Button(按鈕);Toggle(切換);按鈕(Button)按鈕是各類軟件、APP和網(wǎng)站中最常用的交互控件。在Unity3D的UI元素中,按鈕同樣非常重要。Button元素默認有一個Text元素作為子對象。Button的Inspector視圖中能看到,Button由RectTransform組件、Image組件、Button組件構(gòu)成。其中RectTransform組件和其他UI元素相同,用于控制Button的位置等。Image組件用于顯示按鈕的背景圖,默認為圖中的黑色矩形框,而Button組件則用于接收鼠標點擊事件等互動。在Button組件的最下方,是一個OnClick()事件,點擊右下角的加號可以添加新的按鈕事件。我們可以使用它來定義按鈕和用戶之間的交互時間。勾選按鈕(Toggle)Toggle元素的作用就是一個開關(guān),它的視覺呈現(xiàn)是一個勾選框,允許用戶開啟或關(guān)閉某個選項。Toggle元素有兩個子對象Background和Label,二者用于控制Toggle的外形,此處就不再贅述。Toggle組件中的參數(shù)大部分和Button相同,主要區(qū)別在于下方的IsOn屬性和事件的改變。當IsOn為勾選狀態(tài)時,表明此Toggle為開啟狀態(tài),否則為關(guān)閉狀態(tài)。而最下方的事件不是OnClick(),而是OnValueChanged狀態(tài),參數(shù)為Boolean。當場景中的Toggle每次被點擊時,IsOn的狀態(tài)都會發(fā)生改變,我們可以利用IsOn參數(shù)來決定場景中某些組件是否可用?;瑒訔l(Slider)Slider也就是滑動條,可用于控制音量等,比如手機音樂APP的播放進度條就可以用Slider來實現(xiàn)。Slider元素也是由數(shù)個Image元素組成的,可拖動的圓環(huán)和背景進度條都是一個Image,可通過更換Image中的圖片來更改Slider樣式。其它交互控件除了以上提到的交互控件,Unity3D中還提供了其它豐富的交互控件,比如Scrollbar(滾動條),Dropdown(下拉列表),InputFiled(文本輸入框),ScrollRect(滾動區(qū))等1. 滾動條(Scrollbar)和滾動視圖(ScrollView)2.下拉列表3.文本輸入框創(chuàng)建項目的UI界面王寒目錄案例描述案例實施案例描述在幾乎所有的AR/VR應(yīng)用中,都會有一個UI界面。通過這個UI界面,我們可以跳轉(zhuǎn)到其它界面,輸入一些基本信息,或是進行一些基礎(chǔ)的設(shè)置。在本案例中,我們將一起學習創(chuàng)建一個簡單的項目UI界面。完成的界面分別是一個主菜單界面和應(yīng)用的主界面在主菜單界面點擊START按鈕,會切換到應(yīng)用的主場景。在應(yīng)用主場景點擊BACK按鈕,會返回菜單界面。最后,在菜單界面中點擊QUIT按鈕,將退出當前應(yīng)用返回切換案例實施Step1.創(chuàng)建新項目,命名為MyMenuStep2.安裝TextMeshProStep3.導入所需的資源(bg.png,1920x1080)開始前的準備開始前的準備使用快捷鍵Ctrl+N,創(chuàng)建一個新的場景,使用快捷鍵Ctrl+S保存,并重命名為GameScene創(chuàng)建主場景在Hierarchy視圖中右鍵單擊,選擇UI-Image,此時就會在場景中添加一個Image圖片元素,同時還會自動添加一個Canvas畫布,還有一個EventSystem對象。選中Canvas對象,在Inspector視圖中將CanvasScale組件的UIScaleMode設(shè)置為ScaleWithScreenSize,這樣Canvas對象就會自動覆蓋整個界面。然后把ReferenceResolution設(shè)置為X:1920,Y:1080,因為這也是圖片的大小。選中Image,在Inspector視圖中選擇SourceImage,將其設(shè)置為剛剛添加的bg圖片。此外,在RectTransform中將Width和Height屬性分別設(shè)置為1920和1080。如圖5-30所示。添加Image和Canvas對象在Hierarchy視圖中右鍵單擊Canvas對象,選擇UI-Text-TextMeshPro。此時在Canvas中增加了一個新的子對象Text(TMP)。選中該對象,在Insepctor視圖中更改其屬性。將RectTransform組件的Width和Height分別設(shè)置為600和50.將TextMeshPro-Text(UI)組件中的Text內(nèi)容更改為“Welcometothisworld!”,將FontSize更改為50。添加文本在Hierarchy視圖中選中Canvas對象,右鍵單擊,選擇UI-Button-TextMeshPro。此時在場景視圖中出現(xiàn)了一個按鈕。將其更名為Button_Back使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論