• <xmp id="yyece"><menu id="yyece"></menu>
    <menu id="yyece"><strong id="yyece"></strong></menu>
  • <nav id="yyece"><code id="yyece"></code></nav>
    <nav id="yyece"><code id="yyece"></code></nav>
    <xmp id="yyece"><menu id="yyece"></menu>
    <nav id="yyece"><strong id="yyece"></strong></nav>
  • 專題欄目:ARVRMR虛擬現實

    VRML造型被照亮還需要什么?

    1.環境光線

    在現實世界中,物體表面為直接照射其表面的光源和由其他表面所反射的光線所照亮直接光線是指該光線從光源直接、無障礙地照射到一個造型上,如桌面上的臺燈對燈下的書本的照射。環境光線是由分散光線和反射光線形成的,比如陰天時并不能確定太陽的位置,但周圍的物體還是被照亮了。

    在VRML中,可以模擬直接光線和環境光線的效果。在三種光源照射范圍內的造型或造型的一部分是由直接光線照射的。為了控制一個VRML世界中環境光線的水平,可以給每一種光源提供一個環境亮度值,如果該值較高,則表示該光源在該VRML世界產生的環境光線較多,如太陽的環境亮度值較高。如果該值較低,則表示該光源在VRML世界中將產生較少的環境光線,如一個聚光性很好的閃光燈所產生的環境光線就很少。

    2.光線強度衰減

    光線強度衰減是描述隨著光源與實體直接距離的增加光源照明逐步減弱的過程。通過控制光線強度衰減參數,可以實現用一個光源照亮很大的區域或只能照亮其周圍的區域 VRML 的 PointLight和 Spotlight節點有兩個控制光線強度衰減的參數:一個含三個強度衰減參數的集合和光束半徑。強度衰減參數控制光錐體中,沿截面半徑從中心到邊緣變化,它可以使被照亮區域中的各點是相同的亮度,也可以把光照水平隨距離的增加而迅速降低。光束半徑用于控制一個光源可照射的最大范圍。小半徑的光源只能照亮其周圍很小的區域,而在半徑的光源可以照亮其周圍一個很大的區域。

    由于平行光源沒有具體位置, DirectionalLight節點沒有半徑或強度衰減參數,而且平行光源只照亮在同一組中(組節點如 Transform節點)的節點與 DirectionalLight節點同組的造型由該平行光源照亮,而非同組的造型則不會被照亮。

    3.光亮點

    在現實世界中,若將一個聚光光源照射到一個巨大正方體表面的中央,則會在該表面的中央產生一個亮點。但是實際效果可能會因 VRML 瀏覽器和圖形硬件而異正確計算上述聚光光源的效果需要先進的圖形硬件,這超出了大多數人所能承受的范圍圖形軟件固然可以完成上述計算,但是將耗費大量的時間,這對交互式圖形而言是不現實的。因此在VRML世界中被點光源或聚光光源照射的造型不可能表現出所希望的在現實世界的光照效果。

    如果要改變上述光照的局限,應該將造型表面網格化。比如用小的面片組成的造型,用聚光光源照射網格的中央。光照是在網格中的每一個坐標點計算的,每一個小平面被獨立處理。接近中心以及距離聚光光源較近的小平面顯得明亮,而那些距離整個平面的邊緣較近的小平面將顯得較暗,這樣就在聚光光源照射的表面中央生成了一個亮點。

    光滑的造型,如圓柱、圓錐和球通常以同樣的方式處理,以生成有小平面的造型。但是長方體是沒辦法被網格化的,可以采用 IndexedFaceSet和節點生成自己的平面或曲線的網格化表面。

    4.白色光

    在VRML中,可以使用 Material、 Color和紋理節點設置造型的顏色當白色光線照射到那些有顏色的造型上時,每一個造型將反射光中的某些顏色一個藍色的造型反射藍色,一個紅色的造型反射紅色光等。

    當一束有色光照射到一個白色表面時,被反射的光的顏色是有色光中的顏色,如以一束紅色光照射一個白色表面,該表面將顯示為紅色,因為光的顏色只有紅色被反射。一個造型的顏色,與造型本身的顏色以及照射光的顏色有關。有色光照射有色表面的情況就有些復雜。如一個藍色表面只能反射藍色光,而一束紅色光中不含藍色光這樣當藍色表面被紅色光所照射時將顯示為黑色,因為沒有藍色光可反射。但是當藍色光照射藍色表面時,將顯示為藍色。

    內容來源:薛慶文《虛擬現實VRML程序設計與實例》

    發表評論

    相關文章

    在线观看免费视频