#三維可視化##3D開發#
智慧校園總體設計與規劃用戶與虛擬場景的互動實現全局場景的漫遊模式
國內各大高校,近幾年紛紛搭建了3D智慧校園,如清華大學智慧校園系統,更是實現了虛擬課堂功能。新華三集團與優鍩ThingJS達成技術戰略合作,利用ThingJS平臺構建3D智慧校園,創建一個足不出戶就可以了解校園地理信息與文化背景的虛擬平臺。
1. 總體設計與規劃
智慧校園系統的架構設計分為基礎層、數據層、服務層、應用層和表示層五個層次。
基礎平臺採用的是伺服器,ThingJS平臺提供在線發布和離線部署兩個項目管理功能,本文選擇局域部署,採用Windows平臺配合Tomcat來配置伺服器;數據層主要負責文本數據、多媒體數據、關係型數據的存儲管理;服務層負責給應用層提供基礎性服務;應用層組件可以單獨使用,提供監控管理、角色模式漫遊和全局模式漫遊;表示層將系統進行客戶端的展示,即對用戶所能直觀看到的頁面進行展示。
構建虛擬場景,主要基於WebGL 3D繪圖技術實現虛擬場景的生成整合,將前面準備好的模型導入到智慧校園場景的目標坐標內,並為建築物和天空貼圖,再添加3D交互腳本,實現用戶與虛擬場景的漫遊功能。
JavaScript開發邏輯下的3D框架-ThingJS,將複雜的3D功能代碼封裝起來,開發者可以不必關心框架內部的代碼是如何實現的,只要正確的調用接口即可快速的完成應用的開發,節省了開發者的時間和精力,同時這種方式也避免了開發者在運用 JavaScript代碼時出現不應該出現的錯誤,3D交互更輕鬆。【註冊使用】
2. 用戶與虛擬場景的互動
我們可以使用滑鼠控制智慧校園的場景,任意地旋轉、平移、縮放,可以查看每個建築物的名稱和文化背景。
建築物標籤和文字性說明的顯示,即在每個建築物上方添加一個建築物的名稱,比如文科樓等標誌牌的顯示;接下來實現滑鼠互動功能,當滑鼠移動到建築物上面時,智慧校園將會顯示該建築物的歷史文化等文字性說明。
實現步驟如下:
(1)利用快捷界面庫來創建一個2D HTML界面,為前面構建好的幾幢建築物上方添加一個小面板,說明建築物的名稱,讓用戶一眼就能清晰地了解整個智慧校園建築物的大致分布情況。2D面板的創建,我們使用 ThingJS提供的UIAnchor對象來實現,用戶可以很方便地了解該建築物的文化背景同時也很直觀地了解該建築物在校園中所在的大致位置。
(2)滑鼠操作場景的旋轉、平移、縮放屬於ThingJS系統內置功能,任何3D場景默認添加一個控制器,即常用的軌跡球控制項 Orbit Controls,並限制了上下旋轉的角度範圍和滾輪控制相機離中心點的最大距離和最小距離。
(3)在3D場景導入一個機器小人,機器人在虛擬場景行走時,利用ThingJS提供的角色動畫api,為它添加了一個行走、跑步、招手等動畫效果,跟隨著機器人漫遊智慧校園的每一個角落,更加生動有趣。
3. 實現全局場景漫遊模式
為了能更清晰明了的構建整合智慧校園,便於未來的擴展,需要對整個場景進行模塊化。通過按層次的劃分,對模型進行歸類,逐層分解模型,從而明確智慧校園的場景元素及場景框架。
智慧校園實現場景漫遊,實際上就是對場景中相機的控制,通過滑鼠跟隨移動的物體瀏覽智慧校園的每一個角落,每幀更新攝像機的位置實現,讓用戶對智慧校園的建築物分布有個全局清晰的概念,比如提供室內的模擬參觀功能。
用戶可以單擊按鈕,進入教室內部的空間,通過計算機渲染,直接查看該教室的整體布局。用戶可以隨意在房間中行走,在任意角度觀察該教室的3D模型。
本項目在CampusBuilder簡單搭建教室的3D場景【客戶端下載】,放置一個綠板、一個教室講臺、以及若干的課桌椅。可以根據實際情況一一定製,或者從ThingJS擴展庫取用3D模型,避免重新建模。然後將這些模型與建築物一起導入ThingJS平臺,並加載到智慧校園的場景,最後計算每個房間的坐標,以便用於機器人定位。
ThingJS - 物聯網3D可視化PaaS平臺
ThingJS庫是用 JavaScript編寫的 WebGL第三方庫,支持中小企業快速開發3D項目,極大簡化了整體流程:1. 在CampusBuilder完成場景的搭建、展示,2. 通過 JavaScript代碼可以完成滑鼠對場景的控制,如移動、平移、縮放等操作,3. 在ThingJS平臺進行實時數據對接,4. 選擇在線或者離線部署,支持iframe連結在線訪問3D場景。