程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> X3D實戰基礎講座之七

X3D實戰基礎講座之七

編輯:JAVA編程入門知識
  第七講 光源處理

  在X3D場景空間中,可以使用點光源節點(PointLight)、平行光源節點(DirectionalLight)和聚光性光源節點(SpotLight)來處理造型物體的光照明亮程度。
  
  本講就來介紹這三個節點的屬性及其使用方法。
  
  一、 點光源節點(PointLight)
  
  PointLight 是一個點光源,它向所有的方向發射光線。光線照亮所有的幾何對象,也不會被幾何形體遮擋而形成陰影。其主要屬性如下表所示:

屬性 含義 默認值 使用說明 on 光源是否開關 True 為True時打開光源,為False時關閉光源 color 光的顏色 1 1 1 指定光的顏色,它會影響對象的實際顏色顯示效果 location 光源所在的位置 0 0 0 光源的位置影響光的強弱 intensity 燈光的亮度 1 取值范圍為0~1 ambientIntensity 對環境光影響程度 0 取值范圍為0~1,它的值越大,對環境光影響也越大 radius 光源影響半徑 100 以光源為中心的燈光效果的最大半徑 attenuation 光線衰減參數 1 0 0 由三個值構成:第1個值控制光源在照明球體中亮度的一致程度,第2個值控制隨著距離的增加,光線的線性衰減程度,最後1個值是控制隨著距離的增加,光線的線性平方衰減程度。

  簡單的示例代碼如下:
  
  
  
  說明:我們先在點光源位置處構造一個與光源顏色相同的小球,然後在(3,0,0)處構造一個圓柱體。結果如下圖所示,注重圓柱體的顏色。
  
  
  
  若在光源和圓柱體之間在加一個相同圓柱體,試比較這兩上圓柱體的效果。代碼如下:
  
  
  
  結果如下圖所示:
  
  
  

進入討論組討論。

  二、聚光性光源節點(SpotLight)
  
  SpotLight 是一個聚光性光源節點。它只照亮指定圓錐范圍內的幾何體。它的主要屬性如下:
  
  
  
  其中大部分屬性與PointLight節點含義相同,所不同的有:
  
   direction --燈光方向,默認值為[0 0 -1]
   intensity -- 燈光亮度,默認值為1,取值范圍為0~1
   beamWidth -- 內部立體角(弧度) ,默認值為1.570796(180度),假如beamWidth > cutOffAngle, beamWidth 會重新設為和 cutOffAngle相等。
   cutOffAngle --外部立體角(弧度),默認值為0.785398(90度)。
  
  上述參數含義和關系可以用下圖來表示:
  
  
  
  示例代碼如下:
  
  
  
  結果如下圖所示:
  
  
  
  

  三、 平行光源節點(DirectionalLight)
  
  DirectionalLight 創建了一個平行光線來來照亮幾何體。由於光線從無限遠處平行照射,所以不需要考慮光源的位置。DirectionalLight 節點的光不隨距離變化而衰減,其主要屬性如下表所示:

屬性 含義 默認值 使用說明 on 光源是否開關 True 為True時打開光源,為False時關閉光源 color 光的顏色 1 1 1 指定光的顏色,它會影響對象的實際顏色顯示效果 intensity 燈光的亮度 1 取值范圍為0~1 ambientIntensity 對環境光影響程度 0 取值范圍為0~1,它的值越大,對環境光影響也越大

  示例如下:
  
  
  
  結果如下圖所示:
  
  
  
  

  至此,我們對X3D場景的光源有了一定的了解,在下一講中,我們將討論紋理映射。

進入討論組討論。
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved