發布時間 : 2019-12-02
文章熱度 : 392
零基礎了解3D游戲開發,是一件不容易的事。我們將分幾部分為大家細化3D游戲開發的每個環節,希望對你了解3D游戲開發有些許幫助。
燈光、陰影、反射光
光源是3D場景中不可缺少的重要組成部分,網格和紋理決定了物體的形狀和外觀,光源則可以照明、可以產生陰影、還可以影響場景環境以及3D模型的顏色、亮度、氛圍等等。
3D中的光源就是燈光,其它如泛光、環境光等都是光效,而非光源。3D燈光有三種, 平行光(DirectionLight),點光(PointLight),聚光(SpotLight),LayaAir引擎不僅支持這些光源的任意類型,還支持在同一場景下任意添加多個不同類型的光源。下面簡單介紹一下這三種光的區別。
平行光是一種模擬大自然太陽光的燈光,光源來自無窮遠的位置,來自光源的光線始終都是平行的且沒有衰減。引擎中可設定光源方向,用于給全場景照亮。
點光是一種以光源點為中心,向四周呈發射狀的光源,光源點位于3D空間中的某個位置。類似于現實中的蠟燭光、篝火、家用電燈等發光的方式,這種光擁有照射范圍和衰減半徑。光照范圍之外的地方則處于無光的黑暗之中。
聚光與點光類似,都屬于位置光,也是位于3D空間的某個位置,也有照射范圍和衰減半徑,但是,與向四周發散的無方向點光不同,聚光則擁有光源方向,是一種呈錐形角度的光源,類似于現實中的手電洞、舞臺聚光燈等光源效果。
陰影是燈光照射模型時產生的, 實時陰影隨著燈光角度、燈光強度、模型位置等變化而變化。能產生更加強烈的立體感與真實感。
反射光,是指光源在照射到3D模型上,反射產生的光效。為了模擬自然反射現象,根據不同材質,引擎對反射光會使用不同的光照模型,比如,BlinnPhong材質中使用了漫反射和鏡面反射模型。我們簡單來理解一下兩者的差異。
引擎中的漫反射主要是模擬材質表面粗糙不平的光學反射效果,理想的漫反射材質表面是完全不光滑且沒有光澤的,當光源照射到這種材質上,呈現出發散的反射效果。
引擎中的鏡面反射用于模擬光滑水平面的光學反射效果,是一種有方向反射,其反射方向以反射平面的法線為中心與入射方向的夾角對等。理想的高光反射材質是表面完全光滑的,比如像鏡子一樣。鏡面反射常用于閃閃發光的視覺效果,且會產生高亮的點狀光斑,所以鏡面反射有的時候也叫鏡面高光,如果LayaAir文檔材質篇中提到高光顏色或者高光貼圖,我們要能理解,這是指針對鏡面反射效果的高光顏色和高光貼圖。
基于漫反射和鏡面反射的光學現象,引擎中使用了多個光照模型,用于模擬自然光中的反射現象。本篇先揭開一點。暫且先有一個初步的認知。我們繼續來了解一些其它與光相關的概念。
下一部分,上海博思游戲學校將為你介紹3D游戲開發中的加色法、環境光、泛光、光照貼圖,敬請期待。