Войти
ПрограммированиеФорумОбщее

Разработка под VR (3 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 521 Следующая »
#30
(Правка: 15:01) 15:01, 20 янв. 2021

san
> Я не понял, у тебя какой хедсет?
Oculus Quest 2 через Oculus Link.

> как ты инициализировал OpenVR на Линуксе?
Пока никак, потому что Oculus Link в линуксе не поддерживается, но сама библиотека openvr для линукса есть, см. https://github.com/ValveSoftware/openvr

Поэтому разработку под VR буду вести преимущественно в винде.

> Сначала строится картинка для левого глаза, потом для правого.
Если решать задачу "в лоб", то да. А средствами GL_OVR_multiview (у DX12 должен быть аналог) можно делать вывод сразу в два фреймбуфера. Один DrawCall, один "двойной" проход вершинного шейдера (ему передаётся параметр gl_ViewID_OVR, 0 для левого глаза и 1 для правого, чтобы выбрать нужную матрицу). Фрагментные шейдеры уже выполняются каждый для своего фреймбуфера.

Изображение

#31
(Правка: 15:28) 15:08, 20 янв. 2021

romanshuvalov
Думаю тут экономия копеечная. Вертексы и так быстро обрабатываются, тормозит все же пиксельный уровень.
Сцена у меня довольно сложная, с зеркалами, стеклянной посудой и кучей блестящих поверхностей. Но без суперсемплинга успеваю даже на 970.
Вот картинка:
Fractal Alchemist | Разработка под VR

#32
16:48, 20 янв. 2021

san
> Думаю тут экономия копеечная. Вертексы и так быстро обрабатываются
Я тоже так думаю, но когда начну внедрять виар - обязательно сделаю мультивью и проверю на одной и той же сцене.

#33
17:20, 20 янв. 2021

romanshuvalov
Так у тебя пример запустился? Если есть проблемы то я через полчаса буду за компом, могу что-то прислать из кода. Только я не очень понял как ты запускаешь Квест из среды SteamVR.

#34
18:07, 20 янв. 2021

Хелло Ворлд успешно завёлся. Переписал под C API с динамической подгрузкой, компилировал в привычном для себя mingw, VS не трогал. /A\, спасибо за пример работы с C API. Кстати, у тебя в OpenVRDevice.cpp на 138-й строчке ошибочно дважды выводится одно и то же.

san
> Так у тебя пример запустился?
Да, вот буквально только что. Спасибо за помощь.

> я не очень понял как ты запускаешь Квест из среды SteamVR.
"Я ничего не трогал, оно само". Можно просто запустить приложение, оно само запустит SteamVR, а SteamVR запустит Oculus Link и откроет в нём себя, а в нём - моё приложение. Только в шлеме надо будет подтвердить подключение по Oculus Link.

#35
(Правка: 17:11) 17:07, 24 янв. 2021

Нигде не могу найти полную спецификацию файлов json от SteamVR Input (действия и биндинги). В частности, список возможных источников и названия их выходных параметров.

В примере есть analoginput от трекпада. Догадался сменить на joystick, сработало. А вот триггер не сработал, потому что у него действие не "position", а "pull", о чём я узнал случайно, сделав поиск по "json" в папке стима и изучая всё подряд в качестве примеров.

В вики гитхаба есть только описание манифеста действий:
- https://github.com/ValveSoftware/openvr/wiki/Action-manifest

Но ничего не сказано про биндинги, нет описания источников (sources) и их выходных параметров (position для трекпада, pull для триггера, и я не знаю, что ещё бывает).

В документации Steam Input (не VR) есть что-то, благодаря чему можно угадать правильные значения, но это всё равно непорядок, тем более документация о другом, а источника "touchpad" из примера вообще нет. См. раздел EInputActionOrigin и ниже:
- https://partner.steamgames.com/doc/api/isteaminput

Кто-нибудь решал данный вопрос?

#36
(Правка: 17:06) 17:03, 25 янв. 2021

romanshuvalov
Я решал. Описания действительно нет. Каждый новый контроллер приходится настраивать индивидуально, иногда одинаковые управляющие элементы (например джойстик) называются по разному. Советую посмотреть файлы к Alyx, там есть настройки для всех имеющихся девайсов. А далее делай по аналогии.
Если хочешь по быстрому настроить свой контроллер - могу помочь. Скажи только какой у тебя девайс.

#37
17:09, 25 янв. 2021

san
> Советую посмотреть файлы к Alyx
Alyx отсутствует в связи с отсутствием ПК, который её потянул бы. Но я уже нашел то же самое в

steamapps\common\SteamVR\tools\steamvr_environments\game\steamtours\cfg
#38
(Правка: 17:14) 17:12, 25 янв. 2021

> Скажи только какой у тебя девайс.
Контроллеры Oculus Touch от Oculus Quest 2. Но я всё прописываю для generic, дублируя trackpad и joystick.

В ближайшие дни залью демку в Steam, дам ссылку. Если у тебя другие контроллеры - было бы интересно узнать, заведётся ли всё из коробки.

#39
(Правка: 17:46) 17:37, 25 янв. 2021

romanshuvalov
У меня Рифт, Индекс, Реверб и где-то валяется старый WMR от Acer. Но что бы сказать будет ли твой код работать на этом железе мне достаточно посмотреть на Джейсон настройки. Для них я все установки знаю. Единственно что у меня нет так это Vive.

>Но я всё прописываю для generic, дублируя trackpad и joystick.
Это не будет работать. Смотри выше.

Ну если Alyx нет, то я сейчас погуляю с собакой и выложу тебе свои настройки. Там я все знаю и все основные функции проверены. Есть еще настройки (типа гистерезиса у джойстика) с которыми я не разбирался, но я их и не использую.

#40
18:02, 25 янв. 2021

san
> Это не будет работать. Смотри выше.
Вообще-то работает:

            {
              "inputs" : {
                  "position" : {
                    "output" : "/actions/demo/in/AnalogNav"
                  }
              },
              "mode" : "joystick",
              "path" : "/user/hand/left/input/joystick"
            },
            {
              "inputs" : {
                  "position" : {
                    "output" : "/actions/demo/in/AnalogNav"
                  }
              },
              "mode" : "joystick",
              "path" : "/user/hand/right/input/joystick"
            },
            {
              "inputs" : {
                  "position" : {
                    "output" : "/actions/demo/in/AnalogNav"
                  }
              },
              "mode" : "trackpad",
              "path" : "/user/hand/left/input/trackpad"
            },
            {
              "inputs" : {
                  "position" : {
                    "output" : "/actions/demo/in/AnalogNav"
                  }
              },
              "mode" : "trackpad",
              "path" : "/user/hand/right/input/trackpad"
            },

Если есть джойстик - сработает джойстик. Если есть только трекпад (как на vive) - сработает трекпад. В обоих случаях действие забиндено на in/AnalogNav. Жаль, ни у кого из нас нет контроллера vive, чтобы проверить.
#41
(Правка: 18:32) 18:29, 25 янв. 2021

romanshuvalov
> Вообще-то работает:
Это работает для одного контроллера, на котором ты это настроил и отладил. На другом, с отличающимися настройками (другими названиями для действий), это работать не будет. Почему там разные названия - это мне неведомо. Но это медицинский факт. Поэтому делают разные настройки для разных контроллеров, а не один общий для всех.

ОК, вот тебе мои настройки: OPenVR setting
Посмотри, если что непонятно - спрашивай.

#42
18:57, 25 янв. 2021

san
> ОК, вот тебе мои настройки: OPenVR setting
Посмотрел и что-то не увидел никакой разницы в названиях. Вижу только, что, например, у Oculus Touch отсутствует биндинг трекпада, которого у него нет. Но в Vive Cosmos прописан и трекпад, и джойстик. И данный конфиг от Vive Cosmos прекрасно должен сработать и для Oculus Touch (просто окулус проигнорирует секцию с трекпадом). Можешь сам в этом убедиться, надев Рифт с Тачами и принудительно загрузив конфиг от vive cosmos.

Особые настройки вроде "deadzone_pct": "35" сейчас не рассматриваю.

#43
(Правка: 19:30) 19:24, 25 янв. 2021

romanshuvalov
Не, ну я же не настаиваю, делай как тебе хочется.
Но только задумайся, почему все другие разработчики на OpenVR не идут по такому простому пути - заделать один файл для всех контроллеров и все дела. Тупые, никто не догадался? Уверен?

>Можешь сам в этом убедиться, надев Рифт с Тачами и принудительно загрузив конфиг от vive cosmos.
Я уже писал, что Vive у меня нет, потому файл делал по аналогии. Но Индекс с Рифтом несовместим. То же самое с WMR - там вообще джойстик не работал. Ну и все такое. Но делай как знаешь.

#44
19:43, 25 янв. 2021

san
> Но Индекс с Рифтом несовместим.
Вот, я попытался вслепую сделать универсальный конфиг, совместимый как минимум и с индексом, и с рифтом. Можешь проверить? Это конфиг для твоей игры. Я не уверен, сработает ли, но подозреваю, что да.

+ Конфиг
Страницы: 1 2 3 4 521 Следующая »
ПрограммированиеФорумОбщее