摘要:接下來我們就用平面導航圖來解決這一問題。第二部分我會給頁加上鼠標懸停事件讓頁的標簽和我們場景中的一起動起來完整代碼加載場景代碼場景地址場景相關面板相關平面圖導航事件相關點擊事件返回事件
前言
利用CampusBuilder來搭建自己的虛擬世界過程有這樣一個問題:如何快速聚焦到虛擬場景的某一位置。當然我們可以創建幾個按鈕對應查找我們需要去的位置(參照物)并聚焦,但是按鈕并不是很炫酷也不能很好的反饋給我們一些信息。接下來我們就用平面導航圖來解決這一問題。
實現
第一步,使用CampusBuilder搭建模擬場景,CampusBuilder操作簡單,分分鐘就可以上手。這里為每一個房間都創建一個小球作為視點參照物體并勾選預覽時隱藏,這樣不會對我們的場景造成影響,也便于我們聚焦到指定房間。注意:要將我們每個房間中的設備框選之后組合在一起,為下一階段的做準備。
第二步,把我們編輯好的場景加載到ThingJS中。
//加載場景代碼 var app = new THING.App({ // 場景地址 "url": "http://www.thingjs.com/./uploads/wechat/S2Vyd2lu/scene/Campus04", }); //場景相關 //************************************************************************************/ app.on("load", function () { app.camera.flyTo({ "position": [36.357131498969785, 61.953024217074265, 69.12160670337104], "target": [-1.3316924326803257, -4.9370371421622625, 33.619521849828544], "time": 2000, }); });
第三步,為平面圖創建一塊面板,并調整一下面板的位置以及大小。
圖片下載地址:
鏈接:https://pan.baidu.com/s/1gmNj... 提取碼:i0c1
//面板相關 //************************************************************************************/ var panel = new THING.widget.Panel({ closeIcon: false, dragable: false, retractable: true, opacity: 0.9, hasTitle: true, }); panel.width = 600; panel.position = [0, 200]; var dataObj = { iframe: "" }; var iframe = panel.addIframe(dataObj, "iframe").caption("").setHeight("290px");
第四步,編寫iframe頁。寫完記得將這個頁面和圖片上傳到頁面資源,資源 => 頁面資源 => 按鈕(上傳) 。
Document
第五步,完成onClick()和initViewPoint()方法。
//事件相關 //************************************************************************************/ var currentModule = null; //點擊事件 function onClick(targetObj, viewPoint) { currentModule = app.query(targetObj)[0]; currentModule.position = [0, 0, 0]; currentModule.style.opacity = 1; app.camera.flyTo({ "object": app.query(viewPoint)[0], "offset": [0, 13, 7], "time": 1000, complete: function () { currentModule.brothers.style.opacity = 0.3; } }); } //返回事件 function initViewPoint() { currentModule.brothers.style.opacity = 1; currentModule = null; app.camera.flyTo({ "position": [36.357131498969785, 61.953024217074265, 69.12160670337104], "target": [-1.3316924326803257, -4.9370371421622625, 33.619521849828544], "time": 1000, }); }
小結
第一部分我們主要完成了iframe與我們的3D場景的簡單交互,這里也沒有做什么特效只是做了一個點擊事件。這里值得一提的是currentModule這個全局變量,開始我沒有創建這個變量只是將我當前點擊的物體obj.style.opacity = 1;obj.brothers.style.opacity = 0.3, 但是執行initViewPoint(){app.query(’.Thing’).style.opacity=1}無法將場景的opacity 屬性還原(自己可以試一下,或者有解決方案留言)。第二部分我會給iframe頁加上鼠標懸停事件讓iframe頁的img標簽和我們場景中的obj一起動起來!
完整代碼
//加載場景代碼 var app = new THING.App({ // 場景地址 "url": "http://www.thingjs.com/./uploads/wechat/S2Vyd2lu/scene/Campus04", }); //場景相關 //************************************************************************************/ app.on("load", function () { app.camera.flyTo({ "position": [36.357131498969785, 61.953024217074265, 69.12160670337104], "target": [-1.3316924326803257, -4.9370371421622625, 33.619521849828544], "time": 2000, }); }); //面板相關 //************************************************************************************/ var panel = new THING.widget.Panel({ closeIcon: false, dragable: false, retractable: true, opacity: 0.9, hasTitle: true, }); panel.width = 600; panel.position = [0, 200]; var dataObj = { iframe: "/uploads/wechat/S2Vyd2lu/file/平面圖導航/ifram.html" }; var iframe = panel.addIframe(dataObj, "iframe").caption("").setHeight("290px"); //事件相關 //************************************************************************************/ var currentModule = null; //點擊事件 function onClick(targetObj, viewPoint) { currentModule = app.query(targetObj)[0]; currentModule.position = [0, 0, 0]; currentModule.style.opacity = 1; app.camera.flyTo({ "object": app.query(viewPoint)[0], "offset": [0, 13, 7], "time": 1000, complete: function () { currentModule.brothers.style.opacity = 0.3; } }); } //返回事件 function initViewPoint() { currentModule.brothers.style.opacity = 1; currentModule = null; app.camera.flyTo({ "position": [36.357131498969785, 61.953024217074265, 69.12160670337104], "target": [-1.3316924326803257, -4.9370371421622625, 33.619521849828544], "time": 1000, }); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100732.html
摘要:前言基于架構的可視化平臺平面圖導航一中已經完成了面板與我們的場景的簡單交互,下面我們繼續完善并給頁加上鼠標懸停事件讓頁的標簽和我們場景中的一起動起來。 前言 基于WebGL架構的3D可視化平臺—平面圖導航(一)中已經完成了iframe面板與我們的3D場景的簡單交互,下面我們繼續完善并給iframe頁加上鼠標懸停事件讓iframe頁的img標簽和我們場景中的obj一起動起來。 實現 第一...
摘要:數據驅動的三維圖形可視化在信息暴漲的年間,冷暴力的扁平化確實有效降低用戶的信息焦慮感,使有限的精力更高效處理過多的信息流。 數據驅動的三維圖形可視化 在信息暴漲的2010-2016年間,冷暴力的扁平化確實有效降低用戶的信息焦慮感,使有限的精力更高效處理過多的信息流。二維平面化扁平化在蘋果等大頭引領下,成為大眾用戶機器交流默認的語言。然后,隨著PC、平板、手機、智能家居等用戶持有終端的性...
摘要:次時代傳統的方式就是創建次時代模型,對應中的材質是高光網格材質對象,通常貼圖文件包含顏色貼圖法線貼圖和高光貼圖。 產品在線展示案例預覽 玉鐲在線預覽:http://www.yanhuangxueyuan.co... 汽車在線預覽:http://www.yanhuangxueyuan.co... Web3D技術歷史 可通過插件或WebGL技術實現Web3D,在線網頁上預覽操作三維...
摘要:隨著信息化技術發展,全國各地開始智慧糧倉的建設,我們可以通過一個視頻看一下使用可視化平臺做的可視應用,可視一體化,讓糧倉智慧升級。構建糧倉內糧情的監控預警診斷分析一體化的可視化平臺。 首先我們先了解一下基于WebGL架構的3D可視化平臺——ThingJS是什么? ThingJS是優锘科技開發的一套面向物聯網應用的在線3D可視化應用開發及運營PaaS平臺,以 ThingJS云視PaaS服...
閱讀 3172·2021-09-22 15:05
閱讀 2748·2019-08-30 15:56
閱讀 1054·2019-08-29 17:09
閱讀 792·2019-08-29 15:12
閱讀 2076·2019-08-26 11:55
閱讀 3037·2019-08-26 11:52
閱讀 3370·2019-08-26 10:29
閱讀 1374·2019-08-23 17:19