第七講 光源處理
在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場景的光源有了一定的了解,在下一講中,我們將討論紋理映射。