現在,3D模型已經用于各種不同的領域。在醫療行業使用它們制作器官的精确模型;電影行業将它們用于活動的人物、物體以及現實電影;視訊遊戲産業将它們作為計算機與視訊遊戲中的資源;在科學領域将它們作為化合物的精确模型;建築業将它們用來展示提議的建築物或者風景表現;工程界将它們用于設計新裝置、交通工具、結構以及其它應用領域;在最近幾十年,地球科學領域開始建構三維地質模型,而且3D模型經常做成動畫,例如,在劇情片電影以及計算機與視訊遊戲中大量地應用三維模型。它們可以在三維模組化工具中使用或者單獨使用。為了容易形成動畫,通常在模型中加入一些額外的資料,例如,一些人類或者動物的三維模型中有完整的骨骼系統,這樣運動時看起來會更加真實,并且可以通過關節與骨骼控制運動。
先來看看整體實作的效果圖:

想讓2d圖檔在3d管線上移動則是使用g3d.toViewPosition(position)來擷取3d模型的二維坐标,這個函數中的參數就是三維模型的3d坐标,我們可以直接将polyline管線上的點傳入toViewPosition函數中,這邊擷取管線上的點在ht中已經封裝好三個函數getLineCacheInfo、getLineLength、getLineOffset,這樣就可以直接擷取到二維坐标,然後将img的坐标設定上去即可,以下是img圖檔在管道上移動的代碼:
可以看到圖中第二層中的立方體上有“SDH”的字樣,我是通過設定shape3d.top.img: imgURL來實作的,這邊的imgURL可以是圖檔的相對路徑,也可以是ht中用ht.Default.setImage聲明的img的名稱,還可以是json格式構造的圖檔。在ht中,2D文字顯現在3D上,則字型周圍會出現“鋸齒”,這個時候隻要設定“label.transparent: true”即可。
底層的一個環形的效果是通過一個算法來實作的,環形得确認這個環形上有多少個元素,然後算每兩個之間的角度,在通過sin、cos來計算每一個元素的位置,得出了如下代碼: