搜尋
首頁web前端js教程為何JavaScript也將征服VR世界

這篇文章本來應該在 2 個月前就出現了,但一直都沒有足夠的動力去寫。直到,我最近在玩知乎,也看到了一個類似的問題。加上這是一個無聊的小長假,就把這篇文章寫出來。

這篇文章分成四個部分:

  • 基礎:3D 世界與四元數

  • 一個Hello, World

  • 應用程式篇-進階範例

因為我只玩過公司的Oculus DK2,所以這裡是以DK2 為內容而展開的。

實際上,要用JavaScript 來用VR 程式是很簡單的一件事:

  1. 使用Node.js 來讀取Oculus 上的感測器的數據,將這些數據用WebSocket 協定來提供一個服務。

  2. 尋找一個 3D 遊戲引擎,如 Three.js 來創造一個 3D 世界。

  3. 讀取感測器的值將其表示在 3D 世界中。

這一點也可以用在混合應用上,你只需要有一個 CardBoard 即可。使用 Cordova 讀取手機感測器的數據,再透過這些數據來改變 WebView 的狀態——除了發熱會比較嚴重,應該沒有別的影響。

基礎:3D 世界與四元數

在我們所熟知的3D 遊戲裡,點的位置由三個座標決定的(x,y,z),如下圖所示:

這三個座標只能表示我們在這個世界的位置,而不能上下的看這個世界。

Oculus DK2 用的是 MPU (Motion Processing Unit)晶片是 MPU6500,是第二個整合性 6 軸運動處理組件(第一個是 MPU6050)。它可以數字輸出 6 軸或 9 軸的旋轉矩陣、四元數(quaternion)、歐拉角格式(Euler Angle forma)的融合演算資料。

這時候,我們就需要歐拉角以及四元數來表示物體在虛擬世界的狀態。 (PS:原諒我只能簡單地提一下)

歐拉角是一組用來描述剛體姿態的角度,歐拉提出,剛體在三維歐氏空間中的任意朝向可以由繞三個軸的轉動複合生成。通常情況下,三個軸是相互正交的。

其對應的三個角度又分別成為 roll(橫滾角),pitch(俯仰角)和 yaw(偏航角)。

而四元數則是:

四元數可以用來表示三維空間裡的旋轉。它常用的另外兩種表示方式(三維正交矩陣和歐拉角)是等價的。人們用四元數來表示旋轉要解決兩個問題,一是如何用四元數表示三維空間裡的點,二是如何用四元數表示三維空間的旋轉。

之前玩過的6050 出來大概就是這樣子的,如果你玩四軸飛行器的話,你也應該這樣玩過:

Copy/Paste 完上面的內容後,你可能沒有啥概念,還是舉個hello,world 的例子。

範例: 一個hello,world

讓我們在回到一開始說的那三步,我們將需要做三件事:

  1. 尋找一個Node 的Oculus 拓展-不過,這件事現在可以交給WebVR。

  2. 尋找一個 Web 的 3D 函式庫,及其對應的 Oculus 展示外掛程式。

  3. 讀取感測器數據,顯示到虛擬世界。

如下圖所示:

於是找至了對應的Node 函式庫有:Node-HMD,它可以讀取感測器的數據。

還有Three.js 和Oculus Effect 插件,可以顯示出下面的視圖:

這樣,我們DK2 Control 讀取感測器的數據,就可以到這個虛擬世界玩了~~。

更詳細的介紹可以見: http://www.php.cn/

進階應用: 火星漫遊車

上面的應用範例還是太簡單了,讓我們來看一個高級應用——這是我們在兩個月前做的另外一個Hackday Idea,這是另外一個“火星漫遊者”:

想像一下你想去看看火星,但是你又沒有錢去。而你可以租用這樣的一個機器人,然後你就可以在火星漫遊了。

因此,首先我們需要一個即時視訊通訊,這裡我們就用到了 WebRTC:

透過 WebRTC 我們就可以在電腦瀏覽器上實現即時通訊,再透過 Three.js 就可以將這個視訊轉為一個近似 3D 的視角。而捕捉這個影片即可以透過手機上的瀏覽器,也可以在手機上編寫對應的 Web 應用程式。

這裡有一個線上的Demo:http://www.php.cn/

架構大致如下圖:

這樣我們就解決了即時視訊這個問題,然後我們還需要去控制硬體:

  1. 用WebSocket 協定來提供Oculus 的上、下、左、右運動的資料

  2. 在手機上讀取這個感測器數據,並將這個數據透過BLE 傳送到小車上。

  3. 小車以透過指示來做對應的運動。

關於這部分內容的可以看我之前的那篇文章《我是如何 Hack 一個機器人的? 》

總結: All in JavaScript

與C坑坑(C++)相比,JavaScript 更適合建立原型-快速、直接、有效,畢竟 C++ 編譯需要時間的。運轉起來的效果也如預期的一樣,電腦風扇各種轉,不知道是不是 Mac 專有的。不過,我想這個效能問題是一直都有的。


以上是為何JavaScript也將征服VR世界的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
node.js流帶打字稿node.js流帶打字稿Apr 30, 2025 am 08:22 AM

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具