在我之前的文章 AR 中運算光影 - Unity & Vuforia 中講到關於用 Unity 和 Vuforia,要在 AR 中產生光影效果的問題,還有實作的方法。那篇文章中使用 Post-Effect 來把光影另外疊到畫面中。
之前那個方法雖然可以用,但是有一個很討人厭的事情:由於 Unity 沒辦法把物件和它的影子 Render 到不同 Layer,所以要產生光影的話,物件需要額外拷貝一份,再指派給不同 Layer。一方面效能很差(其實我沒測過,但應該很差 XD),但最主要還是管理起來非常麻煩,Hierarchy 會很混亂。
因此,就嘗試研究其他的方法,後來便發現了使用 Unity 內建的 Projector 的方法。而這個方法也是我 A Week A Project 的作品中持續使用的方法(之前的 Post-Effect 法只在 Paper House Demo 中使用過)。
這個方法的實作非常簡單,只要製作環境的 3D Model,再新增一個跟 AR Camera 視角一模一樣的 Projector,把真實畫面的影像給投上去即可。
光聽文字敘述可能有點模糊,可以參考下面的操作示範,裡面附有說明文字。這個操作還有幾個重點:
之前那個方法雖然可以用,但是有一個很討人厭的事情:由於 Unity 沒辦法把物件和它的影子 Render 到不同 Layer,所以要產生光影的話,物件需要額外拷貝一份,再指派給不同 Layer。一方面效能很差(其實我沒測過,但應該很差 XD),但最主要還是管理起來非常麻煩,Hierarchy 會很混亂。
因此,就嘗試研究其他的方法,後來便發現了使用 Unity 內建的 Projector 的方法。而這個方法也是我 A Week A Project 的作品中持續使用的方法(之前的 Post-Effect 法只在 Paper House Demo 中使用過)。
這個方法的實作非常簡單,只要製作環境的 3D Model,再新增一個跟 AR Camera 視角一模一樣的 Projector,把真實畫面的影像給投上去即可。
Week 6 - Door 使用 Projector 法的實際配置情況 |
光聽文字敘述可能有點模糊,可以參考下面的操作示範,裡面附有說明文字。這個操作還有幾個重點:
- 教學裡面用到的程式你都可以在我的 Github 專案 Unity Vuforia AR Tools 裡面找到
- Projector 的 Shader 有 Light、Additive、Multiply 等,使用不同的 Shader,用來當作地板的顏色也要改變,比如說用 Additive 就要用深色地板、Multiply 就要用淺色地板
- Additive Shader 好像不在 Unity 的 Standard Assets 裡面,我是查 Google 找到修改方法的,我上面提供的 Github 專案裡面有包含這個 Shader
- 要用 Projector 有效產生光影,要注意周圍光源的控制,還有作為環境的 Mesh 顏色。比如說用 Multiply 法,如果地板是純白色,會發現光打不上去,因為純白已經是最亮的顏色,無法再更亮。所以通常我都會把周圍環境設定為灰色,這樣光影就會比較漂亮,但有一個小缺點是整體看起來會相當灰暗
留言
張貼留言