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

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

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

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

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

"Очередное ведро воды..."
[url][img]WMR_PROG_04_500.jpg[/img][/url]
Пытаюсь разобраться с поворотом камеры (что довольно сильно отличается от обычного поворота модели ) и треккингом головы через gluLookAt .
По вертикали что-то отдаленно похожее на правду выходит(пусть и несинхронно с "эталонным кубическим фононном" ) а при повороте башки в горизонтальной плоскости почему-то получаю "вращение шестеренки".... :roll: :idea:
Зы
Выкладывать свои "полуфабрикаты" пока не буду . Во первых стыдно (типа "даже рыбы засмеют ") , а вторых пока собственно своего кода очень мало так что тем кто захочет попробовать проще "курить исходный пример" который полностью рабочий ... Но может быть это изменится, когда я вычищаю из демки по возможности весь "чужой код ".
Последний раз редактировалось Alex2013 04.01.2023 11:19:48, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 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 достаточно понятным примером .
[url][img]223_.jpg[/img][/url]

Благодаря чему немного продвинулся в использовании данных от трекинга.
[url][img]WMR_PROG_06_1_500.jpg[/img][/url]
(Как видно модель шестеренки полотно лежи на кубе и главное сохраняет позицию при вращении головы ... )
Но увы не все так идеально как бы этого мне хотелось ! Куб и шестеренка при повороте головы влево и в право "не синхронизованы" (то есть "пространственная метрика" для кубов и моей модели все-же намного разная )
Последний раз редактировалось Alex2013 04.01.2023 11:20:59, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

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

Немного разобраться с вращением и попутно научиться прятать модель в glList - очень полезная фича!
(эдакий "3д спрайт" правда без динамической генерации за то процесор меньше напрягает )
[url][img]WMR_PROG_06_5_500.jpg[/img][/url]
Последний раз редактировалось Alex2013 04.01.2023 11:21:53, всего редактировалось 3 раз(а).
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

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

Alex2013 писал(а):glList - очень полезная фича!
я бы посоветовал это не писать... а то сейчас налетят и будут кричать почему ты шейдерами не пользуешься. :D
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 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
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

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

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

[url][img]WMR_PROG_06_7_500.jpg[/img][/url]

Виртуальный экран пока только "нарисован на куске старого холста" но это ерунда! Главное что корабль плывет ! :idea:
Последний раз редактировалось Alex2013 04.01.2023 11:23:07, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

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

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

"Скрин из будущего" - реальной поддержки контроллера в моей программе пока нет, но ее можно "одолжить" у SteamVR.
[url][img]MixedReality2_500.jpg[/img][/url][

Добавлено спустя 22 часа 44 минуты 17 секунд:
Полный урбанизм ! :D
[url][img]WMR_PROG_06_72_1_800.jpg[/img][/url]

[url][img]WMR_PROG_06_72_240.jpg[/img][/url]
Последний раз редактировалось Alex2013 04.01.2023 11:25:43, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

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

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

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

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

Отдельная (то биш 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 секунд:
Поверил демку в шлеме, стерео на месте! И я понял почему на скинах его не было. Все просто ! Все скрины были сняты в режиме эмуляции где разумеется и кто не озаботился передачей в программы данных о смещении координатной матрицы для каждого глаза. ( Ведь по идее этого все равно никто не увидит )
Правильный скрин.... (По краям стереопары четко видно смещение )
[url=][img]2021_02_18_AM_04_22_23_raw_500.jpg[/img]
Последний раз редактировалось Alex2013 04.01.2023 11:28:35, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

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

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

[url][img]Select3Dvr02_01_240.jpg[/img][/url]

[url][img]Select3Dvr02_02_500.jpg[/img][/url]

[url][img]Select3Dvr02_03_500.jpg[/img][/url]

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

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

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

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

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

Вот так это смотрится в ВиАр режиме.
[url][img]Select3Dvr03_03_500.jpg[/img][/url]

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

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

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

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

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

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

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

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

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

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

Сообщение Alex2013 » 04.03.2021 22:07:20

"Виртуальный десктоп ты выглядишь окей!"
Ну почти ... :idea: :wink:
Первый, а точнее второй* блин получился не комом.
*(первый был с полным обновлением текстур что просто убивало скорость )
[url][img]Select3D_test05_8_01_500.jpg[/img][/url]
Тут специально сделал скрин с "обратной стороны десктопа".

[url][img]Select3D_test05_8_03_500.jpg[/img][/url]
А это "захват окна" старого доброго "Унреал 2"

Сама техно-демка
:arrow: GL_Select05_VR_05_8_Bin.7z Размер: 3,1 МБ Win64 :idea:
Зы
"Разбор пролетов"
1 Несмотря на "перезагрузку текстур"(так и тянет написать "перезарядку патронов " :wink: ) скорость обновления "Виртуального десктопа" все еще радует мало .
2 Только что обнаружил что в свежей версии с правого боока Виртуальный экран внезапно заметно обрезан (ну думаю что это поправить не проблема ).
3 Есть возможность выбирать для "трансляции" конкретные окна , но в списке окон полная каша .

Добавлено спустя 7 часов 32 минуты 20 секунд:
Погонял в ВиАр режиме ... Вначале посмотрев на показания счетчика FPS приуныл максимум 15 "оборотов" при работе в ВиАр режиме при включенном "захвате кадров это очень мало. Но потом понял что счетчик изрядно врет! 20-30 кадров в секунду там все же местами есть . Но текстуры выводятся "на общих основаниях" сказывается на качестве

Добавлено спустя 20 часов 47 минут 4 секунды:
Анонс !
Свежая версия еще не дотестировал ...
(Делает "SBS Сепарацию" и вообще чуть оптимизирована )
[url][img]Select3D_test05_8_3_01_500.jpg[/img]

[url=][img]Select3D_test05_8_3_02_500.jpg[/img][/url]
Последний раз редактировалось Alex2013 04.01.2023 11:35:56, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 08.03.2021 03:02:38

Свежая версия о которой был анонс ...

[url][img]Select3D_test05_8_3_03_500.jpg[/img][/url]

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

Добавил галки :
1 SBS - Горизонтальная стереопара (Side-by-side) (её видно только в шлеме или режиме эмуляции )
2 Мемо ON/OFF - Включает видимость лога выделения объектов
3 EnableTrack - Активирует возможность изменения размера текстуры виртуального экрана
+ дав движка для изменения размера текстуры виртуального экрана
Последний раз редактировалось Alex2013 04.01.2023 11:36:48, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 10.03.2021 23:52:00

Очередное явление свежей версии техно-демки народу! :idea:
:arrow: GL_Select05_VR_05_8_5_Bin.7z Размер: 3,1 МБ :idea:
Добавил "супер ускорение" для "виртуального экрана" в режиме "захвата десктопа" (или отдельных окон ).
EnableTrack - теперь отключает рендер на время правки размера текстуры (можно включить принудительно но лучше этого не делать )
В режиме захвата полного десктопа есть эмуляция курсора мышки .(Зеленый крестик )

[url][img]Select3D_test05_8_4_01_500.jpg[/img][/url]

[url][img]Select3D_test05_8_4_03_500.jpg[/img][/url]

[url][img]Select3D_test05_8_5_01_500.jpg[/img][/url]
Последний раз редактировалось Alex2013 04.01.2023 11:38:22, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 20.03.2021 17:50:24

"Расширение расширяется !"

1 Эмуляция GUI (первые попытки )
[url][img]Select3D_test05_8_6_02_500.jpg[/img][/url]

2 Загрузка панорамного фона.
"Владыка Кикути пишет последний Е-майл Конеко "(по мотивам книги А. Парфеновой "Ярко Алое" ) 8)
А что похоже ведь получилась... :wink: :idea:
[url][img]Select3D_test05_8_7_01_500.jpg[/img][/url]
(Опечатку уже исправил ... )

"Сова без глобуса" ( Видно каркас фоновой сферы )
[url][img]Select3D_test05_8_7_02_240.jpg[/img][/url]


:arrow: GL_Select05_VR_05_8_7_Bin.7z Размер: 3,2 МБ :idea:

Добавлено спустя 1 час 41 минуту 48 секунд:
Добавлено :
Кнопка EхТеsт - открывает окно "Расширенный тест"
В окне "Расширенный тест":
Панель 'Эмуляция GUI ' там есть галки
'Дополнительный экран' - рисует еще один "виртуальный экран"
(Оба теперь по расположены на условном "потолке" но можно повернуть камеру стрелками вверх и вниз .)
'Копировать окно' - копирует форму "Расширенный тест" на второй "виртуальный экран".
(есть показ курсора мыши с обычного десктопа, если выключено показывает картинку )
'Прозрачность ' - включает прозрачность второго "виртуального экрана".
(Движок ниже устанавливает "процент прозрачности" )
Галка 'Фоновая Сфера ' включает большую текстурированную сферу вокруг сцены.
'Загрузить другой фон' - понятное дело загружает любую картинку понятную TImage
(В интернете полно готовых 360-ти градусных панорама )

Разбор пролетов !

1 С лишней рамкой в "псевдо GUI" пока еще не разобрался.
2 Зато панорамы радуют ! Правда часть загружается "со швом" (Нечетное количество пикселей по ширине? ) .
Последний раз редактировалось Alex2013 04.01.2023 11:40:11, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru