Light Map
打光可以在3D場景設置光源,與model法向量進行運算來產生光源效果,也可以使用Light Map紀錄亮度資訊,把光源的效果用貼圖的方式產生在model上。
這篇來講使用二元空間分割樹 (Binary Space Partitioning Tree)如何來畫一個場景,接續我撰寫的二元空間分割樹 (Binary Space Partitioning Tree)。
Binary Space Partioning Tree英文簡稱為BSP Tree,二元空間分割樹,簡稱為二叉樹。它於1969年被Schumacker在文章《Study for Applying Computer-Generated Images to Visual Simulation》首次提出,並被ID公司第一次使用到FPS遊戲Doom中,Doom的推出獲得了空前的成功,不僅奠定了ID公司在FPS遊戲開發的宗師地位,也使BSP技術成為室內渲染的工業標準,從BSP產生到現在已經有30多年了,其間雖然產生了大量的室內渲染的算法,但卻無人能撼動它的地位,對於以摩爾定律發展的計算機業來說這不能不是一個奇蹟。
在3D計算機圖學的可見度問題(visibility problem)最簡單的解決方法是畫家演算法(Painter’s Algorithm)。
知道Phong Reflection Model中的Ambient、Diffuse、Specular,這次要把焦點放在cos (Phong’s specular term)上,連乘次數的不同在物體上會表現出不同材質效果。
想要在場景中產生陰影,其中之一個方法是shadow map,另一個方法是shadow volumn,先瞭解兩者的原理、優缺點與差異,有助於我實做前者shadow map。目前知道shadow map適用於靜態場景(物體與光源相對位置不變),而shadow volumn則適用在動態場景,當然靜態場景也沒問題。實做上前者易於後者,能在現今的shader發揮潛能。
官方網站(Lighthouse3D)的教學淺顯易懂,它以OpenGL提供的茶壺來做toon shading,產生類似卡通的效果,可以知道shader如何運作。一般的OpenGL無法在打光之後再做色彩的變化,若以shader來著色,便可做出特殊效果。
HappyMan・迴響