15

如你所見,一個虛擬現實的世界正在逐漸成型;谷歌也已經率先推出了基于智能手機的虛擬現實設備Cardboard,小編也體驗過,感覺還不錯。
毫無疑問,虛擬現實正在進入我們的生活,虛擬現實直播也正在逐漸興起。但總體來說,虛擬現實直播還非常小眾,資源不多;而且由于帶寬的限制,許多虛擬現實直播還對接入設備數量存在限制。既然這樣,那就讓我們自己來DIY一套虛擬現實直播系統吧!(注:本項目來自Instructables。)
要實現這一項目,你需要以下硬件:
一部支持Cardboard的手機
Google Cardboard(因為谷歌公開了設計方案,有很多不同生產商的兼容版本)
兩臺計算機
兩個不同的網絡相機(必須要驅動不同的,否則Windows系統無法進行識別)
三個標準舵機
相機支架和相關3D打印組件(文件點擊這里下載)
小面包板
12根跳線
USB A轉USB B線
AA電池盒
4顆AA電池
Arduino UNO
螺絲釘若干

另外,你還需要這些軟件:
Processing 2.0 (可選,如果你不想改動源代碼,可不用)
首先3D打印必要的結構件。

不同的舵機配合不同的結構,具體看圖。



接線圖如上,Arduino用來控制三個舵機,這些舵機使用4個AA電池供電,因為Arduino無法同時為三個舵機功能。這三個舵機為最終的設備提供了3個自由度。實際連接后如下所示:


本項目基于標準 Firmata協議,該協議能讓基于Arduino的實時通信交互變得更加簡單,數據的處理也可以轉移到PC上進行。設置標準Firmata協議的步驟如下:
使用USB A轉USB B線,打開Arduino IDE并連接Arduino UNO到PC;
點擊File->Examples->Firmata->StandardFirmata,將必要的代碼模板載入IDE;
點擊Tools->Board->Arduino UNO,確定開發板;
Tools->Serial Port->(串行接口名),這里設置Arduino上連接的接口;
點擊箭頭符號將標準 Firmata協議上傳到Arduino,如果沒有出錯,則上傳成功。

你可以使用Firmata Test應用測試標準 Firmata協議是否安裝成功。在其中你可以看到接口的定義,這里我們使用的引腳8、9和10,將這三個引腳的類型改成“Servo”。

現在的虛擬現實應用大部分都是頭戴式的,我們這里選用的是Cardboard兼容版本。而我們的數據處理則在計算機上進行,我們需要TrinusVR軟件為Cardboard提供視頻流。TrinusVR的下載安裝方法請點這里。

本項目將使用利用Processing 2.0編寫的定制軟件VRTD(Virtual Reality Teleconferencing Device)來實現對虛擬現實設備的遠程控制,該軟件分為兩個部分VRTD_sender和VRTD_receiver。
VRTD_sender在計算機上使用,該程序能夠跟蹤頭部運動產生數據,并將該數據上傳到特定的IP地址。該IP地址屬于,另一臺特定的計算機,該計算機上運行的是VRTD_receiver,該計算機能夠接受由連接到其上的左右兩個攝像頭所產生的視頻數據,并同時根據VRTD_sender發送的數據控制攝像頭下面舵機的運動。

那么使用者又如何看到視頻直播的畫面呢?這里采用了一個很巧妙的方法:直接通過Skype或QQ這樣的視頻軟件傳輸共享的視頻數據。具體的配置步驟如下:
準備兩臺安裝了Windows系統的計算機,分別命名為A和B;
將計算機A連接到Cardboard,并運行VRTD_sender;
將計算機B連接到虛擬現實設備,并運行VRTD_receiver;
在VRTD_receiver中設置左右兩個網絡攝像頭和Arduino的接口;
在兩臺計算機上運行Skype軟件,并開啟屏幕共享;
在VRTD_sender中輸入計算機B的IP地址;
戴上虛擬現實設備,該設備控制鼠標的光標,并借此控制計算機B所連接的Arduino上所連接的舵機。

注:只有一臺計算機也可完成此項目,同時運行VRTD_receiver和VRTD_sender,在輸入IP地址時輸入本地的127.0.0.1即可。

演示視頻如下:
到這里本項目就完成了,該項目的作者John Choi已經將相關的CAD和處理文件開源,實在太贊了!
想了解更多腦洞大開的創客創意?趕緊關注硬創邦微信公眾號(leiphone_bang)吧,每天都有新花樣。

雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。