天天看點

基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發

三維可視化##3D開發

虛拟功能需求

  1. 太陽系運作需求
  2. 3D模型呈現
  3. ThingJS技術分析
  4. 系統實作步驟
    基于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的靜态響應即可,無需動态技術。浏覽器端功能可分為模型展示、場景漫遊、運作控制三個部分。

基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發

(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的技術優點,并且提供了較為全面的物聯網開發邏輯(如地球、城市、建築、裝置等等)。

基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發

ThingJS開發特點如下:

掩蓋了渲染細節。将 webGL原生API的細節抽象化,3D場景拆解為網格、材質和光源。

面向對象。開發者可以使用頂層的 Javascript對象進行程式設計。

功能豐富。包含了許多實用的内置對象,可以友善地應用于3D動畫、高分辨率模型和一些特殊的視覺效果制作。

支援互動。提供了拾取和選擇功能,常用滑鼠完成一些操作,如變色。

提供數學庫。作為數學類輔助功能進行坐标相加等三維運算。

内置檔案格式支援。支援3D插件下載下傳3D模組化軟體如3DMAS導出文本格式的檔案,以及CampusBuilder平台的場景檔案格式。

擴充性強。可以使用 ThingJS封裝自定義的資料結構,進行定制化3D開發。

五、系統實作步驟

ThingJS提供

CampusBuider

軟體搭建3D場景,并在ThingJS平台調用3D源碼進行腳本開發,減少了代碼開發工作量。ThingJS從管理模組化的角度出發,讓開發和設計達成良好的協作。況且模組化軟體如3DSMAX的制作成本過高,并不适合小團隊的開發思路。

ThingJS系統工作流程如下圖。

基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發

太陽是恒星,其他的行星如金星、木星、水星、火星等,每個行星都有自己的魅力。

行星模型的搭建過程總結如下。

基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發

在太陽系外的背景星空中有着遙遠、衆多的恒星,反映出來是星星點點的光芒,可以通過粒子系統來實作。ThingJS定義了點在空間中的位置和材質,材質定義了顔色、所繪制單一顔色和尺寸的點。

基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發

基于浏覽器端的3D仿真系統在商業、教育等領域将會有廣闊的應用前景,ThingJS可視化平台支援智慧教育可視化系統應用發展,利用

數字孿生技術

将更多教育訓練内容生成虛拟場景,使用者了解更加直覺、高效。

基于WebGL的虛拟太陽系漫遊技術實作 ThingJS 科幻片三維可視化##3D開發