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

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

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

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

Сообщение Alex2013 » 25.09.2019 14:01:55

И так думаю "время VR" пришло думаю и вполне разумным будет начать собирать информацию и делать первые эксперименты по ВиАр программированию на паскале под FPC + Lazarus .
На сегодняшний день информации не густо !
1 openVR_header.pas Хедер библиотеки openvr_api.dll
2 Где-то в дебрях интернета есть проект "PasOpenVR - Virtual Reality with Object Pascal"
https://youtu.be/-oOcRxIj9t4 (Исходников пока не нашел... )
Изображение
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Vadim » 25.09.2019 16:24:41

Alex2013 писал(а):Где-то в дебрях интернета есть проект "PasOpenVR - Virtual Reality with Object Pascal"
https://youtu.be/-oOcRxIj9t4 (Исходников пока не нашел... )

Можно у автора ролика спросить. Он кроме ю-туба ещё и в твиттере сидит.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Alex2013 » 25.09.2019 16:39:05

Пытался уже пока тщетно ... (В принципе на гагахабе есть много проектов на С++ можно просто найти несколько достаточно простых для конверсии в Лазарус - операция временами нудная но ничего особо страшного в ней нет )

Добавлено спустя 2 часа 50 минут 29 секунд:
Хм ! Внезапно даже не виснет ... (Интерфейс openVR ->SteamVR->WMR при запуске загружается )

(DLL брал от сюда https://github.com/ValveSoftware/openvr/tree/master/bin )
Все прочее стандартная "обвеска" из SteamVR и "Протала смешанной реальности" из Виндовс 10 .
КСТАТИ "Шлем виртуальной реальности" для запуска ВиАр приложений в Виндовс 10 необязателен
Код: Выделить всё
program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  openVR_header ;
Const overlayHandle :longint = 0;
  E:PEVRInitError=nil;
Var  HOverlay:Pointer;
P2: UInt32;
//  CVROverlay overlay = OpenVR.Overlay;
begin

  Writeln('Test!');
{ Код на Си....
  long overlayHandle = 0;
EVRInitError eError = EVRInitError.None;

OpenVRInterop.GetGenericInterface(OpenVR.IVROverlay_Version, ref eError);
CVRSystem system = OpenVR.Init(ref eError, EVRApplicationType.VRApplication_Overlay);

CVROverlay overlay = OpenVR.Overlay;
overlay.CreateOverlay("textureOverlay", "Picture Overlay", ref overlayHandle);
overlay.SetOverlayFromFile(overlayHandle, OverlayPath);
overlay.ShowOverlay(overlayHandle);
}
//Код на Паскале....
New(E);

E^:=TEVRInitError.EVRInitError_VRInitError_None;
HOverlay:=VR_GetGenericInterface(IVROverlay_Version,E);
P2:=VR_InitInternal(E,TEVRApplicationType.EVRApplicationType_VRApplication_Overlay);
Writeln('OpenVR RUN !!');
ReadLn;
VR_ShutdownInternal;
end.

Правда как картинку загрузить пока не понял ... (Как вот этот кусок переписать под openVR_header ? )
Код: Выделить всё
CVROverlay overlay = OpenVR.Overlay;
overlay.CreateOverlay("textureOverlay", "Picture Overlay", ref overlayHandle);
overlay.SetOverlayFromFile(overlayHandle, OverlayPath);
overlay.ShowOverlay(overlayHandle);

Тупо написать что-то вроде
Var Bitmap:TBitmap;
..
Bitmap:=TBitmap.Create;
Bitmap.Handle:=HOverlay;
Bitmap.LoadFromFile('test.bmp');
Bitmap.Refresh;
что ли ?

Добавлено спустя 20 минут 36 секунд:
[url][img]OpenVR_01_500.jpg[/img][/url]
(Пока все еще "голый лимб" SteamVR но запускается он моей программой ....)
Кстати прога автоматически завершается при закрытии SteamVR наплевав ReadLn; :shock:

Добавлено спустя 16 часов 49 минут 14 секунд:
Обнаружил вот этот похоже что ныне заброшенный проект (Там есть какие-то попытки использовать OpenVR и библиотеки для Oculus )
https://github.com/Relfos/TERRA-Engine
Последний раз редактировалось Alex2013 04.01.2023 11:13:53, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 10.10.2019 01:14:10

Короче оказалось что нужная мне библиотека давно лежит в моих архивах ...
Называется (кто бы мог подумать!.. но только не я... :wink: ) PasVulkan.VirtualReality.OpenVR.pas
Разумеется похоже придётся её "девулканизовать " но это уже ерунда !
Зы
Вообще апи вулкана тоже интересная штука тем более что у тов BeRo1985 есть полная поддержка лазаруса . :idea:
:arrow: https://github.com/BeRo1985/pasvulkan
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 21.10.2019 15:04:16

Обнаружил Oculus SDK 1.3.2 wrapper for Delphi ...
https://lyna.hateblo.jp/entry/20160506/1462461451
Что малость не то (юзает LibOVR.dll вместо OpenVR что для меня означает нужду ставить Oculus Rift Software (~20 гигов) + эмулятор Revive что для меня дикий тормоз )
Но зато есть демка!
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 28.10.2019 18:13:24

Кстати демку VRDemo из Oculus SDK 1.3.2 wrapper for Delphi я все-же запустил (правда готовый бинарник ).
Изображение
Так что Oculus SDK wrapper for Delph вполне рабочий ( Сейчас мучаюсь переводом с новой версии Дельфи на Лазарус + там много всяческих модулей найти нужно ( например Winapi.D3D11, Winapi.D3D10, Winapi.DXGI,
Winapi.DxgiFormat, Winapi.DxgiType, Winapi.D3DCommon )
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 23.12.2019 04:55:58

Обнаружил проект TrueOpenVR Пока не вполне понял что это такое и с чем его едят.. однако, код на дельфи присутствует.
Изображение
http://cyclowiki.org/wiki/True_Open_Virtual_Reality
https://github.com/TrueOpenVR
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alek_Aaz » 04.03.2020 05:55:49

Вышла такая фигня:
https://www.opennet.ru/opennews/art.shtml?num=52428
Опубликован первый выпуск проекта Monado, нацеленного на создание открытой реализации стандарта OpenXR, который определяет универсальный API для создания приложений виртуальной и дополненной реальности, а также набор прослоек для взаимодействия с оборудованием, абстрагирующим особенности конкретных устройств. Стандарт подготовлен консорциумом Khronos, развивающим также такие стандарты, как OpenGL, OpenCL и Vulkan. Код проекта написан на языке Си и распространяется под совместимой с GPL свободной лицензией Boost Software License 1.0, основанной на лицензиях BSD и MIT, но не требующей упоминания при распространении производной работы в бинарном виде.

Monado предоставляет runtime, полностью соответствующий требованиям OpenXR, который может использоваться для организации работы с виртуальной и дополненной реальности на смартфонах, планшетах, ПК и любых других устройствах. В рамках проекта развивается несколько базовых подсистем:

Движок пространственного зрения (отслеживание объектов, определение поверхностей, реконструкция мешей, распознавание жестов, отслеживания движения глаз);
Движок для отслеживания персонажа (гиростабилизатор, предсказание движений, контроллеры, оптическое отслеживание движений через камеру, отслеживание позиции на основе данных от VR-шлема);
Композитный сервер (режим прямого вывода, проброс видео, корректировка линз, композитинг, формирование рабочего пространства для одновременно работы с несколькими приложениями);
Движок взаимодействия (симуляция физических процессов, набор виджетов и тулкит для приложений виртуальной реальности);
Инструментарий (калибровка оборудования, установка границ перемещения).

Первый выпуск рассматривается как экспериментальный и нацеленный на начало знакомства разработчиков с платформой. В текущем состоянии Monado позволяет создавать приложения и отслеживать вращение на поддерживаемых устройствах при помощи OpenHMD, а также предоставляет возможность прямого отображения (Direct Mode) для вывода на устройства виртуальной реальности минуя графический стек операционной системы. Пока поддерживается работа только в Linux (поддержка других ОС ожидается в будущем).

Основные возможности:

Наличие драйверов для шлемов виртуальной реальности HDK (OSVR Hacker Developer Kit) и PlayStation VR HMD, а также для контроллеров PlayStation Move и Razor Hydra.
Возможность использования оборудования, поддерживаемого проектом OpenHMD.
Драйвер для очков дополненной реальности North Star.
Драйвер для системы отслеживания позиции Intel RealSense T265.
Набор udev-правил для настройки доступа к устройствам виртуальной реальности без получения полномочий root.
Компоненты для отслеживания движения с фреймворком для фильтрации и потоковой передачи видео.
Система отслеживания персонажа с шестью степенями свободы (6DoF, вперёд/назад, вверх/вниз, влево/вправо, рыскание, тангаж, крен) для контроллеров PSVR и PS Move.
Модули для интеграции с графическими API Vulkan и OpenGL.
Безэкранный режим (Headless).
Управление пространственным взаимодействием и точкой обзора.
Базовая поддержка синхронизации кадров и ввода информации (действий).
Готовый композитный сервер, поддерживающий прямой вывод на устройство, минуя системный X-сервер. Предоставляются шейдеры для Vive и Panotools. Имеется поддержка проекционных слоёв.
Alek_Aaz
новенький
 
Сообщения: 40
Зарегистрирован: 26.11.2007 04:13:06

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

Сообщение Alex2013 » 16.03.2020 00:37:58

Alek_Aaz писал(а):Вышла такая фигня:
https://www.opennet.ru/opennews/art.shtml?num=52428

Интересно, но причем тут FPC и Лазарус ? :roll:
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 15.07.2020 14:44:09

Ну и ошибки однако полезли "ERROR: Oasis_OpenCameraStream not found"... только мне не очень весело потому, что эта гадость перекрыла мне доступ к WMRViewer.exe ( утилита для подключения к навигационным камерам WMR шлема)
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 29.12.2020 00:16:06

Типа "Ура !"
Наконец-то внятный пример ! И сразу под FPC. :idea:
OpenVR-Pasca На github
OpenVR-Pascal на всякий пожарный на google drive
и glfw-3.3.2.bin.WIN64 там же
OpenVR-Pascal
OpenHMD-Pascal

Сходу OpenVR-Pascal demo не запустилась
(Накой черт в простой пример шйедеры пихать по ходу не очень понятно )
Но продвинулся довольно далеко ... еще 100500 ведер воды и Шура пилите гири! :wink:

H:\…0001\!VR\OpenVR-Pascal-master\demo>project1.exe
Код: Выделить всё

init OpenVR!
VR headset  found!
OpenVR runtime is installed!
VR_InitInternal:Ok
VR_GetGenericInterface Ok
VR_GetGenericInterface(IVRCompositor_026 Ok
VR_GetGenericInterface(IVRRenderModels_006): Ok
VR_GetGenericInterface(IVRInput_010): Ok
RenderTarget: 836 x 836
...

Влетает где-то тут при создании FrameBuffer-а под стерео изображение . :idea: :roll:
EyeLeftFB := CreateFrameBuffer(RenderWidth, RenderHeight);
EyeRightFB := CreateFrameBuffer(RenderWidth, RenderHeight);
Последний раз редактировалось Alex2013 16.03.2023 22:07:39, всего редактировалось 3 раз(а).
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 05.01.2021 15:14:59

Совсем "Ура !" :D :idea:
Вначале запустилось мое "народное творчество"...
[url][img]00_500.jpg[/img][/url]

Потом исходная демка...
[url][img]123_500.jpg[/img][/url]
Как я и думал дело было в версии FPC/Lazarus-а ..
Последний раз редактировалось Alex2013 04.01.2023 11:15:20, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 07.01.2021 19:49:26

Сегодня продвинулся еще немного ...
[url=[img]WMR_PROG_02_500.jpg[/img][/url]
Опять не то что хотел . Но могу наблюдать свою "доморощенную модель" в ВиАр режиме . (В шлеме все синхронно почему при получении скрина синхронизация нарушается не понятно ) Правда сцена (кубики) отдельно, модель отдельно и так и несмого понять есть ли стерео эффект для моего "бублика" или нет в исходной сцене "вращают матрицу " при повороте головы, а моя модель пока вращается отдельно то нее. Но главное то что "движуха идет" . :idea:
Последний раз редактировалось Alex2013 04.01.2023 11:16:12, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 28.01.2021 16:24:40

Продвижение продвигается ...
(Разобрался как делать "косоглазие" то есть выводить для каждого глаза свою картинку моей модели )
[url=WMR_PROG_03_500.jpg[/img]WMR_PROG_03_500.jpg[/img[/url]
Теперь нужно нарисовать правильную стереопару и разобраться с трекингом головы (моя модель вращается отдельно то "кубической сцены" что несть хорошо ).
Последний раз редактировалось Alex2013 04.01.2023 11:16:56, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение Alex2013 » 30.01.2021 15:29:01

Вывел "телеметрию" :
FPS -Пока сомнительны (тем более что на скрине WMR-эмуляция на старом ноуте )
И "матрицу преобразования координат". (С ходу правильно применить данные для "кручения модели" или привязки ее к основной сцене не получилось, но скорость вращения по осям x,y теперь зависит от "направления взгляда" )

[url][img]WMR_PROG_05_500.jpg[/img][/url]

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

След.

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

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

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

Рейтинг@Mail.ru