1.環(huán)境光線
在現(xiàn)實(shí)世界中,物體表面為直接照射其表面的光源和由其他表面所反射的光線所照亮直接光線是指該光線從光源直接、無(wú)障礙地照射到一個(gè)造型上,如桌面上的臺(tái)燈對(duì)燈下的書(shū)本的照射。環(huán)境光線是由分散光線和反射光線形成的,比如陰天時(shí)并不能確定太陽(yáng)的位置,但周圍的物體還是被照亮了。
在VRML中,可以模擬直接光線和環(huán)境光線的效果。在三種光源照射范圍內(nèi)的造型或造型的一部分是由直接光線照射的。為了控制一個(gè)VRML世界中環(huán)境光線的水平,可以給每一種光源提供一個(gè)環(huán)境亮度值,如果該值較高,則表示該光源在該VRML世界產(chǎn)生的環(huán)境光線較多,如太陽(yáng)的環(huán)境亮度值較高。如果該值較低,則表示該光源在VRML世界中將產(chǎn)生較少的環(huán)境光線,如一個(gè)聚光性很好的閃光燈所產(chǎn)生的環(huán)境光線就很少。
2.光線強(qiáng)度衰減
光線強(qiáng)度衰減是描述隨著光源與實(shí)體直接距離的增加光源照明逐步減弱的過(guò)程。通過(guò)控制光線強(qiáng)度衰減參數(shù),可以實(shí)現(xiàn)用一個(gè)光源照亮很大的區(qū)域或只能照亮其周圍的區(qū)域 VRML 的 PointLight和 Spotlight節(jié)點(diǎn)有兩個(gè)控制光線強(qiáng)度衰減的參數(shù):一個(gè)含三個(gè)強(qiáng)度衰減參數(shù)的集合和光束半徑。強(qiáng)度衰減參數(shù)控制光錐體中,沿截面半徑從中心到邊緣變化,它可以使被照亮區(qū)域中的各點(diǎn)是相同的亮度,也可以把光照水平隨距離的增加而迅速降低。光束半徑用于控制一個(gè)光源可照射的最大范圍。小半徑的光源只能照亮其周圍很小的區(qū)域,而在半徑的光源可以照亮其周圍一個(gè)很大的區(qū)域。
由于平行光源沒(méi)有具體位置, DirectionalLight節(jié)點(diǎn)沒(méi)有半徑或強(qiáng)度衰減參數(shù),而且平行光源只照亮在同一組中(組節(jié)點(diǎn)如 Transform節(jié)點(diǎn))的節(jié)點(diǎn)與 DirectionalLight節(jié)點(diǎn)同組的造型由該平行光源照亮,而非同組的造型則不會(huì)被照亮。
3.光亮點(diǎn)
在現(xiàn)實(shí)世界中,若將一個(gè)聚光光源照射到一個(gè)巨大正方體表面的中央,則會(huì)在該表面的中央產(chǎn)生一個(gè)亮點(diǎn)。但是實(shí)際效果可能會(huì)因 VRML 瀏覽器和圖形硬件而異正確計(jì)算上述聚光光源的效果需要先進(jìn)的圖形硬件,這超出了大多數(shù)人所能承受的范圍圖形軟件固然可以完成上述計(jì)算,但是將耗費(fèi)大量的時(shí)間,這對(duì)交互式圖形而言是不現(xiàn)實(shí)的。因此在VRML世界中被點(diǎn)光源或聚光光源照射的造型不可能表現(xiàn)出所希望的在現(xiàn)實(shí)世界的光照效果。
如果要改變上述光照的局限,應(yīng)該將造型表面網(wǎng)格化。比如用小的面片組成的造型,用聚光光源照射網(wǎng)格的中央。光照是在網(wǎng)格中的每一個(gè)坐標(biāo)點(diǎn)計(jì)算的,每一個(gè)小平面被獨(dú)立處理。接近中心以及距離聚光光源較近的小平面顯得明亮,而那些距離整個(gè)平面的邊緣較近的小平面將顯得較暗,這樣就在聚光光源照射的表面中央生成了一個(gè)亮點(diǎn)。
光滑的造型,如圓柱、圓錐和球通常以同樣的方式處理,以生成有小平面的造型。但是長(zhǎng)方體是沒(méi)辦法被網(wǎng)格化的,可以采用 IndexedFaceSet和節(jié)點(diǎn)生成自己的平面或曲線的網(wǎng)格化表面。
4.白色光
在VRML中,可以使用 Material、 Color和紋理節(jié)點(diǎn)設(shè)置造型的顏色當(dāng)白色光線照射到那些有顏色的造型上時(shí),每一個(gè)造型將反射光中的某些顏色一個(gè)藍(lán)色的造型反射藍(lán)色,一個(gè)紅色的造型反射紅色光等。
當(dāng)一束有色光照射到一個(gè)白色表面時(shí),被反射的光的顏色是有色光中的顏色,如以一束紅色光照射一個(gè)白色表面,該表面將顯示為紅色,因?yàn)楣獾念伾挥屑t色被反射。一個(gè)造型的顏色,與造型本身的顏色以及照射光的顏色有關(guān)。有色光照射有色表面的情況就有些復(fù)雜。如一個(gè)藍(lán)色表面只能反射藍(lán)色光,而一束紅色光中不含藍(lán)色光這樣當(dāng)藍(lán)色表面被紅色光所照射時(shí)將顯示為黑色,因?yàn)闆](méi)有藍(lán)色光可反射。但是當(dāng)藍(lán)色光照射藍(lán)色表面時(shí),將顯示為藍(lán)色。
內(nèi)容來(lái)源:薛慶文《虛擬現(xiàn)實(shí)VRML程序設(shè)計(jì)與實(shí)例》