VR 時代,我們應該如何編程?
3月3日,我被這篇文章轟炸了: Firefox聯手Chrome合作開發網頁VR標準 。文中提到:
隨著1.0版WebVR API的完成,Mozilla已經收到了許多開發者發回的反饋。值得注意的是,該公司已經改進了如下內容:
—以虛擬現實為核心的設備渲染和顯示標準;
—WebVR頁面之間的遍歷鏈接能力;—能夠枚舉虛擬現實輸入的輸入處理機制,包括6軸動作手柄;—適應坐姿和站姿兩種體驗;
—使用桌面和移動平台。在獲得認可後,Mozilla還計劃於今年上半年在Firefox Nightly中推出一個WebVR 1.0的工作版本。如果你勇於探索,可以從布蘭登-瓊斯那裡下載幾個實驗版Chromium瀏覽器,體驗這種API的概念驗證效果。
我們知道,Mozilla 的 WebVR API 早已在 2015年7月 推出草案,那麼這篇沒有任何引用的語焉不詳的 WebVR 1.0 是啥?有趣的是,中文互聯網上該文章大部分為轉載,內容完全相同(甚至更少)。這讓我開始質疑其內容的完整和正確性。
稍微搜索一下,發現原文應該是這篇 Introducing the WebVR 1.0 API Proposal ,譯者可能是偷懶,也可能是並非技術人員,僅僅翻譯了新聞部分,沒有翻譯代碼部分。看看 WebVR 草案 中的 Editors 信息,3 個 Mozilla 的人,1 個 Google 的人,我們就能了解到,目前暫時只有 Firefox 和 Chrome 陪玩了。
回到本文的標題,身為開發者,我們該如何更新自己的技能,才能適應這個新的平台?更準確的說,我們應該學習什麼編程語言/或3D引擎(3D Engine),才能適應 VR 時代的發展?
VR 設備分析
讓我們先來看看現在的 VR 設備。
目前主要的 VR 設備有 Oculus , Sumsang Gear VR , HTC Vive , Microsoft HoloLens , Sony PlayStation VR ,國內的 VR 設備則太多,銷量較高的有 蟻視 和 暴風魔鏡 等等。
Oculus
代表產品: Oculus Rift
簡單介紹: 萬眾矚目的 Oculus Rift 已經預售了。簡單地說,Oculus Rift 是一個帶有部分輸入設備的虛擬現實顯示器。這些輸入設備包括一個遙控器,一個紅外感測器,還有 Touch 控制器。Rift 的所有計算是在一台 PC 上進行的,在 Oculus Ready PCs 可以看到 Rift 要求的 PC 配置。由於顯卡的性能問題,Rift 目前並不支持 Mac,只能下載到基於 Windows 的 Runtime。
SDK支持: Oculus Rift 支持 Unity 5 、Unity 4 和 Unreal 。3月1日,Oculus 發布了 MobileSDK 1.0.0.1 升級,這個 SDK 提供了對 Oculus Remote Monitor 的支持,同時也讓我們可以在 Mac OSX 上基於 MobileSDK 進行開發。
Samsung
代表產品: Gear VR
簡單介紹: Gear VR 是 Samsung 和 Oculus 共同開發的。它目前使用 Samsung 的 Galaxy S7/S7 edge, Note5, S6, 和 S6 edge 來代替頭顯中原來的顯示器。Gear VR 還內置感測器用於和三星手機配對,並內置了觸摸板用於操作。和 Oculus Rift 使用 PC 來進行計算不同,Gear VR 把計算放在了 Samsung 手機上。
SDK支持: Oculus 的 MobileSDK 最開始就是為 Gear VR 提供的。
HTC
代表產品: Vive
簡單介紹: Vive 也已經預售了。它是目前呼聲最高的消費級 VR 設備了。Base stations 設計,電子圍欄,多功能操縱手柄,StreamVR,良好的體驗都讓它成為目前最好的 VR 設備。在 VIVE OPTIMIZED PCs 可以看到推薦的 PC 配置,和 Oculus 類似,但不要求 8G 內存
。
SDK支持: Steam VR 、Unity 和 Unreal 。
Microsoft
代表產品:HoloLens
簡單介紹: M$ 的確是不差錢,一上來就搞出來一個 MR(Mixed Reality) 設備,還讓 HeloLens 上了國際空間站 。簡單的說,HoloLens 就是一台微型 Windows 10 一體機啊!和競爭對手們完全不是一個打法好么?不在一個緯度好么!硬體我就不說了,直接看 Hardware 好了,簡直驚悚。
SDK支持: 為 HoloLens 開發應用,其實就是為 Windows 10 開發 App ,目前官方頁面並沒有公布太多的開發信息。但你也知道,IDE 一定是宇宙最強的 Visual Studio,語言一定是 C# 。
Sony
代表產品: PlayStation VR
簡單介紹: Sony 大法雖然好,但 PSVR 和上面幾家比起來會出來的比較晚,又從 2016 上半年跳票到下半年。它是和 PS4 共同使用的,目前我沒有找到它的 SDK。但 Unity 提到了對 PlayStation VR 的支持。
暴風魔鏡
代表產品: 魔鏡4
簡單介紹: 暴風魔鏡是目前在國內大肆宣傳的一款產品。暫時還沒有哪一款產品的宣傳力度超過它。當然,它也是我唯一買過(主要是買得起)的產品。和 Google Cardboard 類似,它是一款把手機塞進去就能體驗廉價 VR 的產品。具體的體驗效果,取決於手機的高(tu)端(hao)程度。
SDK支持:暴風魔鏡提供了 Android/iOS/Unity/Unreal 的 SDK 。
VR 引擎分析
從上面的設備分析可以看出,目前對 VR 支持最好的 3D 引擎就是 Unity 和 Unreal 了。它們兩位可以說是 VR 的標配引擎。借用一句廣告詞: 2U ,你值得擁有!
除了 2U 哥倆外,下面還有一些在 VR/AR 界十分活躍的引擎和軟體:
OSVR
Open Source Virtual Reality 是一個全面開源的軟體平台,支持多種設備和引擎,Blender/MonoGame/StreamVR/Unity/Unreal/CryEngine/WebVR 都在支持之列。在國內,OSVR 已經和 360 公司展開了合作。
OSVR是全球的開源虛擬現實平台,由Razer(雷蛇)——全球高性能遊戲硬體、軟體與系統品牌,以及Sensics——全球專業級虛擬現實頭戴式顯示器品牌聯合創立。該軟體平台致力於為所有虛擬現實技術樹立開放標準,使得各款支持OSVR的虛擬設備與支持OSVR的軟體能夠順利交互、接合。
OSVR軟體 介紹了這套引擎的架構方式。
OSVR能夠提供簡單而標準化的方式,助你探索、配置和操作數以百計的設備,包括VR眼鏡、定位追蹤、深度攝像頭、眼動議、遊戲控制器等等。
VRPN
Virtual Reality Peripheral Network 是學術圈搞起來的一套基於網路傳輸界面的開源 VR 庫。允許大家共同建設,把自家的設備加進去。這個庫支持非常多的設備,甚至直接包含了設備驅動 Supported hardware devices 。VRPN 已經在 PC/Win32, PC/Cygwin, PC/Linux, and Mac/OSX (32- and 64-bits on all), ARM Linux systems 和 Android 上測試過。
MiddleVR
MiddleVR 目前提供 Unity 插件 ,當然你也可以直接使用它的 SDK,它也支持目前大多數主流的 HMD (Head-mounted display)設備。雖然是由一家公司在維護,但目前是免費使用的。
VR 語言
說起 VR 語言,其實還不如說是 3D 引擎的語言。VR 沒有 3D 引擎支持是無法進行開發的。讓我們看看上面提到的 3D 引擎和 SDK 主要使用什麼語言。
首當其衝的是 C/C++ ,這是毋庸置疑的。大多數 3D 引擎都使用 C++ 開發,Oculus 提供的 SDK 也是使用 C++ 進行開發的。 Gear VR 是在安卓設備上運行,需要使用 Android NDK 基於 C++ 進行開發。Unreal 引擎同樣使用 C++ 進行開發。MiddleVR 提供了基於 C++ 的 SDK。
其次是 C# 。 Unity 把 C# 當作腳本語言使用。在 VRPN 中可以使用 .NET bindings for VRPN 作為開發語言。不出意外的話, HoloLens 也一定使用的是 C# 。
再次就是 Javascript 。它也是 Unity 的一種腳本語言(即使選擇的人並不多)。但 WebVR 和 Javascript 程序員的基數(基友數?)一定會讓 Javascript 繼續在使用人數上佔優(我真的不是黑啊)。即使不考慮 WebVR , three.js , Babylonjs 這類已經非常成熟的 HTML5 3D 引擎也足夠證明 Javascript 在 3D 上的強大生命力。
VR 平台
從目前的狀態看, Oculus 僅支持 Windows 和 Android(通過 Gear VR) 。MiddleVR 僅支持 Windows 平台。其他的幾個引擎例如 OSVR/VRPN 都是多平台支持的,Unity 和 Unreal 當然也是多平台支持。Playstation VR 無疑是 PS 獨佔。HoloLens 則無疑是 Windows 獨佔。
只有 WebVR ,不挑平台陪你玩。
結語
VR/AR/MR 仍然在如火如荼的發展。以上的技術1~2年後或許會有翻天覆地的變化,領跑者說不定就成了追趕者,黑馬也可能隨時出現。但總的來說,VR在目前這個階段的發展,最重要的仍是內容。內容的產出依然離不開程序員,離不開3D引擎和編程語言。作為程序員,只要我們苦練內功,緊跟技術發展的腳步,就不必擔心被時代所遺棄。若是不小心搭上了VR時代的快車,或許更容易一飛衝天。
而當下,我們需要一往無前。
(全文完,封面圖片來自Oculus官方網站)
長按關注曾嶸胡扯的地方
推薦閱讀:
※#這次糗大了#2月7日 哥,你這禿頂雜染啊,我們沒弄過這種~~
※夜思|談戀愛的時候,我們AA制好不好?
※超簡單的「腳趾瑜伽」,每天5分鐘,有助於我們打通腿部經絡哦
※是什麼讓我們陷入了貧窮和忙碌?