在X3D場景空間中,每一個造型都有其空間坐標,通過修改空間坐標系就可以使該造型在場景空間中移動、旋轉和縮放等。
X3D提供Transform節點來進行造型的幾何變換,該節點的主要屬性如下表所示:
屬性 含義 默認值 使用說明 translation 平移 0 0 0 將幾何體平移到指定的空間點位置 rotation 旋轉 0 0 1 0 前3個值是空間坐標點,該點和原點相連的線為旋轉軸,第4個值為旋轉角度(以弧度為單位) center 操作基點 0 0 0 指定一個空間點作為幾何變換的基點 scale 比例 1 1 1 指定在X、Y、Z方向的比例系數以便進行縮放 scaleOrientation 預旋轉比例 0 0 1 0 縮放前子節點局部坐標系統的預旋轉(允許沿著子節點任意方向縮放),其數值含義同rotation屬性 bboxCenter 邊界盒的中心 0 0 0 指定幾何體自身原點的位置 bboxSize 邊界盒的大小 -1 -1 -1 默認情況下是自動計算的,為了優化場景,也可以強制指定。
下面就來介紹上述屬性的使用方法。
一、平移
示例代碼如下:
說明:上面例子中,我們構造了兩個球。為了使另一個球在(3,0,0)位置上顯示,我們使用了Transform節點,該節點是一個組節點,Shape等節點需要作為它的子節點才能進行幾何造型的變換。
結果如下圖所示。
二、旋轉
代碼如下:
說明:立方體先平移到(3,0,0)點,然後按自身原點沿Z軸旋轉45度(弧度值約為0.785),結果如下圖所示。
若將立方體自身原點移至最右側面的中點,則上述代碼可修改成:
其結果如下:
請仔細比較這兩次結果的不同。
三、縮放
代碼如下:
說明:上述代碼中將第二個球沿X、Y、Z方向分別設置比例系數1、3和0.5,其結果如下圖所示。
四、綜合實例
通過幾何變換可以構造更多更復雜的幾何造型,下面的示例代碼就是用來構造一個三維坐標軸。
說明:上述代碼中,先用圓柱和圓錐構造Y軸,並將其合並成組Axis。然後對組Axis進行旋轉變換,結果如下圖所示。
上述顯示的場景是用鼠標改變其視角的結果。當然,視角的改變還可直接通過節點進行設置,在下一講中,我們將討論視點和導航的設置。