OpenVR for Lazarus (Программирование VR на паскале)

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 01.02.2021 16:50:33

"Очередное ведро воды..."
ИзображениеИзображение
Пытаюсь разобраться с поворотом камеры (что довольно сильно отличается от обычного поворота модели ) и треккингом головы через gluLookAt .
По вертикали что-то отдаленно похожее на правду выходит(пусть и несинхронно с "эталонным кубическим фононном" ) а при повороте башки в горизонтальной плоскости почему-то получаю "вращение шестеренки".... :roll: :idea:
Зы
Выкладывать свои "полуфабрикаты" пока не буду . Во первых стыдно (типа "даже рыбы засмеют ") , а вторых пока собственно своего кода очень мало так что тем кто захочет попробовать проще "курить исходный пример" который полностью рабочий ... Но может быть это изменится, когда я вычищаю из демки по возможности весь "чужой код ".
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 08.02.2021 01:52:41

И так нашел я интересную информацию использованию матриц в OpenGL
http://www.songho.ca/opengl/gl_matrix.html
C достаточно понятным примером .
ИзображениеИзображение

Благодаря чему немного продвинулся в использовании данных от трекинга.
ИзображениеИзображение
(Как видно модель шестеренки полотно лежи на кубе и главное сохраняет позицию при вращении головы ... )
Но увы не все так идеально как бы этого мне хотелось ! Куб и шестеренка при повороте головы влево и в право "не синхронизованы" (то есть "пространственная метрика" для кубов и моей модели все-же намного разная )
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 09.02.2021 22:49:29

Немного разобраться с вращением и попутно научиться прятать модель в glList - очень полезная фича!
(эдакий "3д спрайт" правда без динамической генерации за то процесор меньше напрягает )
ИзображениеИзображение
Последний раз редактировалось Alex2013 23.02.2021 12:19:40, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Seenkao » 09.02.2021 23:46:45

Alex2013 писал(а):glList - очень полезная фича!
я бы посоветовал это не писать... а то сейчас налетят и будут кричать почему ты шейдерами не пользуешься. :D
Seenkao
постоялец
 
Сообщения: 226
Зарегистрирован: 01.04.2020 03:37:12

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 10.02.2021 00:50:19

Seenkao писал(а): будут кричать почему ты шейдерами не пользуешься

Да я вроде не против (тем более под ВиАр все равно "высокий порог" вхождения "по железу" и АПИ. Так что буквально вчера "маны по шейдерами курил" ....и в принципе проникся ... типа "шейдер не шредер - не бойся не съест!" :D ... просто пока продвигаюсь "эволюционным путем"... А шейдеры в этом проекте и так есть (аж три штуки! ) но пока "автономно от текущего программиста" :wink: Правда кто-бы еще объяснил к чему они там ... похоже что это просто очередная калька сишного примера который бездумно тиражируют всюду "то Явы до Притона" - кругом одни и те же "кубики". ) )
Зы
Типа самый сложный Шрейдер ...
Код: Выделить всё
//texture.vert
#version 410 core

layout(location = 0) in vec3 inVertex;
layout(location = 1) in vec3 inNormal;
layout(location = 2) in vec2 inTexCoord;

layout(location = 0) out vec2 fragTexCoord;
layout(location = 1) out vec4 fragColor;

uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projMatrix;

void main(void) {
  fragTexCoord = inTexCoord;
  mat4 modelViewMatrix = viewMatrix * modelMatrix;
  gl_Position = (projMatrix * modelViewMatrix) * vec4(inVertex, 1.0);

  mat3 normalMatrix = mat3(transpose(inverse(modelViewMatrix)));
  vec3 vLight = (viewMatrix * vec4(0.0, 0.0, -20.0, 1.0)).xyz;
  vec3 vPos = (modelViewMatrix * vec4(inVertex, 1.0)).xyz;
  vec3 vNormal = normalize(normalMatrix * inNormal);
  vec3 vLightDir = normalize(vLight - vPos);

  vec3 diffuse = max(dot(vLightDir, vNormal), 0.0) * vec3(1.0);
  fragColor = vec4(diffuse + vec3(0.1), 1.0);
}

Ну нежели вот такой кусок кода без шейдеров посчитать нельзя ?
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 12.02.2021 17:46:11

Повторение мать .. (неразборчиво) ...ученья!" :wink:
Думал что текстуры давно пройденный этап забытый за ненадобностью и крайней простотой решения связанных с ним проблем .
Ага ...
Во первых все примеры в сети рассчитаны на "старые добрые" 32-бита (а ВиАр-ка давно плотно подсажена на 64-бита).
Во вторых нужно нати способ решить проблемы с загрузкой текстур (желательно чуть менее тупо чем в примерах к Лазарусу
В третьих среда внутри "ВиАр экосистемы" довольно "токсична " и не всякий олдскульный прием прокатит.
Но два дня "посыпания головы пеплом" и "промышленной археологии в сети" завершись ( ТАДАМ! ) во таким результом .

ИзображениеИзображение

Виртуальный экран пока только "нарисован на куске старого холста" но это ерунда! Главное что корабль плывет ! :idea:
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 14.02.2021 02:52:53

Что добавил ? Да почти ничего ... Только вместо простой картинки грузится стерео-пара ..
В шлеме картинка трехмерная получается ... Понимать нужно ! :D
ИзображениеИзображение

"Скрин из будущего" - реальной поддержки контроллера в моей программе пока нет, но ее можно "одолжить" у SteamVR.
ИзображениеИзображение

Добавлено спустя 22 часа 44 минуты 17 секунд:
Полный урбанизм ! :D
ИзображениеИзображение

ИзображениеИзображение
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 17.02.2021 09:19:50

Вообщем как известно полный "уход в ВиАр" мрачный эскапизм есть . (В моем случае даже обсуждение на этом форуме какое-то беспредметное получается ) Так что решил я это дело исправить добавив "не виртуальный " режим по ключу .
(project1.exe /NVR) С "пылу жару" получилось не очень . (Что-то с освещением не то )
ИзображениеИзображение
Сама тестовая "ВиАр / Не-ВиАр" техно-демка вот (ВиАр режим работает при запуске без ключа ).
ИзображениеИзображение

Bin_6_7_2.7z Размер: 6,1 МБ

"Но отступать не куда... " и т.п.
Так что решил я пока разделить вр и не вр (главное чтобы мой рендер был один и тот-же для обоих версий )
Заготовка под тесты ВиАр без ВиАр выглядит так
ИзображениеИзображение

Отдельная (то биш 2д "для обычных мониторов" ) "быстро возведенная" техно-демка тут:
(В пакете находится две Виндовые версии для 32-х и 64 -х битных систем исходников пока не выкладываю ( инициализация собрана "с мира по нитке" и содержит кучу закомментированного хлама - нужно эти "Авдеевы конюшни" чистить.)
NoVr_test_32and64_Вin001.7z Размер: 24,5 МБ Объектов: 100
Управление клавишам и мышкой . Малость глючное но главное что оно все-же есть. :idea:
32 разрядная версия проверена на реальной Вин 7
Управление почти как шутере :
a и d - "стрейф" (w и s по ошибке и тоже самое )

q и e - "наезд камеры" (масштаб )

стрелки - поворот головы (при пороте вверх и вниз есть загадочный упор ).

мышь - тыкаем в окно зажимаем правую кнопку "в влево в право" поворот "вверх и вниз"- масштаб
(Крутит довольно резво и сходу может "сделать темно" Без паники ! Акуратно "в влево в право" и все вернется )

("что-то" еще делают 1-2 должен был быть поворот "по тангажу", а что получилось "один Аллах знает" )

Выходить строго по ESC ( Иначе будет "зомби процесс" в память (ничего не делает просто немного места в памяти занимает ) - "прелесть" от бывшей консольной программы "с погашенным" окном консоли, кстати на будущее полезный приколи из серии "как делать резидентную программу, но при этом не службу(сервис)" )

Но вообщем для собранной где-то за час техно-демки это довольно неплохой результат и интерактивность.
(И то больше всего возился изготовлением отдельных сборок для 32-х и 64-х разрядных ОС )

Добавлено спустя 20 часов 56 минут 40 секунд:
Поверил демку в шлеме, стерео на месте! И я понял почему на скинах его не было. Все просто ! Все скрины были сняты в режиме эмуляции где разумеется и кто не озаботился передачей в программы данных о смещении координатной матрицы для каждого глаза. ( Ведь по идее этого все равно никто не увидит )
Правильный скрин.... (По краям стереопары четко видно смещение )
ИзображениеИзображение
Последний раз редактировалось Alex2013 23.02.2021 03:16:47, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 23.02.2021 03:05:22

Совмещение OpenGLContext и OpenVR!

ИзображениеИзображение

ИзображениеИзображение

ИзображениеИзображение

:arrow: GL_Select03_VR_02_Bin.7z Размер: 1 МБ Win64 :idea:

Зы
"Совмещение" пока что неполное (требуется лишняя glfw3.dll и приходится "хлопать" окном glfw при старте (+ появляется окно консоли но это мелочь и реально нужно для отладки ) и нет прямого отображения от ВиАр подсистемы. Но и то что есть производит совсем неплохое впечатление! "Вот тебе и Карл!" Один мегабайт в архиве ! :idea: )
Последний раз редактировалось Alex2013 24.02.2021 15:33:27, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 24.02.2021 14:51:42

Совершенству нет предела ! :idea: :wink:
ИзображениеИзображение
Добавил
1 "Перекрестие прицела"
2 "Управление мышкой и клавишами в ВиАр"
2 "Режим синхронизации с ВиАр"

Вот так это смотрится в ВиАр режиме.
ИзображениеИзображение

Теперь "Разбор пролетов" ! :idea:
1 "Перекрестие прицела" сделано не просто так, а для выбора объекта "взглядом"(Для теста сделал по "Энтеру" )...
Работает, но только не ВиАр режиме и почему от чего непонятно ... (Переписал три раз и идеи просто кончились )

2 "Управление мышкой и клавишами в ВиАр" в общем с незначительными замечаниями работает .

3 "Синхронизация" экранного рендера с ВиАр работает почти идеально (Оказась что делается это до обидного просто... и как я сразу не догадался, это просто "уму не постижимо"... :wink: ). (Это не прямое "отображение" но его замена хотя третий рендер для одной и той же картинки это уже малость "избыточно" (Хорошо что я об этом подумал и есть штатная возможность выключать "лишний рендер на экран" ))

4 Расчет FPS по прежнему кривой (Хотя похоже вычисление производительности является узким местом не только для моей программы но и для SteamVR (если и верить графику на втором скрине то даже в режиме эмуляции, производительность почти идеальная - Ага аж два раза!) + мой счетчик явно не умеет считать FPS выше 30 .
Зы
Бинарник пока не выкладываю бо "выбор объекта взглядом" в ВиАр (точнее при включении "синхронизации" ) пока что глючит немилосердно .
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Re: OpenVR for Lazarus (Программирование VR на паскале)

Сообщение Alex2013 » 26.02.2021 15:57:07

"Очередные 4000 ведер воды !" :wink:
ИзображениеИзображение
1 Поправлено управление
2 Немного оптимизировал рендер схемы
3 Счетчик FPS верет меньше.
4 Галка Flicker ("Мерцание" ) бережет нервы.
5 И самое главное в этой версии есть выбор "чипов" в ВиАр режиме .
(Заточено на перекрестие прицела и Энтер, но можно и мышкой хотя "мышиного курсора" в виар пока не видно, но его точно не проблема добавить )

На это раз бинарник техно-демки прилагается (Возможно скоро выложу и исходники )
:arrow: GL_Select03_VR_05_Bin.7z Размер: 1 МБ Win64 :idea:
Зы
"Разбор пролетов" ! :idea:
Есть редкое трудноуловимое "заикание" при выборе чипа в ВиАр ( но программа его все равно успешно проскакивает )
Два дня возился с "выбором в ВиАр" оказались что достаточно "забить болт" на GL_PROJECTION и все заработало .
(Вот уж точно именно то ощущение "матрица достала меня "! :idea: )

Добавлено спустя 18 минут 44 секунды:
Зы Зы
Глюк с "заиканием" отловлен ! ( Возникает при первом клике "в пустоту" - наверное просто где-то что-то не верно инициализируется... )
Alex2013
долгожитель
 
Сообщения: 2025
Зарегистрирован: 03.04.2013 11:59:44

Пред.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1

Рейтинг@Mail.ru