如何用unity做兩面互相反射的鏡子?

試過了用water reflection的代碼,和reflection probe做鏡子,但不能互相反射。

試過了render texture,可以互相反射,但render texture並不是鏡子的效果,尤其當第一人稱角色走近鏡子的時候,完全不是鏡子的表現。

請問有沒有可能在unity中做出來兩面鏡子互相反射的效果?或者模擬效果?如何實現?

謝謝。


閑著沒事寫了一個

方法就是用渲染前的OnWillRenderObject事件在主相機渲染前創建鏡子相機實現遞歸渲染,用下層渲染出的RenderTexture當做上層的材質

Unity的函數調用順序比較蛋疼,遞歸時注意恢復狀態

鏡子翻轉後相機坐標系左手變右手,右手變左手,backfacing要翻一下

learn_unity/MirrorReflection.cs at unity4.6 · AmbBAI/learn_unity · GitHub


Portal rendering

起床做了個:

相機和鏡子關係還是不對, 但這說明可以用 unity 直接實現了!

方法就是兩個鏡子後面分別一個相機, 渲染目標是 render texture, 同時把這個 render texture 作為鏡子材質的 texture.

編輯時只渲染了三層, 運行後渲染的層數較多.

至於畫面還是需要 clear 的, 不 clear 雖然反射數量越來越多, 但同時質量越疊越低, 鋸齒會很明顯, 而且物體移動就留下影子了.

又細想了一下, 相機位置不能是固定的, 應當是屏幕相機在鏡子里對稱的位置.

似乎比較複雜, 明天再整理答案, 睡了......


Asset Store

搜遞歸鏡子倒是找到一個


推薦閱讀:

如何用高效的用 shader 實現柱狀圖?
哪裡有Unity3D遊戲開發的教程?
C#初學者問一個問題?
會Unity 3D的技術人才現在是否緊俏?做此類培訓的市場前景如何?
Unity 高級程序員應該具備怎樣的能力?要怎樣成長為 Unity 高級程序員?

TAG:Unity遊戲引擎 |