OpenVR[0] - 初步了解

0 序

開始用 HTC Vive 做項目,由于 OpenVR 并沒有提供用于 Unity3D 的 C? 文檔(只提供了 C++ API 文檔),所以想寫一個“第三方”的 OpenVR C? API 文檔,借此機會提高姿勢和水平。

由于作者的水平相當低,可想而知接下來一定會遇到眾多問題,望讀者海涵,如果有什么寫得不對的地方請一定指出并往死里噴我,教我人生的經驗。雖然我認為沒人會讀這東西。

1 對于OpenVR的初步認識

OpenVR 是由 Valve 公司開發的一套 VR 設備通用 API ,換而言之不管是 Oculus Rift 或 HTC Vive 甚至是其他 VR 設備,都不再需要使用產商提供的 SDK 就可以進行開發,有種打算一統天下的范兒。這套 API 并未開源所以具體實現未知。(由于 Vive 和 Oculus Rift 的原理看似一樣但是其實對于畫面的處理大相徑庭,根據我大膽的瞎猜,我認為這套 API 只是幫我們在原先設備產商提供的 SDK 上又實現了一個能夠通過統一接口訪問的抽象層來,應該不是什么黑科技大概

OpenVR 文件夾的結構大致如下:

\openvr
    \bin                用于各平臺的dll、pdb文件
    \headers            用于 C++(.h) 和 C?(.cs) 的頭文件
                       (是根據本文件夾下的 openvr_api.json 自動生成的,不要手動編輯)
    \lib                用于各平臺的lib文件
    \samples            C++、Unity 范例
    \unity_package    用于 Unity 的 Package

unity_package 是之后研究的重點。

2 OpenVR Unity Package

OpenVR Unity Package 包含以下腳本內容:

  • \Plugins
    • openvr_api.cs
  • \SteamVR
    • \Editor
      • SteamVR_Editor.cs
      • SteamVR_RenderModelEditor.cs
      • SteamVR_Settings.cs
      • SteamVR_SkyboxEditor.cs
      • SteamVR_Update.cs
    • \Scripts
      • SteamVR.cs
      • SteamVR_Camera.cs
      • SteamVR_CameraFlip.cs
      • SteamVR_CameraMask.cs
      • SteamVR_Controller.cs
      • SteamVR_ControllerManager.cs
      • SteamVR_Ears.cs
      • SteamVR_ExternalCamera.cs
      • SteamVR_Fade.cs
      • SteamVR_Frustum.cs
      • SteamVR_GameView.cs
      • SteamVR_IK.cs
      • SteamVR_LoadLevel.cs
      • SteamVR_Menu.cs
      • SteamVR_Overlay.cs
      • SteamVR_PlayArea.cs
      • SteamVR_Render.cs
      • SteamVR_RenderModel.cs
      • SteamVR_Skybox.cs
      • SteamVR_SphericalProjection.cs
      • SteamVR_Stats.cs
      • SteamVR_Status.cs
      • SteamVR_StatusText.cs
      • SteamVR_TestController.cs
      • SteamVR_TrackedObject.cs
      • SteamVR_UpdatePoses.cs
      • SteamVR_Utils.cs
    • \Extras
      • SteamVR_GazeTracker.cs
      • SteamVR_LaserPointer.cs
      • SteamVR_Teleporter.cs
      • SteamVR_TestThrow.cs
      • SteamVR_TrackedController.cs

事實上,只有 \Plugins 中的 open_api.cs 是直接與 OpenVR 打交道的,是它把 OpenVR 所有的 API 都暴露出來,并且聲明了一些用于與其進行交換的數據結構。

\Scripts 下是官方為我們實現的一些能夠處理 OpenVR 中的原始數據的方法,和能夠方便的在 Unity 中調用的方法,官方的說法是“推薦我們修改并提出反饋”(You are encouraged to modify these to suit your project's unique needs, and provide feedback),當然,我們這次的主題是看懂它,所以不作修改就我這水平,能看懂就不錯了

用過Unity的都知道 \Editor 下是一些編輯器腳本,\Extras 下是一些簡單的應用,所以就不多提了。不過值得一說的是,Valve 還寫了一個自動檢測 Project Settings 等設置是否有問題且能夠一鍵自動配置的編輯器擴展工具,簡直比 Oculus 高到不知道哪里去了

至于詳細內容請參看 readme 此處不再敘述。


下一篇,我們主要研究 openvr_api.cs,了解 class OpenVR{} 中的方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉自http://www.cnblogs.com/donghua/p/4957415.html Oculus/Ge...
    Moment__格調閱讀 3,303評論 0 3
  • 一、VR定義、特征以及發展歷史1.1、VR(虛擬現實)的定義虛擬現實即“Virtual Reality”,簡稱VR...
    秦時明月V閱讀 3,910評論 13 60
  • 如今,這串朱砂色的紅豆手串伴隨詩人有多年了,在書房里靜靜躺在他的詩集上。蓼藍染成藏青色的封面上臥著蠶頭雁尾的幾個隸...
    金俊杰閱讀 668評論 7 13
  • 拍照|吉祥(手機片) 我用一滴水的一生 詮釋你我的愛戀 那轉眼即逝的萌動 稍縱即逝的喜悅 灰飛煙滅的結果 像極了這...
    吉祥在路上閱讀 312評論 0 0
  • 做了幾個計劃: 1、設計方面:按照:模仿、消化、實戰、總結的四個步驟進行練習,每個步驟為一周,一個月進行一輪; 模...
    KurokoZ閱讀 143評論 0 1