Впервые на русском: Документация HTC Vive для разработчиков. OpenVR API

Продолжаем публикацию эксклюзивной информации для разработчиков HTC Vive. Новый раздел посвящён OpenVR API.

Документация HTC Vive для разработчиков:

  1. HTC Vive: руководство по установке
  2. Устранение неполадок Steam VR и HTC Vive. Общие проблемы компьютера
  3. Устранение неполадок Steam VR и HTC Vive. Шлем виртуальной реальности
  4. Устранение неполадок Steam VR и HTC Vive. Контроллеры
  5. Устранение неполадок Steam VR и HTC Vive. Базовые станции
  6. Устранение неполадок Steam VR и HTC Vive. Проблемы с отслеживанием
  7. Устранение неполадок Steam VR и HTC Vive. Проблемы с SteamVR (Error 301)
  8. Устранение неполадок Steam VR и HTC Vive. Проблемы со звуком
  9. Устранение неполадок Steam VR и HTC Vive. Беспроводные ресиверы
  10. SteamVR FAQ
  11. SteamVR и Oculus Rift
  12. Разработчики SteamVR
  13. OpenVR API
Обзор

OpenVR API делает доступными игры с возможностью взаимодействия с устройствами виртуальной реальности, не полагаясь при этом на определенный SDK конкретного поставщика оборудования. Он может быть обновлён независимо от игры для того, чтобы добавить поддержку новых обновлений оборудования или программного обеспечения.

API реализован как набор классов интерфейса C++, полный чисто виртуальных функций. Когда приложение инициализирует систему, оно возвращает интерфейс, соответствующий заголовку в SDK, используемом этим приложением. После отображения версии интерфейса он будет поддерживаться во всех будущих версиях, поэтому приложение не будет нуждаться в обновлении до нового SDK для того, чтобы перейти к новому оборудованию и другим функциям.

Инициализация и очистка

Поскольку API OpenVR заставляет игру подключаться к любому подключенному устройству виртуальной реальности, он не инициализируется автоматически. Чтобы инициализировать API и получить доступ к интерфейсу vr::IVRSystem, вызовите функцию vr::VR_Init. Чтобы отключить соединение с оборудованием и очистить интерфейс vr::IVRSystem, вызовите vr::VR_Shutdown.

 

vr::IVRSystem *vr::VR_Init( vr::HmdError*peError, vr::EVRApplicationType eApplicationType )

 

eApplicationType должен быть одним из следующих:

  • VRApplication_Scene – 3D-приложение, которое будет рисовать среду.
  • VRApplication_Overlay – приложение, которое взаимодействует только со слоями или панелью.
  • VRApplication_Background – приложение не запускает SteamVR. Если он ещё не запущен, вызов с VR_Init завершится с VRInitError_Init_NoServerForBackgroundApp.
  • VRApplication_Utility – приложение запустится, даже если аппаратное обеспечение отсутствует. Гарантируется работа только с интерфейсами IVRSettings и IVRApplications. Этот тип приложения подходит для таких приложений, как установщики.

Вызов функции возвращает указатель vr::IVRSystem, который позволяет игре вызывать другие методы OpenVR API. Если что-то не получилось, вызов вернет результат NULL, а в peError будет установлен код ошибки, который указывает, в чем проблема. PeError – значит, что произошел код ошибки, или отобразится vr::VRInitError_None, если не было ошибок. См. раздел «vr::HmdError» с возможными кодами ошибок.

 

void vr::VR_Shutdown()

 

Завершает соединение с оборудованием виртуальной реальности и очищает API OpenVR. Указатель vr::IVRSystem, возвращенный vr::VR_Init, будет недействительным после вызова этой функции.

Интерфейсы
  • API разбит на шесть основных интерфейсов в пространстве имен vr:
  • IVRSystem – основной интерфейс для отображения, искажения, отслеживания, контроля и доступа к событиям.
  • IVRChaperone – обеспечивает доступ к мягким и жёстким границам.
  • IVRCompositor – позволяет программе получать 3D-контент через VR-компоновщик.
  • IVROverlay – позволяет программе получать 2D-контент через VR- компоновщик.
  • IVRRenderModels – разрешает доступ приложению к моделям рендеринга.
  • IVRScreenshots – позволяет программе запрашивать и отправлять скриншоты.
Другие функции

 

bool vr::VR_IsHmdPresent()

 

Возвращает true, если система считает, что шлем виртуальной реальности присутствует в системе. Эта функция намного быстрее, чем инициализация всего OpenVR только для проверки шлема виртуальной реальности. Используйте его, когда у вас есть часть пользовательского интерфейса, который вы хотите включить только для пользователей со шлемом виртуальной реальности.

Эта функция вернет true в ситуациях, когда vr::VR_Init() вернет NULL. Это быстрый способ удалить пользователей, которые не имеют оборудования виртуальной реальности, но также существуют некоторые условия запуска, которые могут быть обнаружены только при запуске системы.

 

bool vr::VR_IsRuntimeInstalled()

 

Возвращает true, если среда OpenVR установлена ​​в системе.

 

char *vr::VR_RuntimePath()

 

Сообщает, где установлена ​​среда исполнения OpenVR.

 

const char *VR_GetVRInitErrorAsSymbol( vr::EVRInitError error );

 

Эта функция возвращает значение vr::EVRInitError enum как строку. Его можно вызывать в любое время, независимо от того, запущена ли система виртуальной реальности.

 

void *VR_GetGenericInterface( const char *pchInterfaceVersion, vr::EVRInitError*peError )

Запрашивает интерфейс по имени из OpenVR. Он вернет NULL и вернёт ошибку в peError, если интерфейс не найден. Он всегда будет возвращать NULL, если vr::VR_Init() не был вызван успешно.

 

bool VR_IsInterfaceVersionValid( const char *pchInterfaceVersion )

 

Возвращает true, если имя и версия интерфейса поддерживаются установленной средой выполнения.

 

Примечание: Данный материал представлен для ознакомления, при перепечатывании ссылка на оригинал обязательна. Если вы хотите принять участие в помощи проекту, пишите на editor@vrgeek.ru

Если вы разработчик и вы хотите продолжить свою карьеру в лучших компаниях России, пишите на editor@vrgeek.ru с пометкой «Работа мечты», и мы поможем вам с этим.