也非常有趣
開始您的發展冒險進入虛擬網絡,有三種潛在的方法可以做到這一點:> javascript,三分和觀看設備方向
> JavaScript,Trix.js和WebVR是一種實驗方法,目前最適合訪問VR耳機方向,例如Oculus Rift。它使用WebVR API提供對VR設備信息的訪問。
>>這些關鍵組件涉及以下JavaScript文件(您可以從上面的示例演示中獲取這些文件,並且還會在三個示例下載中找到它們):
three.min.js - 我們的三個.js框架
設備方向事件偵聽器具有兼容設備時提供alpha,beta和伽馬值。如果我們沒有任何alpha值,它不會改變我們的控件以使用設備方向,以便我們可以使用軌道控件。
如果確實具有此alpha值,則我們創建一個設備方向控制並為其提供我們的相機變量以控制。如果用戶點擊屏幕,我們還將其設置為將場景設置為全屏(我們不想在VR中盯著瀏覽器的地址欄)。<span>function setOrientationControls(e) { </span> <span>if (!e.alpha) { </span> <span>return; </span> <span>} </span> controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true); </span> controls<span>.connect(); </span> controls<span>.update(); </span> element<span>.addEventListener('click', fullscreen, false); </span> <span>window.removeEventListener('deviceorientation', setOrientationControls, true); </span><span>} </span><span>window.addEventListener('deviceorientation', setOrientationControls, true); </span> <span>function fullscreen() { </span> <span>if (container.requestFullscreen) { </span> container<span>.requestFullscreen(); </span> <span>} else if (container.msRequestFullscreen) { </span> container<span>.msRequestFullscreen(); </span> <span>} else if (container.mozRequestFullScreen) { </span> container<span>.mozRequestFullScreen(); </span> <span>} else if (container.webkitRequestFullscreen) { </span> container<span>.webkitRequestFullscreen(); </span> <span>} </span><span>}</span>
如果不存在該alpha值,並且我們無法訪問設備的設備方向事件,則該技術提供了一個控制,可以通過使用鼠標將相機拖動來移動相機。看起來很這樣:
為了使用立體聲效果,我們將其定義為So:
controls <span>= new THREE<span>.OrbitControls</span>(camera, element); </span>controls<span>.target.set( </span> camera<span>.position.x, </span> camera<span>.position.y, </span> camera<span>.position.z </span><span>); </span>controls<span>.noPan = true; </span>controls<span>.noZoom = true;</span>
然後在窗口的大小上,我們更新其大小:
這是設備方向樣式實現VR的工作方式的基礎知識。它對於使用Google紙板進行了精美而簡單的實現可能是有效的,但是在Oculus Rift上並沒有那麼有效。下一個方法對裂谷要好得多。
effect <span>= new THREE<span>.StereoEffect</span>(renderer);</span>
> 總體而言,WebVR API通過以下方式提供對VR設備信息的訪問
>我不會在這裡詳細介紹很多技術細節(我將在其未來的SitePoint文章中進行更詳細的詳細信息!),如果您有興趣查看更多信息,請查看WebVR編輯器的草案。我之所以不會詳細介紹的原因是,有一種實現API的方法。
實現WebVR API的上述易於使用的方法是使用Boris Smus的WebVR樣板。它提供了良好的基準功能,可以實現WebVR並優雅地降低不同設備的體驗。目前,這是我見過的最好的Web VR實現。<span>function setOrientationControls(e) { </span> <span>if (!e.alpha) { </span> <span>return; </span> <span>} </span> controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true); </span> controls<span>.connect(); </span> controls<span>.update(); </span> element<span>.addEventListener('click', fullscreen, false); </span> <span>window.removeEventListener('deviceorientation', setOrientationControls, true); </span><span>} </span><span>window.addEventListener('deviceorientation', setOrientationControls, true); </span> <span>function fullscreen() { </span> <span>if (container.requestFullscreen) { </span> container<span>.requestFullscreen(); </span> <span>} else if (container.msRequestFullscreen) { </span> container<span>.msRequestFullscreen(); </span> <span>} else if (container.mozRequestFullScreen) { </span> container<span>.mozRequestFullScreen(); </span> <span>} else if (container.webkitRequestFullscreen) { </span> container<span>.webkitRequestFullscreen(); </span> <span>} </span><span>}</span>
要開始使用此方法,請在GitHub上下載WebVR樣板。
>>您可以專注於編輯index.html並使用該設置中的所有文件,也可以從頭開始將特定的插件實現到自己的項目中。如果您想比較每個實現的差異,我將在VR中的Twitter流中可視化的Twitter流遷移,並從上面的three.js和Node示例遷移到VR中的WebVR驅動的Twitter流中。
要將此項目從頭開始,您要擁有的文件是: >
但是,我們在這種方法中不會通過這種效果呈現。相反,我們通過VR Manager渲染。
> VR Manager提供一個按鈕,如果用戶在兼容瀏覽器上,則可以輸入VR模式,或者如果瀏覽器無法使用VR,則可以將其輸入全屏(全屏是我們想要的移動設備)。 hidebutton參數說我們是否要隱藏該按鈕。我們絕對不想隱藏它!
在所有這些方面,您應該擁有一個工作的VR實現,該實現將根據設備轉化為各種格式。 > 這是我的Twitter示例的視圖在支持VR的瀏覽器上的樣子: 在Oculus Rift視圖中,當您單擊VR圖標時會出現: 這是智能手機上的視圖,設備方向仍然使我們能夠環顧場景,而我們沒有分屏屏幕。內容的良好響應視圖: 如果我們單擊移動設備上的VR圖標,我們將獲得Google Cardboard樣式設備的全屏視圖: >
>
> >如何使用JavaScript? 什麼是WebVR,它與Web上的VR有何關係? 我可以使用JavaScript以外的其他編程語言在網上構建VR? 🎜> JavaScript是包括VR在內的Web開發的主要語言。但是,您可以使用編譯為JavaScript的語言,例如TypeScript或CoffeeScript。此外,WebAssembly允許您在瀏覽器中以近距離速度以C等語言編寫代碼。 >如何使我的VR體驗可供沒有VR設備的用戶訪問? 您可以使用vr經驗來測試您的VR體驗VR耳機。如果您沒有耳機,則可以將WebVR仿真器擴展用於Chrome和Firefox。該工具模擬WebVR API並提供了VR場景的3D視圖。 您可以使用GLTF Exporter以三個js的形式以A框架可以讀取的格式導出3D模型。 GLTF(GL傳輸格式)是用於3D場景和型號的標准文件格式。 >一些挑戰包括在3D環境中處理用戶輸入,優化性能以及確保在不同的VR設備和瀏覽器上兼容。此外,創建現實的3D圖形和動畫可能很複雜。
實施它僅需要從設備方向方法進行一些調整。這是那些想嘗試此方法的人的概述:
VR控件非常易於設置。我們可以將一個新的VRControls對象分配給我們之前使用的控件變量。軌道控件和設備方向控制不應是必需的,因為現在的樣板現在應在沒有VR功能的情況下照顧瀏覽器。這意味著您的場景在Google紙板上也應該很好!
<span>function setOrientationControls(e) {
</span> <span>if (!e.alpha) {
</span> <span>return;
</span> <span>}
</span>
controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true);
</span> controls<span>.connect();
</span> controls<span>.update();
</span>
element<span>.addEventListener('click', fullscreen, false);
</span>
<span>window.removeEventListener('deviceorientation', setOrientationControls, true);
</span><span>}
</span><span>window.addEventListener('deviceorientation', setOrientationControls, true);
</span>
<span>function fullscreen() {
</span> <span>if (container.requestFullscreen) {
</span> container<span>.requestFullscreen();
</span> <span>} else if (container.msRequestFullscreen) {
</span> container<span>.msRequestFullscreen();
</span> <span>} else if (container.mozRequestFullScreen) {
</span> container<span>.mozRequestFullScreen();
</span> <span>} else if (container.webkitRequestFullscreen) {
</span> container<span>.webkitRequestFullscreen();
</span> <span>}
</span><span>}</span>
效果與立體表的實現非常相似。只需將該效果替換為我們的新vreffect:
>
controls <span>= new THREE<span>.OrbitControls</span>(camera, element);
</span>controls<span>.target.set(
</span> camera<span>.position.x,
</span> camera<span>.position.y,
</span> camera<span>.position.z
</span><span>);
</span>controls<span>.noPan = true;
</span>controls<span>.noZoom = true;</span>
effect <span>= new THREE<span>.StereoEffect</span>(renderer);</span>
effect<span>.setSize(width, height);</span>
> css和webvr
Mozilla的目標是在Firefox Nightly版本中為其瀏覽器帶來VR觀看功能,但是很早就!我的運氣並沒有太多運氣,可以在我的Mac和Oculus設置上工作。 Firefox的VladimirVukićević提到的各種慣例包括將CSS 3D轉換與VR全屏模式集成。 <span>function setOrientationControls(e) {
</span> <span>if (!e.alpha) {
</span> <span>return;
</span> <span>}
</span>
controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true);
</span> controls<span>.connect();
</span> controls<span>.update();
</span>
element<span>.addEventListener('click', fullscreen, false);
</span>
<span>window.removeEventListener('deviceorientation', setOrientationControls, true);
</span><span>}
</span><span>window.addEventListener('deviceorientation', setOrientationControls, true);
</span>
<span>function fullscreen() {
</span> <span>if (container.requestFullscreen) {
</span> container<span>.requestFullscreen();
</span> <span>} else if (container.msRequestFullscreen) {
</span> container<span>.msRequestFullscreen();
</span> <span>} else if (container.mozRequestFullScreen) {
</span> container<span>.mozRequestFullScreen();
</span> <span>} else if (container.webkitRequestFullscreen) {
</span> container<span>.webkitRequestFullscreen();
</span> <span>}
</span><span>}</span>
>
>如果您嘗試使用此代碼構建VR演示,請在評論中分享或在Twitter上與我聯繫(@thatpatrickguy)。我很想戴上我的Oculus Rift或Google Cardboard,然後將其旋轉! 經常詢問有關在網絡上構建VR的問題
>在網絡上構建VR的前提是什麼?您還應該熟悉用於渲染2D和3D圖形的JavaScript API WebGL。 Trix.js的知識是一個流行的JavaScript庫,用於創建3D圖形,也是有益的。此外,您應該有一個VR耳機來測試您的VR體驗。
> javascript以及諸如three.js和a-frame之類的庫,可以用於創建VR體驗。三。 js簡化了使用WebGL的過程,而A框架允許您使用類似於HTML的語法構建VR場景。您可以使用這些工具創建3D對象,添加紋理和照明以及控制攝像機移動。
webvr是JavaScript API這為Web瀏覽器中的各種虛擬現實設備(例如Oculus Rift,HTC Vive和Google Cardboard)提供了支持。它允許開發人員在網絡上創建沉浸式的VR體驗,這些體驗可供擁有VR設備和兼容瀏覽器的任何人訪問。
如何優化網絡的VR體驗? Web涉及減少延遲,有效地管理內存和優化渲染。您可以使用異步加載,紋理壓縮和細節級別(LOD)等技術來提高性能。另外,考慮用戶硬件和網絡條件的局限性。
>如何將我的VR Creations從Thrix.js導出到A-FRAME?
在網絡上構建VR時,我可能會面臨哪些挑戰?
>在哪裡可以了解有關在網絡上構建VR的更多信息? Mozilla的WebVR文檔是一個很好的起點。您還可以在三個和A框網站上查看教程和示例。此外,在許多在線社區中,您可以提出問題並分享您的作品。
>
以上是今天如何在網絡上構建VR的詳細內容。更多資訊請關注PHP中文網其他相關文章!