在X3D場景空間中,可以使用點光源節點(PointLight)、平行光源節點(DirectionalLight)和聚光性光源節點(SpotLight)來處理造型物體的光照明亮程度。
本講就來介紹這三個節點的屬性及其使用方法。
一、 點光源節點(PointLight)
PointLight 是一個點光源,它向所有的方向發射光線。光線照亮所有的幾何對象,也不會被幾何形體遮擋而形成陰影。其主要屬性如下表所示:
簡單的示例代碼如下:
說明:我們先在點光源位置處構造一個與光源顏色相同的小球,然後在(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 節點的光不隨距離變化而衰減,其主要屬性如下表所示:
示例如下:
結果如下圖所示:
至此,我們對X3D場景的光源有了一定的了解,在下一講中,我們將討論紋理映射。
進入討論組討論。