一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于H5和3D WebVR 的可視化虛擬現(xiàn)實(shí)培訓(xùn)系統(tǒng)

圖撲-數(shù)字孿生 ? 來(lái)源:圖撲軟件 ? 作者:圖撲軟件 ? 2020-06-22 10:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

2019 年 VR, AR, XR, 5G, 工業(yè)互聯(lián)網(wǎng)等名詞頻繁出現(xiàn)在我們的視野中,信息的分享與虛實(shí)的結(jié)合已經(jīng)成為大勢(shì)所趨,5G 是新一代信息通信技術(shù)升級(jí)的重要方向,工業(yè)互聯(lián)網(wǎng)是制造業(yè)轉(zhuǎn)型升級(jí)的發(fā)展趨勢(shì)。

本文所講的 VR 是機(jī)械制造業(yè)與設(shè)備的又一次交流,當(dāng)技術(shù)新星遇上制造潮流,無(wú)疑將成為制造業(yè),工控業(yè)等行業(yè)數(shù)字化轉(zhuǎn)型的重要驅(qū)動(dòng)力?!?G + VR + 工業(yè)互聯(lián)網(wǎng)”必將成為新的一年不變的話題,如何將當(dāng)前工業(yè)中遇到的問(wèn)題通過(guò)虛擬現(xiàn)實(shí)結(jié)合起來(lái),讓我們可以更好的去交流,去感受技術(shù)帶給我們的變化。

在今年蘋(píng)果的發(fā)布會(huì)上,相信大家都知道蘋(píng)果的 5G 手機(jī)沒(méi)有問(wèn)世,說(shuō)明 5G 的應(yīng)用和發(fā)展還處在快速發(fā)展的階段,但是手機(jī)結(jié)合 AR 功能的 APP 已經(jīng)早就問(wèn)世,5G 的速度加上 AR, VR 的身臨其境,讓我們感受到的不僅僅是技術(shù)的革新,更是讓我們感受到技術(shù)在不同領(lǐng)域的實(shí)際應(yīng)用場(chǎng)景,我相信 2020 年新的一年必定是 “5G + VR + 工業(yè)互聯(lián)網(wǎng)” 應(yīng)用的又一個(gè)新的開(kāi)始,本文接下來(lái)所講的就是 HT for Web 結(jié)合 WebVR 開(kāi)發(fā)的具體應(yīng)用案例。

系統(tǒng)預(yù)覽

VR 拆解還原

VR 操作

VR 場(chǎng)景切換

PC 端拆解還原

PC 端考試

系統(tǒng)介紹

該系統(tǒng)共分為三個(gè)實(shí)際應(yīng)用層面:

  • 三維培訓(xùn):用戶通過(guò) mb 端手指觸摸或者 pc 端鼠標(biāo)拖拽可以將設(shè)備拆解開(kāi)來(lái),之后可以通過(guò)一鍵還原來(lái)將設(shè)備還原到最初的狀態(tài),或者可以通過(guò)拆解 or 還原按鈕查看設(shè)備自動(dòng)拆解的過(guò)程以及拆解之后自動(dòng)還原的過(guò)程。

  • 考試系統(tǒng):這部分是考驗(yàn)?zāi)銓?duì)設(shè)備拆解的熟悉程度,在第一步的三維培訓(xùn)之后,可以在該系統(tǒng)中考核你對(duì)拆解過(guò)程的了解。

  • VR 模式:該部分便是三維場(chǎng)景結(jié)合 WebVR 的具體實(shí)現(xiàn)應(yīng)用,再進(jìn)入 VR 之后可以通過(guò)操作 VR 手柄,進(jìn)行設(shè)備的拆解還原。

文章主要講解第三部分的VR模式,讓我們了解如何結(jié)合HT來(lái)搭建VR場(chǎng)景。下面描述了VR中的主要操作,沒(méi)有進(jìn)入VR的時(shí)候不會(huì)出現(xiàn)如下所說(shuō)的六個(gè)按鈕操作,再點(diǎn)擊進(jìn)入WebVR時(shí),系統(tǒng)自動(dòng)顯示出VR場(chǎng)景里的六個(gè)操作按鈕,反之退出VR時(shí),系統(tǒng)也會(huì)自動(dòng)隱藏三維中的六個(gè)操作按鈕,VR中的主要操作如下:

  • 設(shè)備切換:顧名思義,可以通過(guò)手柄射線對(duì)準(zhǔn)場(chǎng)景中左側(cè)列表,按動(dòng)板機(jī)進(jìn)行場(chǎng)景設(shè)備切換。

  • 操作切換:VR 中對(duì)設(shè)備有如下兩種操作,可以通過(guò)右下角的模式按鈕點(diǎn)擊切換。

  • 平移模式:該模式下,用戶可以對(duì)準(zhǔn)設(shè)備并且按動(dòng)板機(jī)將設(shè)備從一個(gè)位置移動(dòng)到另一個(gè)位置,并且可以通過(guò)觸摸觸摸板來(lái)拉近和拉遠(yuǎn)設(shè)備零件。

  • 抓取模式:該模式下,用戶可以對(duì)準(zhǔn)設(shè)備并且按動(dòng)板機(jī)將設(shè)備抓取過(guò)來(lái),抓取過(guò)來(lái)之后,可以通過(guò)觸摸觸摸板來(lái)旋轉(zhuǎn)以及放大或者縮小零件。

  • 一鍵還原:將設(shè)備各部分零件還原到最初始的位置。

  • 拆解動(dòng)畫(huà):將設(shè)備的各部分零件通過(guò)之前預(yù)定好的位置按步驟一步一步拆解開(kāi)來(lái)。

  • 還原動(dòng)畫(huà):該操作可以理解為拆解動(dòng)畫(huà)的倒放,即將拆解的過(guò)程逆序還原。

  • 線框切換:HT 支持將設(shè)備節(jié)點(diǎn)的三角面表示出來(lái),可以具體的看到該設(shè)備的線框輪廓。

系統(tǒng)開(kāi)發(fā)

三維場(chǎng)景HT支持obj模型的導(dǎo)入,VR場(chǎng)景所出現(xiàn)的設(shè)備零件均為 obj 模型,由于需要在之后進(jìn)行設(shè)備的拆解,所以建模的時(shí)候需要分別對(duì)設(shè)備的各部分零件進(jìn)行建模,而不是對(duì)設(shè)備整體進(jìn)行建模,如果對(duì)設(shè)備整體建模那么在 HT 的場(chǎng)景中就是一個(gè)Data節(jié)點(diǎn),從而不能對(duì)零件進(jìn)行拆解,如果拆解開(kāi)來(lái),那么在 HT 中可以加載多個(gè) obj 則就有多個(gè) Data 節(jié)點(diǎn),有多個(gè)零件的 Data 節(jié)點(diǎn)之后就可以對(duì)設(shè)備零件進(jìn)行移動(dòng)或者其它旋轉(zhuǎn)操作,具體的 Data 在 HT 的含義可以參考HT for Web 數(shù)據(jù)模型手冊(cè)

如下為導(dǎo)入場(chǎng)景中的obj模型:

從上圖可以看出我們導(dǎo)入obj之后零件之間是分散的,所以需要對(duì)零件的初始位置進(jìn)行調(diào)整,從而調(diào)整出一個(gè)由許多零件構(gòu)成的完整設(shè)備,當(dāng)然調(diào)整不可能通過(guò)代碼來(lái)調(diào)整,對(duì)應(yīng)的有三維編輯器可以調(diào)整,進(jìn)行拖拖拽拽將不同零件拼湊起來(lái),如下為組合之后的設(shè)備整體:

VR 搭建VR場(chǎng)景的搭建是在第一步的基礎(chǔ)上進(jìn)行搭建,上面所說(shuō)的只在 VR 場(chǎng)景中顯示的按鈕也是在場(chǎng)景中進(jìn)行搭建,在正常的場(chǎng)景時(shí)候我們可以隱藏掉對(duì)應(yīng)的節(jié)點(diǎn),node.s('3d.visible', false)上面的代碼就是 HT 中在三維下面隱藏三維節(jié)點(diǎn)的代碼,因?yàn)檫M(jìn)入 VR 和離開(kāi) VR 的時(shí)候,HT 內(nèi)部會(huì)派發(fā)出對(duì)應(yīng)的狀態(tài)告訴用戶此時(shí)已經(jīng)進(jìn)入 VR 或者此時(shí)已經(jīng)離開(kāi) VR,相應(yīng)偽代碼如下:

 1 // graph3dView  HT 中的三維場(chǎng)景視圖容器
2 // vr 獲取掛載在 graph3dView 上的 vr 對(duì)象
3 var vr = graph3dView.vr;
4 vr.mp(function(e) {
5   // property 對(duì)應(yīng)的 vr 事件類型,detail 此時(shí)事件的狀態(tài)
6   var property = e.property;
7   var detail = e.newValue;
8   // present 代表此時(shí)進(jìn)入或者離開(kāi) VR 場(chǎng)景
9   if (property === 'present') {
10     // 此時(shí) detail  true 表示進(jìn)入 vr,false 表示離開(kāi) vr
11     if (detail) {
12       // 執(zhí)行顯示 vr 場(chǎng)景中需要顯示的節(jié)點(diǎn)操作
13     } else {
14       // 執(zhí)行隱藏 vr 場(chǎng)景中需要隱藏的節(jié)點(diǎn)操作
15     }
16   }
17 });

上面 property 在HT總共會(huì)派發(fā)出以下幾種類型,主要是包括VR的狀態(tài)和手柄的操作類型:

  • enable:vr 的 enable 信息發(fā)生變化

  • present:vr 的 present 信息發(fā)生變化,表明進(jìn)出 vr 世界

  • gamepad.pose:手柄位置或旋轉(zhuǎn)發(fā)生變動(dòng),參數(shù) id,position,rotation

  • gamepad.axes:手柄中間的轉(zhuǎn)盤(pán)觸摸點(diǎn)位變動(dòng),參數(shù) id,axes;其中 axes 格式形如:[ 0.2, 0.7 ],分辨表示橫縱百分比

  • gamepad.button.thumbpad:thumbpad 按鍵被按下,參數(shù) id,state,其中 state 包含 down 跟 up 兩種

  • gamepad.button.trigger:trigger 按鍵被按下,參數(shù) id,state,其中 state 包含 down 跟 up 兩種

  • gamepad.button.grips:grips 按鍵被按下,參數(shù) id,state,其中 state 包含 down 跟 up 兩種

  • gamepad.button.menu:menu 按鍵被按下,參數(shù) id,state,其中 state 包含 down 跟 up 兩種

VR 中有一個(gè)關(guān)鍵的配置就是比例尺,因?yàn)?VR 里面的單位是和現(xiàn)實(shí)中的長(zhǎng)度單位是一致的,我們戴著頭盔往前走 1m 那么對(duì)應(yīng)在 HT 三維場(chǎng)景中需要往前走多遠(yuǎn)這需要一個(gè)對(duì)應(yīng)關(guān)系,HT 提供的 VR 插件中會(huì)提供一個(gè)measureOflength的配置項(xiàng),如下:

1 var vr_config = {
2   measureOflength: 0.01,
3 }

上面 0.01 代表的意思就是 HT 場(chǎng)景中的單位長(zhǎng)度 1 代表現(xiàn)實(shí)場(chǎng)景的 0.01 米,所以如果此時(shí)現(xiàn)實(shí)場(chǎng)景你戴著頭盔往前移動(dòng) 1m,那么 HT 中對(duì)應(yīng)的視角會(huì)往前移動(dòng) 100 個(gè)單位,所以如果需要搭建 VR 場(chǎng)景要注意場(chǎng)景的模型建模比例和現(xiàn)實(shí)世界是相差多少,按照統(tǒng)一的比例來(lái)建模,不然在 VR 場(chǎng)景中會(huì)出現(xiàn)設(shè)備大小不一的問(wèn)題,導(dǎo)致出現(xiàn)錯(cuò)覺(jué),如下對(duì)比圖,左側(cè)是 0.01 的比例,射線的小點(diǎn)很小,右側(cè)是是 0.001 的比例導(dǎo)致射線的小點(diǎn)變大。

HT中已經(jīng)對(duì)瀏覽器提供的WebVR相關(guān)接口的 API 進(jìn)行了封裝,包括獲取設(shè)備navigator.getVRDisplays()這是進(jìn)入 VR 世界的第一步,如果此時(shí)執(zhí)行此代碼返回的結(jié)果為空代表獲取 VR 設(shè)備失敗,那么之后更不用說(shuō)了,以及獲取手柄信息navigator.getGamepads(),用戶可以通過(guò)在瀏覽器控制臺(tái)敲入上面兩行代碼,查看瀏覽器是否已經(jīng)獲取到了 VR 設(shè)備信息和 VR 手柄信息,如果返回為空則說(shuō)明獲取失敗。HT 只要通過(guò)執(zhí)行graph3dView.vr.enable = true就可以開(kāi)啟VR,當(dāng)然用戶不用執(zhí)行該代碼,HT 提供的VR 插件也會(huì)提供對(duì)應(yīng)的配置項(xiàng)vrEnable: true來(lái)代表開(kāi)啟 VR,對(duì)應(yīng)的配置也掛在在上面的vr_config對(duì)象內(nèi),如下:

1 var vr_config = {
2   measureOflength: 0.01,
3   vrEnable: true, // 代表開(kāi)啟 VR
4 }

在該展示的系統(tǒng)中有直接在VR 中切換場(chǎng)景的功能,由于每個(gè)場(chǎng)景的vr_config中的配置項(xiàng)值可能會(huì)有差別,例如第一個(gè)場(chǎng)景的measureOflength比例尺的大小為 0.01,可能第二個(gè)場(chǎng)景的比例尺大小measureOflength就變成了 0.02,所以 VR 插件提供一個(gè)銷毀的功能,用來(lái)銷毀上一個(gè)場(chǎng)景的資源,銷毀場(chǎng)景的資源包括清空上一個(gè)場(chǎng)景的所有節(jié)點(diǎn),所以在加載新的場(chǎng)景時(shí),不需要再執(zhí)行清空?qǐng)鼍肮?jié)點(diǎn)的操作,即不需要執(zhí)行 dataModel.clear(),因?yàn)?VR 提供的銷毀功能已經(jīng)都清空了,手柄和射線都是場(chǎng)景中的一個(gè) Data 節(jié)點(diǎn),所以在新的場(chǎng)景不需要額外的清除手柄和射線這兩個(gè)節(jié)點(diǎn),故插件幫你管理場(chǎng)景的節(jié)點(diǎn)。調(diào)用銷毀功能之后,可以調(diào)用graph3dView的序列化函數(shù)graph3dView.deserialize('場(chǎng)景資源json地址')來(lái)序列化新的場(chǎng)景 json 文件,在序列化完成的回調(diào)函數(shù)中,可以根據(jù)新的場(chǎng)景修改此時(shí)vr_config的值,然后再次調(diào)用
graph3dView.initVRForScene()來(lái)再次初始化VR場(chǎng)景。相關(guān)的步驟偽代碼如下:

 1 // window.GVR 是在調(diào)用 graph3dView.initVRForScene() 之后初始化的一個(gè)全局 VR 插件變量 用于用戶獲取插件對(duì)象
2 window.GVR.destory();
3 // 執(zhí)行新的場(chǎng)景序列化操作
4 graph3dView.deserialize('場(chǎng)景資源json地址',
5 function(json, dm, g3d, datas) {
6   // 修改新的場(chǎng)景比例尺為 0.02
7   window.vr_config.measureOflength = 0.02;
8   // 修改新的 VR 場(chǎng)景初始化視角
9   window.vr_config.vrEye = ht.Default.clone(g3d.getEye());;
10   // 再次初始化 VR 場(chǎng)景
11   graph3dView.initVRForScene()
12 });

當(dāng)然 HT 提供的 VR 插件還有很多的配置項(xiàng),方便用戶更好的調(diào)整 VR 場(chǎng)景,包括刷地形,場(chǎng)景移動(dòng)方式,場(chǎng)景操作方式都可以通過(guò)配置進(jìn)行配置,利用 HT 進(jìn)行 VR 搭建主要流程如下流程圖所示:

通過(guò)上面的流程圖,我們大體可以了解配合 HT 提供的 VR 插件如何進(jìn)行快速的搭建 VR 場(chǎng)景。

目前谷歌瀏覽器和火狐瀏覽器都很友好的支持 VR,可以通過(guò)火狐官網(wǎng)提供的WebVR Demo在線感受下官方提供的 VR 場(chǎng)景。

拆解規(guī)則從文章前面的部分效果圖可以看到我們每個(gè)場(chǎng)景的設(shè)備都有拆解,并且每個(gè)設(shè)備的零件數(shù)量,零件位置,零件拆解的方向,偏移的長(zhǎng)短都是不一致的,所以不可能通過(guò)代碼來(lái)將上面的偏移長(zhǎng)短,偏移方向?qū)懰溃枰贫ㄒ惶撞鸾庖?guī)則來(lái)幫助我們可以更方便制作每個(gè)場(chǎng)景的拆解動(dòng)畫(huà),這樣只需要設(shè)計(jì)師根據(jù)與程序約定好的拆解規(guī)則進(jìn)行配置就可以配置出不同場(chǎng)景不同設(shè)備的拆解動(dòng)畫(huà)。該系統(tǒng)的拆解分為兩種情況:

  • 單體移動(dòng):單個(gè)設(shè)備零件沿著父節(jié)點(diǎn)位置和該節(jié)點(diǎn)位置的連接線方向移動(dòng)

  • 組合移動(dòng):多個(gè)設(shè)備零件的組合沿著某個(gè)方向移動(dòng),組合移動(dòng)之后,設(shè)備零件可以在組合移動(dòng)之后的位置進(jìn)行再沿著某個(gè)方向進(jìn)行移動(dòng),可以無(wú)限進(jìn)行嵌套,即組合之后還可以組合移動(dòng),或者單體移動(dòng)

單體移動(dòng)示意圖如下:

組合移動(dòng)示意圖如下:

在 HT 中可以通過(guò)data.setDisplayName('名稱')來(lái)給節(jié)點(diǎn)設(shè)置名稱,這里約定通過(guò)不同設(shè)備的名稱,來(lái)獲取到不同設(shè)備的偏移信息,例如data.setDisplayName('1-0.5-1000')該名稱就是和設(shè)計(jì)師約定好的配置規(guī)則,1代表拆解步驟的第一步執(zhí)行,當(dāng)然場(chǎng)景中可以有多個(gè) 1,即第一步同時(shí)拆解這些零件0.5代表朝著父節(jié)點(diǎn)的方向偏移自己位置和父節(jié)點(diǎn)位置連接線長(zhǎng)度的50%1000代表偏移的過(guò)程持續(xù)1000毫秒,當(dāng)然之后可以約定旋轉(zhuǎn)以及旋轉(zhuǎn)的角度等信息。設(shè)計(jì)師知道這些配置規(guī)則之后便可以通過(guò)可視化編輯器進(jìn)行不同零件的配置,這樣程序方面只需要寫(xiě)一套通用的邏輯就可以對(duì)不同的設(shè)備進(jìn)行拆解和還原。

系統(tǒng)中維護(hù)了一個(gè)隊(duì)列和一個(gè),隊(duì)列用來(lái)記錄拆解順序,用來(lái)記錄還原順序。拆解的過(guò)程通過(guò)配置的序號(hào),按順序推進(jìn)隊(duì)列,采用隊(duì)列的數(shù)據(jù)結(jié)構(gòu)便是因?yàn)殛?duì)列先進(jìn)先出的特點(diǎn),第一個(gè)壓入隊(duì)列的零件則第一個(gè)執(zhí)行,最后壓入隊(duì)列的零件最后一個(gè)執(zhí)行拆解順序。拆解出隊(duì)列的零件則同時(shí)壓入棧,采用記錄還原順序是因?yàn)?span style="font-weight:700;margin:0px;padding:0px;border:0px;">先進(jìn)后出的特點(diǎn),即第一個(gè)執(zhí)行完拆解的零件,在還原的時(shí)候卻是最后一個(gè)執(zhí)行還原的動(dòng)作。所以上述采用的不同數(shù)據(jù)結(jié)構(gòu)便是為了更好的記錄數(shù)據(jù)。以下為相關(guān) js 偽代碼:

 1 // 記錄拆解順序
2 const queue = [];
3 // 記錄還原順序
4 const stack = [];
5 // each 循環(huán)中用來(lái)記錄拆解隊(duì)列 queue 順序
6 dataModel.each((node) = >{
7   const displayName = node.getDisplayName();
8   if (displayName) {
9     const[index, distancePer, during] = displayName.split('-');
10     if (index !== void 0) {
11       if (queue[index]) {
12         if (queue[index] instanceof Array) {
13           queue[index].push(node);
14         } else {
15           const tempNode = queue[index];
16           queue[index] = [tempNode, node];
17         }
18       } else {
19         queue[index] = node;
20       }
21     }
22   }
23 });

相關(guān)邏輯如下流程圖:

通過(guò)上面的約定,設(shè)計(jì)師可以使用可視化編輯器來(lái)配置不同零件的移動(dòng)規(guī)則,大大提高了動(dòng)畫(huà)的制作效率。

代碼分析

該部分主要對(duì)拆解還原動(dòng)畫(huà)的代碼進(jìn)行分析,主要采用向量和部分三角函數(shù)的概念來(lái)計(jì)算不同零件在三維空間的位置,初始的時(shí)候需要記錄下每個(gè)零件在前面所有組合移動(dòng)之后的初始移動(dòng)位置向量,以及零件沒(méi)有組合移動(dòng)之前的初始位置向量,獲取這兩個(gè)位置向量目的是一是為了零件拆解在前面所說(shuō)組合之后移動(dòng),和零件在拆解之后恢復(fù)到一整個(gè)設(shè)備形態(tài)的初始位置,兩個(gè)位置向量都有重要的作用,以下為相關(guān)偽代碼:

 1 // Vector3 為 HT 封裝的三維向量
2 const Vector3 = ht.Math.Vector3;
3 // 記錄第一個(gè)重要位置向量
4 node.a('relativeP3Vec', new Vector3(node.p3()));
5 // node 當(dāng)前零件節(jié)點(diǎn)
6 // moveQueue 為移動(dòng)順序在 node 之前的,并且為 node 節(jié)點(diǎn)的祖先節(jié)點(diǎn)
7 for (let i = 0, l = moveQueue.length; i < l; i++) {
8   const moveNode = moveQueue[i],
9   parentMoveNode = moveNode.getParent();
10   if (parentMoveNode) {
11     const[, distancePer] = moveNode.getDisplayName().split('-');
12     moveNode.a('defP3', moveNode.p3()) moveNode.p3(new Vector3().lerpVectors(new Vector3(moveNode.p3()), new Vector3(parentMoveNode.p3()), distancePer).toArray());
13   }
14 }
15 // 記錄組合節(jié)點(diǎn)移動(dòng)之后的第二個(gè)重要相對(duì)位置向量
16 node.a('relativeP3Vec', new Vector3(node.p3()));
17 // 逆序還原組合的父節(jié)點(diǎn)位置
18 for (let i = moveQueue.length - 1; i >= 0; i--) {
19   const moveNode = moveQueue[i];
20   moveNode.p3(moveNode.a('defP3'));
21   moveNode.a('defP3', undefined);
22 }

由于在場(chǎng)景拆解過(guò)程中需要設(shè)置設(shè)備零件節(jié)點(diǎn)不可選擇,所以需要記錄下不可選擇之前的零件是否可選擇狀態(tài),用來(lái)恢復(fù)節(jié)點(diǎn)初始狀態(tài),相關(guān)偽代碼如下:

1 dm3d.each((node) = >{
2   node.a('defSelectable', node.s('3d.selectable'));
3 });

文中所示的線框效果為 HT 核心包支持的線框模式,可以通過(guò)如下代碼進(jìn)行配置:

dm3d.each((data) = >{
  if (data.s('shape3d') && data.s('shape3d').startsWith('models/')) {
    data.s({
      'shape3d.transparent': true,
      'shape3d.opacity': 0, // 目的為隱藏原本的模型
      'wf.geometry': true, // 開(kāi)啟線框模式
      'wf.combineTriangle': 2, // 線框三角面合并類型
      'wf.color': 'rgba(96,172,252,0.3)' // 線框顏色
    });
  }
});

上述wf.combineTriangle主要包括

  • false,0:不合并三角形

  • true,1:合并相鄰三角為四邊面,原來(lái)的效果

  • 2:融合所有聯(lián)通的共面三角面

  • 3:根據(jù)法線信息融合所有平滑三角面

VR 軟件以及硬件安裝

本系統(tǒng)采用的VR硬件設(shè)備為HTC VIVE接下來(lái)講的是安裝 HTC VIVE的過(guò)程和步驟。

第一步:撮合 HTC VIVE 和電腦主機(jī)

HTC官網(wǎng)找到連接指南,然后按照步驟安裝即可,我們只需看以下截圖部分的目錄即可。

第二步:下載軟件

Steam官網(wǎng)下載 Steam,下載完 Steam 可以在 Steam 中下載 Stream VR。

第三步:打開(kāi) Stream VR 檢查設(shè)備狀態(tài)

打開(kāi) Stream VR,會(huì)出現(xiàn)以下畫(huà)面,這是用來(lái)表示 HTC VIVE 頭顯的工作狀態(tài)的,通過(guò)圖標(biāo)我們即可查看頭顯、手柄控制器和定位器等配件的工作情況。

第四步:選擇房間設(shè)置模式

如果您的房間位置比較大可以選擇第一項(xiàng),我選擇的模式為第二項(xiàng),站立模式。建議選擇一種房間規(guī)模,可以完整的進(jìn)行設(shè)置。

第五步:將頭盔、兩個(gè)手柄控制器放置在兩個(gè)定位器可視范圍內(nèi),建立定位

第六步:校準(zhǔn)頭盔中心點(diǎn)

該部位設(shè)置頭盔默認(rèn)的朝向。

第七步:定位地面

將兩個(gè)手柄控制器放置在定位器可視范圍內(nèi),然后點(diǎn)擊電腦屏幕上的按鈕“校準(zhǔn)地面”,等待系統(tǒng)校準(zhǔn)

第八步:進(jìn)入 Steam VR 自帶房間進(jìn)行測(cè)試

設(shè)置完畢之后可以進(jìn)入 Steam VR 自帶的房間進(jìn)行體驗(yàn)。

總結(jié)當(dāng)人們談起5G時(shí)代的新應(yīng)用,VR、AR是一大熱門(mén)話題。4G 時(shí)代移動(dòng)網(wǎng)絡(luò)已經(jīng)足以承載起高清視頻,那么 5G 時(shí)代理所當(dāng)然就能傳輸數(shù)據(jù)量更大的沉浸式 VR、AR 影像。因此,不少人將 5G 視為 VR、AR 崛起的踏板,隨時(shí)隨地身臨天涯海角,似乎并非是遙不可及的夢(mèng)。當(dāng)前 4G 網(wǎng)絡(luò)應(yīng)用在 VR/AR 上會(huì)帶來(lái)大約 70ms 的實(shí)驗(yàn),這個(gè)實(shí)驗(yàn)會(huì)導(dǎo)致體驗(yàn)者存在眩暈感,而 5G 數(shù)據(jù)傳輸?shù)难舆t可達(dá)到毫秒級(jí),可以有效解決數(shù)據(jù)時(shí)延帶來(lái)的眩暈感,有助于 VR/AR 的大規(guī)模應(yīng)用。目前隨著 5G 網(wǎng)絡(luò)的逐漸普及,VR/AR 產(chǎn)業(yè)正逐步走向復(fù)蘇,市場(chǎng)熱情在逐漸升溫,虛擬現(xiàn)實(shí)游戲、虛擬現(xiàn)實(shí)現(xiàn)場(chǎng)直播等都是 5G 在 VR/AR 上的具體應(yīng)用。在科技進(jìn)步的今天,安全也是一個(gè)重要的話題,VR 結(jié)合仿真的應(yīng)用也是大勢(shì)所趨,仿真可以讓用戶真實(shí)切身感受,例如消防預(yù)警管道預(yù)警,可以讓用戶在 VR 世界中體驗(yàn)消防滅火等消防員的操作,讓用戶沉浸在 VR 世界中感受到火災(zāi)來(lái)臨時(shí)怎么進(jìn)行實(shí)際操作。所以 VR 帶來(lái)的應(yīng)用遠(yuǎn)遠(yuǎn)不止仿真,模擬等體驗(yàn),更多帶來(lái)的是能為人們提供真實(shí)的實(shí)際作用,而不是噱頭。

程序手機(jī)端運(yùn)行截圖:

2019 我們也更新了數(shù)百個(gè)工業(yè)互聯(lián)網(wǎng) 2D/3D 可視化案例集,在這里你能發(fā)現(xiàn)許多新奇的實(shí)例,也能發(fā)掘出不一樣的工業(yè)互聯(lián)網(wǎng):《分享數(shù)百個(gè) HT 工業(yè)互聯(lián)網(wǎng) 2D 3D 可視化應(yīng)用案例》,更多行業(yè)應(yīng)用實(shí)例可以點(diǎn)擊下方查看更多官網(wǎng)案例~

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 3D
    3D
    +關(guān)注

    關(guān)注

    9

    文章

    2959

    瀏覽量

    110798
  • Ar
    Ar
    +關(guān)注

    關(guān)注

    25

    文章

    5156

    瀏覽量

    172712
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2931

    文章

    46251

    瀏覽量

    392709
  • 人工智能
    +關(guān)注

    關(guān)注

    1807

    文章

    49029

    瀏覽量

    249608
  • vr
    vr
    +關(guān)注

    關(guān)注

    34

    文章

    9675

    瀏覽量

    152728
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于 HT 的 3D 可視化智慧礦山開(kāi)發(fā)實(shí)現(xiàn)

    圖撲軟件 Hightopo 作為基于 HTML5 標(biāo)準(zhǔn)的 2D/3D 圖形渲染引擎,為 Web 端礦山可視化提供了輕量化、高性能的技術(shù)支撐。其核心價(jià)值在于通過(guò)自主研發(fā)的渲染技術(shù),實(shí)現(xiàn)瀏
    的頭像 發(fā)表于 07-18 15:49 ?128次閱讀
    基于 HT 的 <b class='flag-5'>3D</b> <b class='flag-5'>可視化</b>智慧礦山開(kāi)發(fā)實(shí)現(xiàn)

    VirtualLab Fusion應(yīng)用:3D系統(tǒng)可視化

    描述和F-Theta透鏡的應(yīng)用示例。 光學(xué)系統(tǒng)3D-可視化 VirtualLab Fusion提供的工具可以實(shí)現(xiàn)光學(xué)系統(tǒng)3D
    發(fā)表于 04-30 08:47

    VirtualLab Fusion應(yīng)用:光學(xué)系統(tǒng)3D可視化

    3D 系統(tǒng)視圖: 無(wú)光可視化系統(tǒng) 選項(xiàng) - 選擇要顯示的元件 右鍵單擊文檔窗口,菜單上將顯示詳細(xì)選項(xiàng)。第一個(gè)選項(xiàng) \"Select Elements to Show\"允許對(duì)文
    發(fā)表于 04-02 08:42

    基于 HT 2D&amp;3D 渲染引擎的新能源充電樁可視化運(yùn)營(yíng)系統(tǒng)技術(shù)剖析

    和 Canvas 技術(shù)。WebGL 作為一種在網(wǎng)頁(yè)上實(shí)現(xiàn)硬件加速圖形渲染的技術(shù),讓 HT 無(wú)需借助額外插件,就能在瀏覽器中高效繪制復(fù)雜的 2D3D 圖形。這一特性為充電樁可視化運(yùn)營(yíng)系統(tǒng)
    的頭像 發(fā)表于 03-20 11:47 ?379次閱讀
    基于 HT 2<b class='flag-5'>D</b>&amp;<b class='flag-5'>3D</b> 渲染引擎的新能源充電樁<b class='flag-5'>可視化</b>運(yùn)營(yíng)<b class='flag-5'>系統(tǒng)</b>技術(shù)剖析

    VirtualLab Fusion中的可視化設(shè)置

    通過(guò)以下控件進(jìn)行重置、加載和保存: 主窗口設(shè)置 字體配置 數(shù)字顯示 文檔窗口設(shè)置 1D數(shù)據(jù)數(shù)組可視化設(shè)置 顏色表 諧波場(chǎng)視圖
    發(fā)表于 02-25 08:51

    VirtualLab Fusion應(yīng)用:光波導(dǎo)k域布局可視化(“神奇的圓環(huán)”)

    特定光波導(dǎo)布局的光導(dǎo)和耦合條件。 概念 方向轉(zhuǎn)換器計(jì)算器 可以通過(guò)“開(kāi)始”>“計(jì)算器”找到方向轉(zhuǎn)換器計(jì)算器,這有助于演示指定角度的不同方式。 k域可視化 k域可視化:平面波的傳播
    發(fā)表于 02-21 08:53

    光學(xué)系統(tǒng)3D可視化

    視圖 3D 系統(tǒng)視圖: 無(wú)光可視化系統(tǒng) 選項(xiàng) - 選擇要顯示的元件 右鍵單擊文檔窗口,菜單上將顯示詳細(xì)選項(xiàng)。第一個(gè)選項(xiàng) \"Select Elements to Show\&quo
    發(fā)表于 01-06 08:53

    如何找到適合的大屏數(shù)據(jù)可視化系統(tǒng)

    選擇合適的大屏數(shù)據(jù)可視化系統(tǒng)是企業(yè)或組織在數(shù)字轉(zhuǎn)型過(guò)程中至關(guān)重要的一步。一個(gè)優(yōu)秀的大屏數(shù)據(jù)可視化系統(tǒng)能夠?qū)崟r(shí)呈現(xiàn)關(guān)鍵業(yè)務(wù)數(shù)據(jù),提升決策效率
    的頭像 發(fā)表于 12-13 15:47 ?493次閱讀

    ar與虛擬現(xiàn)實(shí)的區(qū)別 如何優(yōu)化ar應(yīng)用的用戶界面

    AR與虛擬現(xiàn)實(shí)的區(qū)別 增強(qiáng)現(xiàn)實(shí)(AR)和虛擬現(xiàn)實(shí)(VR)是兩種不同的技術(shù),它們?cè)隗w驗(yàn)和應(yīng)用上有著明顯的區(qū)別。 1. 定義和體驗(yàn) 增強(qiáng)現(xiàn)實(shí)(AR) :增強(qiáng)
    的頭像 發(fā)表于 11-11 10:05 ?1355次閱讀

    三維可視化技術(shù)的應(yīng)用現(xiàn)狀和發(fā)展前景

    工程項(xiàng)目的效率與質(zhì)量。 醫(yī)學(xué)影像 醫(yī)學(xué)領(lǐng)域利用三維可視化技術(shù)進(jìn)行醫(yī)學(xué)影像診斷、手術(shù)規(guī)劃和教育培訓(xùn)。醫(yī)生可以利用三維重建圖像來(lái)更好地了解患者病情,規(guī)劃手術(shù)路徑,甚至進(jìn)行虛擬手術(shù)模擬,提升治療效果與安全性。
    的頭像 發(fā)表于 09-30 17:57 ?789次閱讀

    發(fā)掘3D文件格式的無(wú)限潛力:打造沉浸式虛擬世界

    在當(dāng)今數(shù)字化時(shí)代,3D技術(shù)的應(yīng)用范圍日益廣泛,涵蓋電影后期制作、產(chǎn)品原型設(shè)計(jì)、虛擬現(xiàn)實(shí)(VR)、增強(qiáng)現(xiàn)實(shí)(AR)、游戲等眾多領(lǐng)域。而3D文件格式作為
    的頭像 發(fā)表于 09-26 18:14 ?1874次閱讀
    發(fā)掘<b class='flag-5'>3D</b>文件格式的無(wú)限潛力:打造沉浸式<b class='flag-5'>虛擬</b>世界

    基于線框模式搭建的智慧樓宇 3D 可視化解決方案

    3D可視化
    阿梨是蘋(píng)果
    發(fā)布于 :2024年08月01日 11:27:12

    數(shù)字孿生3D大屏可視化技術(shù)應(yīng)用優(yōu)勢(shì)

    數(shù)字孿生3D大屏可視化技術(shù)是一種融合虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)和大數(shù)據(jù)等技術(shù)的創(chuàng)新型可視化工具,為用戶提供了沉浸式的交互體驗(yàn),同時(shí)能夠在大屏幕上展示
    的頭像 發(fā)表于 07-31 15:05 ?982次閱讀

    開(kāi)關(guān)柜可視化操作是什么?

    開(kāi)關(guān)柜的可視化是指通過(guò)圖像、視頻或3D模型等形式將開(kāi)關(guān)柜內(nèi)部結(jié)構(gòu)和工作狀態(tài)直觀地展示出來(lái),這種技術(shù)在電力行業(yè)和工業(yè)自動(dòng)領(lǐng)域越來(lái)越受到重視
    的頭像 發(fā)表于 07-25 10:15 ?624次閱讀
    開(kāi)關(guān)柜<b class='flag-5'>可視化</b>操作是什么?