從零開始學習3D視覺化之場景層級(1)

1、開啟場景層級控制

2、父子樹和分類物件屬性樹

3、切換場景層級

3D視覺化

場景中載入園區後系統會自動建立園區、建築、樓層、房間等物體物件,這些物件也自然把場景分成了不同的層級,場景提供了層級結構,可以透過我下面介紹的方法,來控制

場景層級

。那麼層級結構有什麼用呢?可以更方便管理和查詢到場景中物體;可以批次操作物體,比如移動父物體可以帶著孩子一起移動等等。

1、開啟場景層級控制

首先將下面的程式碼輸入到專案檔案中,即可開啟 ThingJS 3D視覺化示例園區的場景層級控制功能。

// 載入ThingJS示例園區var app = new THING。App({ url: ‘models/storehouse’})//透過load事件載入園區資訊,並開啟場景層級控制app。on(‘load’, function(ev) { app。level。change(ev。campus)})

執行專案檔案後,在預覽視窗,滑鼠左鍵雙擊3D視覺化園區內的建築,即可進入建築內部。點選滑鼠右鍵,退出建築。滑鼠左鍵雙擊模型(如小車、叉車等),可聚焦到模型,點選滑鼠右鍵,退出聚焦模式。圖中所示為滑鼠左鍵雙擊小車後的聚焦效果。

從零開始學習3D視覺化之場景層級(1)

還有一個方法就是透過場景資訊來進入層級切換,工具欄的場景資訊對應的就是 CampusBuilder 中搭建的園區的物體(或物件)資訊。

場景資訊中,顯示當前場景的

父子樹

分類物件屬性樹

,可按名稱、ID以及屬性,搜尋場景中的物件。點選物件右側的

定位

按鈕,就可以定位到此物件。

從零開始學習3D視覺化之場景層級(1)

2、父子樹和分類物件屬性樹

父子樹

分類物件屬性樹

是 ThingJS 提供的兩套層級體系,便於管理和查詢場景中的物體和批次操作,比如移動父物體時子物體可以一起移動。

父子樹層級體系中,透過 children 訪問到下層子物件物體,透過 parent 訪問到對應的父物體。子物體可以為多個,父物體只能有一個,children 屬性是陣列(Array)型別。建立一個物體物件時,可以指定該物件的父物體。

分類物件屬性樹層級體系中,每個父物體可以有多個子物體。ThingJS 為每個物體物件提供了下列內建屬性。

buildings: 可以訪問到該園區下所有的建築。

ground: 可以訪問到園區的地面物件。

things: 訪問所有 Thing 型別的物體。

從零開始學習3D視覺化之場景層級(1)

3、切換場景層級

ThingJS 場景中提供了層級結構,但是如何實現3D視覺化場景層級切換呢?可以透過 “父子樹” 和 “分類物件屬性樹” 來批次控制子物體,比如移動、顯示或者透明控制等。

在3D視覺化場景內只要呼叫了一次 app。level。change(無論是將層級切換到了園區還是切換到了某個Thing),ThingJS 就啟動了內建的 園區<—>建築<—>樓層<—>物體…… 的逐級進入和退出的互動操作流程和對應的響應。左鍵雙擊可進入到所拾取的物體層級,右鍵單擊可返回到上一層級。

從零開始學習3D視覺化之場景層級(1)

從3D視覺化園區進入到建築內,定義為一次 “層級切換” 。學會了如何切換場景層級,下篇文章我繼續深入學習如何動態建立組合場景。