React是一款來自Facebook的開源JavaScript庫,它能夠輕鬆建立交互式用戶界面。React VR能夠在虛擬現實中建立UI和3D場景,它將React提高到一個新的水平。
React VR 可以讓您使用 JavaScript 構建 VR 應用程序。它使用與 React 相同的設計,讓您經過聲明式的組件構建豐富的 VR 世界和 UI。
React VR 是爲 VR 應用而建立的框架,運行在 Web 瀏覽器中。它將現代 API(例如 WebGL 和 WebVR)與 React 的聲明能力結合起來,經過各類設備提供適用於消費者的體驗。javascript
安裝用於構建和管理React VR應用程序的依賴項:Node.js(4.0版本及以上)和React VR CLIhtml
npm install -g react-vr-cli
react-vr init WelcomeToVR
cd WelcomeToVR
npm statrt
最初運行「react-vr」工具時,它會在項目目錄中建立一堆文件。java
在第一個初始化的項目的文件夾中能夠看到index.vr.js文件。這個文件是React VR應用程序的入口文件。react
import React from 'react'; import { AppRegistry, asset, Pano, Text, View } from 'react-vr'; class WelcomeToVR extends React.Component { render() { // Displays "hello" text on top of a loaded 360 panorama image. // Text is 0.8 meters in size and is centered three meters in front of you. return ( <View> <Pano source={asset('chess-world.jpg')}/> <Text style={{ backgroundColor: '#777879', fontSize: 0.8, layoutOrigin: [0.5, 0.5], paddingLeft: 0.2, paddingRight: 0.2, textAlign: 'center', textAlignVertical: 'center', transform: [{translate: [0, 0, -3]}], }}> hello </Text> </View> ); } }; AppRegistry.registerComponent('WelcomeToVR', () => WelcomeToVR);
React應用程序由一系列組建渲染而成 - 每個組建都會經過render函數來對本身進行渲染,與此同時也會根據響應刷新本身。 WelcomeToVR代碼裏面定義了一個頂級的組建,而且決定如何渲染。
代碼從導入依賴關係開始。接下來,它聲明瞭WelcomeToVR組件,包括它如何渲染。代碼末尾經過AppRegistry來進行註冊。() => WelcomeToVR是一個箭頭函數,必須返回一個頂級組建,其他的能夠放心的忽略。
咱們看下組件的結構。咱們返回一個View組件,它有兩個子節點:'Pano'和'Text':
1. PANO在渲染了360度圖片的空間裏建立了一個盒子。它是一個組建,它渲染了你看見的這個案例中的環境。
2. TEXT在3D空間中渲染一個字符串。這個特別的TEXT標籤已經被設計放置在整個3D空間的中央。咱們將在其餘地方更詳細的講解更多的樣式的使用。
3. VIEW組建一般會被用做一個容器。它們能夠包含不少其餘的組建,它們能夠提供空間以及設計成你想要的UI樣式。咱們的組件建立一個PANO和一個TEXT包裹在VIEW中。web
React VR附帶一個能夠將全部內容都打包成幾個您能夠放在網絡服務器上文件的腳本。從你的項目根目錄,運行以下:npm run bundle
這將在vr中建立一個名爲build的新目錄。內部是您的應用程序文件的編譯版本。這些能夠放在Web服務器上,只要它們放在同一個目錄中,它們就須要做任何改變。
若是你是用任何的外部資源(asset()),npm
您還須要將您的static_assets目錄與文件一塊兒複製,以便您的應用程序能夠引用它們。此時,您的目錄結構應相似於如下內容:json
Web Server ├─ static_assets/ │ ├─ index.html ├─ index.bundle.js └─ client.bundle.js
若是要將VR體驗嵌入到網頁中,推薦的方法是使用<iframe>
標籤。將src屬性設置爲指向項目的index.html文件,並在iframe上設置適當的大小。瀏覽器