1. 程式人生 > >Unity燈光效果及設定詳解

Unity燈光效果及設定詳解

首先感謝蠻牛教育的無私付出~~~~~~~~此文轉載自蠻牛微信公眾號原創帖 — ID : unitymanual — 

本教程將重點講解如何在Unity 5使用照明工程,照明型別和屬性,以及如何使用它們來建立豐富的照明效果。

定向和非定向光

在現實世界中,你有兩種型別的照明效果:直接和間接照明。直接照明,顧名思義,是直接從光源照射的燈光(燈,太陽或其他)。另一方面,間接照明是來自另一物體的光。

在場景中的Action中你就可以看到直接照明,正如你能注意到的一樣,場景中有一個直接光源叫做Directional Light

直接光源主要用於太陽以及月亮等戶外光源,他們影響場景中所有物體的表面。他們也是開銷最小的圖形處理器

你可以在檢視面板中選擇Directional Light並檢視其屬性。你會注意到一些有趣的屬性,比如型別,顏色以及敏感度等等。你可以改變顏色和旋轉屬性並實時檢視結果。通過改變這些值,你可以直接改變你的定向光。


這時候,你的3D場景中沒有任何的非定向光。你可以通過將球體移動至貼近紅色或者綠色的牆來檢查,發現球體顏色沒有改變,說明場景中沒有非定向光。

使用非定向光的方法之一就是使用靜態物件。請記住,靜態物件的使用可以提高遊戲渲染的效能,但也會降低遊戲質量,所以你必須在遊戲中找到最佳的平衡。在場景中新增一個方塊,將它放置到球體的旁邊,並命名為Cube


選中這個Cube,並在細節面板中啟用靜態屬性


當啟用靜態屬性時,Unity將自動為該物件建立一個光照貼圖,並應用正確的光照模型。現在你可以將相機移動到Cube並發現非定向光開始起作用了。綠色或者是紅色的光現在蔓延到了立方體上。


如果你改變定向光的方向,你會發現Unity將會自動更新光照貼圖。(現在Unity的Lighting屬性是自動烘焙的,如果你設定了手動烘焙要每次手動烘焙後光照貼圖才會對應的改變

)。

被施加到立方體上的間接照明不適用於球體,因為球體不是靜態的。你可以通過使球體靜態(檢視>靜態)來解決這個問題。

這個時候,你可以新增和配置定向以及非定向光到靜態物件。然而,3D大多都是由動態物件組成。因此,我們如何將這些效果應用到那些動態物件呢?我們接下來將具體說明

光照探測器

當你的場景中包含非靜態的物體,你需要使用特定的照明技術,正確地照亮他們,使他們看起來不像從場景中斷開

通過使用光探針及其位置,可以在場景中取樣點。每個光探針可以取樣特定區域,然後計算該特定區域的照明。這些計算足夠快,可用於遊戲期間。光探針的使用避免了移動物體的照明和場景中的靜態光對映物件之間的連線斷開

球體是一個動態物體,因此,與它看起來的相反,它沒有被正確地照亮。如果你把定向燈關閉,你會注意到,唯一影響球的照明是環境光。要正確地照亮球體,你需要使用光探測器

要新增光探針,你需要在Component > Rendering > Light Probe Group下開啟。這樣會在場景中建立一個光探針組


下一步是將探頭放在正確的位置。你現在要將他們放在盒子的每個角落

最好的辦法是改變一個檢視(單擊在場景右上角的立方體)。然後,選擇每個光探測節點並將其拖到每個框角


重複上述步驟,直到你在所有的角落中安裝了光探頭

有些場景需要額外的探針正確地照亮物體。為了新增更多的探針,您可以選擇一個探頭,然後在檢視面板中,單擊重複選定按鈕。

複製之後,您需要將新節點放置在正確的位置(複製的一個節點將與所選的位置處於同一位置)


如果你仔細檢視介面的督察,你會注意到,您還可以新增自定義探針(新增探針),刪除探針(刪除選定),或選擇所有的探針從組(選擇所有)。

在運動中觀察光探頭,選擇球體,併為它新增一個剛體(新增元件>剛體)。然後,給對撞機分配一個材質。您可以使用橡膠材料。

現在,把球體放在盒子的頂部並按下播放鍵,現在你可以看到球體的適當光照了。要觀察差異,禁用光照探頭,並且再次播放(是不是感覺左邊右邊都有映上顏色了呢)


點光源

點光源是遊戲中最常見的光源。它們通常用於爆炸和燈泡。因為它們在各個方向發光,所以它們在圖形處理器上有一個平均成本。然而,計算陰影時使用點光源更昂貴。

通過選擇物件>光>點光源加一點光源。然後,將點光源放在靠近頂部的盒子內。



選擇點光源,並檢視檢視面板中的引數

第一個引數是型別。這裡可以設定要使用的光型別。您可以選擇點,方向,點,或區域。每個提供了特定的光效果。您可以選擇任何選項,並看到結果的實時。然而,對於本教程,您將使用點選項。這將建立一個燈泡效果(光照所有方向相同)。

第二個引數是Baking。您可以將其設定為實時、烘焙或混合。將值作為預設值。範圍引數定義光從點光源的中心發射多遠。顏色引數定義發出的光的顏色

Intensity定義了光的亮度,並且Bounce Intensity定義了間接光強度倍數。 Shadow Type定義了陰影屬性和陰影型別。你可以設定它 No Shadows, Hard Shadows,或者是Soft Shadows。記住,電光源的陰影對於引擎來說開銷是最大的,所以要小心選擇此選項。

如果選擇Hard Shadows 或Soft Shadows,你會看到球體和點光源產生的陰影。當你改變強度值時,陰影也會減輕或加重。該解析度允許您定義陰影的詳細級別。最後, Bias 和Normal Bias讓您在配置偏移時被使用來比較畫素位置在光空間與陰影貼圖。

cookie是一個可選的引數,它代表一個紋理的alpha通道,用來確定不同位置的光的亮度。因為這是一個點光源,必須使用一個立方體貼圖紋理

Draw Halo選項只在光源周圍呈現光暈。耀斑定義了一個在光的位置呈現的耀斑的引用。當除錯3D場景和可能的瓶頸時,耀斑和Draw Halo可能是有用的

Render Mode定義了當渲染器渲染場景時照明是多麼重要。更重要的是,渲染將更密集。渲染模式可以設定為自動的,重要的,或不重要的。最後,剔除遮罩用於選擇或排除,由點光源影響的物件組。

聚光燈

點光源從特定區域的光源發射光。它們只照亮一個特定區域內的物體,一個由三維圓錐體分隔的區域。基本上,他們的工作就像汽車的前燈。你可以想象,他們是完美的手電筒,汽車大燈,或燈柱。他們在圖形處理器中也是開銷很大的。

現在讓我們把點光變成聚光燈。選擇您建立較早的點光源並將其型別更改為聚光燈。下一步,旋轉的光線,以便它可以照亮地板的盒子。重新命名為聚光燈。


正如你可能已經注意到的,在檢視面板中,聚光燈的引數和點光源的引數是很相似的。但是,有一個新的引數叫做Spot Angle


Spot Angle決定光錐度數的角度

無論直接和間接照明,聚光燈工作完全像點光源。你有同樣的侷限性和優勢。因此,在遊戲中設定燈光平衡時必須小心。

注意,你可以總是使用陰影和烘烤以平衡外觀和效能

區域燈光

區域光是在一個平面的矩形區域的所有方向上發出的光。這個矩形是定義在寬度和高度屬性。區域光僅在光貼圖烘焙時可用,這意味著它們在執行時不會對物件產生影響。

選擇點光源並將其型別更改為區域,並將其名稱改為區域光。下一步,把燈放在盒子裡,然後在檢查員裡面改變寬度和高度,以蓋住盒子裡面的整個區域。


通過檢視區域燈光引數,你會發現大多數的引數都類似於以前的,例如,Draw Halo, Flare, Render Mode, 以及Culling Mask.

真正的新引數是寬度和高度。兩者都用來設定矩形光區的大小。


如果你按播放,你會看到該地區的光是投在其範圍內的所有物件的光。矩形的大小由寬度和高度屬性決定。光被投射的一側是平面的法線,與光的正z方向相同。光從矩形的整個表面發射出去。正因為如此,陰影和陰影從受影響的物件往往是比點光源或定向光源要柔和得多。

區域光的照明計算相當處理器密集型,所以它們在執行時不可用,只能被烘烤成光貼圖。

結論

這結束教程關於照明Unity 5。你瞭解了幾種照明效果和配置。有了這方面的知識,您現在可以應用幾個照明效果到您的遊戲或應用程式。




相關推薦

Unity燈光效果設定

首先感謝蠻牛教育的無私付出~~~~~~~~此文轉載自蠻牛微信公眾號原創帖 — ID : unitymanual — 本教程將重點講解如何在Unity 5使用照明工程,照明型別和屬性,以及如何使用它們來建立豐富的照明效

SUSE12系統安裝LVM設定

SUSE12自定義安裝跟以往版本差不多,只是調整了一些功能安裝順序,例如網路設定放到很靠前,SUSE11的時候幾乎是在後半部分,自定義分割槽也調整到網路設定之後,入口設定也隱祕,如果是熟悉suse11安裝,很容易略過這一部分。 目錄 啟動安裝模式選擇安裝語言網路設定啟用郵

linux mlabel命令引數用法---設定磁碟的標籤

Linux mlabel命令用法詳解命令名稱:mlabel ,使用許可權:所有使用者,使用方式:mlabel [-vcs] drive:[new_label]說明: 本程式可設定磁碟的標籤 (Label)。 如果磁碟上設定過標籤,mlabel 會將他顯示給使用者。如果

Linux set命令引數用法--Linux設定環境變數命令

功能說明:設定shell。 語  法:set [+-abCdefhHklmnpPtuvx] 補充說明:用set 命令可以設定各種shell選項或者列 出shell變數.單個選項設定常用的特性.在某些選項之後-o引數將特殊特性開啟.在某些選項之後使用+o引數將關閉某些特性,不

【Spring】Spring MVC原理配置

進行 return sub sca scrip uil 線程安全 松耦合 必須 1.Spring MVC概述: Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡

緩存varnish的管理配置

啟動 一個 hint 單位 quad spec int rom try 一 工作原理 在當前主流的Web服務架構體系中,Cache擔任著越來越重要的作用。常見的基於瀏覽器的C/S架構,Web Cache更是節約服務器資源的關鍵。而最近幾年由FreeBSD創始人之一Kamp開

第三講 html編輯器body

原則 eight enter 一個 width html標記 ctr script mysq 最好的學習方法:學思路 1.制作網頁的方法: 新建記事本或者用“editplus編輯器”. edi

常用 JavaScript 小技巧原理

this lin slice pen global 轉化 script lis fun 善於利用JS中的小知識的利用,可以很簡潔的編寫代碼 1. 使用!!模擬Boolean()函數 原理:邏輯非操作一個數據對象時,會先將數據對象轉換為布爾值,然後取反,兩個!!重復取反,就實

每篇半小時1天入門MongoDB——3.MongoDB可視化shell

選擇 進行 download 重新 詳解 指定 如果 moved duplicate 本篇主要介紹MongoDB可視化操作以及shell使用及命令,備份恢復、數據導入導出。 MongoVUE安裝和簡單使用 使用mongo.exe 管理數據庫雖然可行,功能也挺強大,但每次

web緩存服務器varnish-4.1.6的部署配置

是否 次數 tool 至少 hits 檢查 rep nat list web緩存服務器varnish-4.1.6的部署及配置詳解 1.安裝varnish4.1.6安裝依賴 yum install -y autoconf automake jemalloc-devel li

linux cp命令參數用法---linux 復制文件命令cp

linux file linux cp命令參數及用法詳解---linux 復制文件命令cp [root@Linux ~]# cp [-adfilprsu] 來源檔(source) 目的檔(destination)[root@linux

Linux入門命令

linux入門、date、echo一、用戶登錄 root用戶 ① 一個特殊的管理賬戶; ②又叫超級管理員; ③對系統的損害有無限的能力; ④除非必要,否則不要用root登錄; 普通用戶 ①權限有限; ②造成系統損害

DNS基本概念操作----------------轉載

dns介紹 DNS基本概念及操作詳解目錄:1.DNS協議2.DNS查詢 2.1遞歸查詢 2.2跌代查詢 2.3反向查詢3.域維護 3.1全量AXFR傳輸 3.2增量IXFR傳輸 3.3通過NOTIFY 3.4動態更新4.DNS安全 在很多人看來,DNS只是為外部提供DNS解析服務(我以前也是這麽認為

iOS多線程方案總結使用

alloc www nop 線程狀態 efault div elf don ddd 本篇文章整理了幾種iOS中主要的多線程方案,提供了Swift和Objective-C兩種語言的寫法。 概述 iOS目前有四種多線程解決方案: NSThread GCD NSOperatio

zabbix實現原理架構

收集 信息 核心 狀態 start 原理 整體架構 比較 zabbix 想要用好zabbix進行監控,那麽我們首要需要了解下zabbix這個軟件的實現原理及它的架構。建議多閱讀官方文檔。 一、總體上zabbix的整體架構如下圖所示: 重要組件說明: 1)zabbix se

Linux下ps -ef和ps aux的區別格式

占用內存 style star wid 內存交換 現在 linu pts tar Linux下顯示系統進程的命令ps,最常用的有ps -ef 和ps aux。這兩個到底有什麽區別呢?兩者沒太大差別,討論這個問題,要追溯到Unix系統中的兩種風格,System V風格和BSD

高性能Mysql主從架構的復制原理配置

應用場景 難點 要點 一行 tar distrib 控制 成功 實時性 1 復制概述 Mysql內建的復制功能是構建大型,高性能應用程序的基礎。將Mysql的數據分布到多個系統上去,這種分布的機制,是通過將Mysql的某一臺主機的數據復制到其它主機(slaves

Intellij IDEA 安裝 lombok使用

junit equal 排查 code 數據 undefine img get 導致   在項目開發中會經常使用到bean,entity等類,絕大部分數據類中都需要get、set、toString、equals和hashCode方法,雖然eclipse和idea開發環境下都

Spring MVC原理配置

對象 classpath oca entity attribute nco conf nal spring Spring MVC原理及配置 1.Spring MVC概述: Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提

文件系統基礎ext文件系統創建管理、文件系統的使用卸載、fstab文件格式自動掛載系統的

文件系統創建文件系統--分區格式化 格式化: 低級格式化: 劃分磁道 高級格式化: 創建文件系統,按照某種特定的標準,將整個分區劃分為大小相同的若幹小的邏輯編址單元,每個這樣的單元稱為塊(block)【windows中稱為簇】; 劃分塊的標準: 在Linux的文件系統中,主要的塊的劃分