三維可視化##3D開發
虛拟功能需求
- 太陽系運作需求
- 3D模型呈現
- ThingJS技術分析
- 系統實作步驟
基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發
3D可視化技術逐漸應用到現代多媒體的課堂教學中。
虛拟太陽系是一款天文類的3D可視化應用,它借助3D線上浏覽,模拟了一個“真實”的太陽系,以太陽為中心,八大行星逆時針圍繞太陽公轉,還有很多衛星繞轉在行星或者小天體周圍。
ThingJS平台線上提供教學示範連結,在中國小生的地理課堂或網上天文館作為虛拟課程案例使用。
以下是具體需求分析。
一、功能需求
B/S架構為主,通過浏覽器線上通路,無需安裝任何插件
可觀察太陽系中太陽和各行星的3D模型及其運作狀況
各行星運作軌道可視化
簡單操作鍵盤滑鼠可實作自由漫遊
點選太陽或行星時顯示該天體的常識資訊
随時控制太陽系運作速度
準确度高,基于各項真實太陽系資料及運作制作
運作基本無卡頓,對使用者輸入實時響應
二、運作需求
要求跨平台、跨終端線上展示,相容PC電腦、手機、平闆電腦等裝置。
ThingJS 的 3D 可視化應用是 B/S 架構的,3D 場景是運作在用戶端的浏覽器中。3D 場景渲染展示對用戶端裝置要求較高,特别是顯示卡,一般必須是獨立顯示卡。推薦的用戶端配置如下:
(1)用戶端
系統:Windows 7 及以上
CPU:雙核 CPU2.8GHz及以上
記憶體:8G 及以上
顯示卡:最低 GTX650,推薦 GTX960 及以上,顯存 2G 及以上
硬碟:300GB 及以上
ThingJS 若是離線部署,需要部署到伺服器端,ThingJS 對伺服器端的要求并不高。
(2)伺服器端
系統:Windows Server 2003 及以上
CPU:雙核 CPU2.8GHz 及以上
硬碟:500GB及以上
軟體環境:JDK 1.6 及以上
三、模型呈現
經分析,由于虛拟太陽系的運作功能集中在浏覽器端,伺服器端隻需滿足HTTP的靜态響應即可,無需動态技術。浏覽器端功能可分為模型展示、場景漫遊、運作控制三個部分。
(1)基于webGL技術,ThingJS可以将虛拟太陽系各星體3D模型和腳本運作情況相結合,最終呈現虛拟太陽系的3D可視化效果。
(2)場景漫遊是系統借助3D技術中的錄影機控制原理,通過控制滑鼠和鍵盤上的預定按鍵,以及移動錄影機的位置來實作,同時對應位置控制和視向控制的場景漫遊技術。
位置控制。可以控制虛拟漫遊者所在點的位置,在技術上就是錄影機的位置由鍵盤控制,有上下左右四個方向,系統預定WSAD為移動鍵:W:前進、S:後退、A:左移、D:右移。同時增加滑鼠點選操作,即可以通過滑鼠的左鍵進行前進,右鍵進行後退。
視向控制。可以控制使用者看向任意哪個方向,技術上是錄影機的視向(lookAt),由滑鼠的移動控制。通過第一人稱或第三人稱視角進行切換,給使用者較強的沉浸感。由于視向容易偏離畫布中心,設定空格鍵為鎖定鍵,完整的一次空格鍵點選作為視向控制的開關。
(3)運作控制是使用者通過界面上的控制台,對虛拟太陽系的運作速度進行控制。真實的太陽系下,公轉周期最短的水星,繞太陽一周需要88天,不便于使用者觀察,運作控制提供1百萬倍于真實運作速度的滑杆操縱,3D場景加入動畫、特效,便于使用者了解和操作。
四、ThingJS技術分析
為了Web開發而生,旨在加速3D開發,它與Web浏覽器深度整合。ThingJS的所有接口功能都要通過 Javascript調用。當初,WebGL的誕生解決了在浏覽器内無插件呈現3D圖像的難題;ThingJS則加速了3D專業開發效率,利用可視化開發元件可完成場景搭建、腳本開發、資料對接和項目部署,極大地促進3D可視化技術在應用端普及化。
比起Three.js的開源技術探索者風格,ThingJS是更為頂層的封裝庫,ThingJS繼承了webgl的技術優點,并且提供了較為全面的物聯網開發邏輯(如地球、城市、建築、裝置等等)。
ThingJS開發特點如下:
掩蓋了渲染細節。将 webGL原生API的細節抽象化,3D場景拆解為網格、材質和光源。
面向對象。開發者可以使用頂層的 Javascript對象進行程式設計。
功能豐富。包含了許多實用的内置對象,可以友善地應用于3D動畫、高分辨率模型和一些特殊的視覺效果制作。
支援互動。提供了拾取和選擇功能,常用滑鼠完成一些操作,如變色。
提供數學庫。作為數學類輔助功能進行坐标相加等三維運算。
内置檔案格式支援。支援3D插件下載下傳3D模組化軟體如3DMAS導出文本格式的檔案,以及CampusBuilder平台的場景檔案格式。
擴充性強。可以使用 ThingJS封裝自定義的資料結構,進行定制化3D開發。
五、系統實作步驟
ThingJS提供
CampusBuider軟體搭建3D場景,并在ThingJS平台調用3D源碼進行腳本開發,減少了代碼開發工作量。ThingJS從管理模組化的角度出發,讓開發和設計達成良好的協作。況且模組化軟體如3DSMAX的制作成本過高,并不适合小團隊的開發思路。
ThingJS系統工作流程如下圖。
太陽是恒星,其他的行星如金星、木星、水星、火星等,每個行星都有自己的魅力。
行星模型的搭建過程總結如下。
在太陽系外的背景星空中有着遙遠、衆多的恒星,反映出來是星星點點的光芒,可以通過粒子系統來實作。ThingJS定義了點在空間中的位置和材質,材質定義了顔色、所繪制單一顔色和尺寸的點。
基于浏覽器端的3D仿真系統在商業、教育等領域将會有廣闊的應用前景,ThingJS可視化平台支援智慧教育可視化系統應用發展,利用
數字孿生技術将更多教育訓練内容生成虛拟場景,使用者了解更加直覺、高效。