FreeCAD OpenVR/OpenXR - obsługa gogli wirtualnej rzeczywistości

Polish forum

Moderators: PrzemoF, kaktus

Forum rules
Regulamin forum i pomocne informacje

WAŻNE! Przeczytaj zanim poprosisz o pomoc
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

FreeCAD OpenVR/OpenXR - obsługa gogli wirtualnej rzeczywistości

Post by kwahoo »

Pierwotnie napisałem tę notkę na prywatnej stronie, ale z racji, że jej nikt nie czyta, to postanowiłem notkę skopiować tutaj.Wątek na anglojęzycznym Forum FreeCADa

Program FreeCAD można było do tej pory skompilować z obsługą okularów wirtualnej rzeczywistości Oculus Rift. To jednak wykluczało z użytkowników innych gogli i systemów operacyjnych. Implementacja nie wykorzystywała też kontrolerów ruchowych. Dlatego postanowiłem dodać do programu obsługę OpenVR. Na początek małe demo (okno podglądu przedstawia widok lewego oka):

phpBB [video]


Dzięki OpenVR możliwa jest obsługa gogli m.in.:
  • Oculus Rift
  • HTC Vive
  • Valve Index
  • okularów standardu Windows Mixed Reality, np. Samsung Odyssey
OpenVR działa na systemach operacyjnych:
  • Windows
  • Linux
  • macOS
OpenVR zapewnia również obsługę kontrolerów ruchowych.

Implementacja OpenVR w programie FreeCAD

Implementacja zapewnia obsługę trybu pokoju oraz dodatkowego ruchu z wykorzystaniem kontrolerów.

Binarną wersję programu dla Windows można pobrać z github.com/kwahoo2/FreeCAD/releases/tag/0.19_preVR-1

A następnie uruchomić FreeCAD.exe z katalogu bin. Wydanie dla Linuksa w postaci AppImage planuję wykonać później. można pobrać z tego samego miejsca

Kod źródłowy można znaleźć tutaj github.com/kwahoo2/FreeCAD

Nie ma w nim odwołań specyficznych dla systemu operacyjnego, stąd można go skompilować zarówno na Linuksie jak i Windows.

Wymagania do kompilacji z źródeł:
  1. Standardowe wymagania dla kompilacji FreeCADa: Linux, Windows,
  2. OpenVR SDK github.com/ValveSoftware/openvr,
  3. Opcja cmake BUILD_OPENVR ustawiona (np. z użyciem cmake-gui) na ON (podczas wywołania w trybie tekstowym -DBUILD_OPENVR=ON),
  4. Opcja BUILD_QT5 ustawiona na ON - implementacja korzysta z QOpenGLWidget wprowadzonego w Qt 5.4,
  5. Może być konieczne określenie katalogu plików nagłówkowych z użyciem opcji OpenVR_INCLUDE_DIR - dla Linuksa będzie to np. /usr/local/include/openvr a dla Windows C:\Program Files (x86)\OpenVRSDK\include,
  6. Może być konieczne określenie pliku biblioteki OpenVR - na Linuksie np. /usr/local/lib/libopenvr_api.a, na Windows lokalizacja_pobranego_sdk\lib\win64\openvr_api.lib,
  7. Dodatkowo w przypadku Windows do katalogu z FreeCADem, obok FreeCAD.exe trzeba skopiować plik openvr_api.dll, który można znaleźć w katalogu openvr\bin\win64,
  8. Ważne żeby na Windows ustalić kompilator w cmake na 64-bitowy, domyślnie konfiguracja jest dokonywana dla 32-bitowego, nawet gdy system jest 64-bitowy. Kompilacja dla 32-bitów spowoduje błąd konsolidatora, bo biblioteki FreeCADLibs są obecnie udostępniane wyłącznie w wersji 64-bitowej.
Image

Wymagania do uruchomienia:
  1. Należy podłączyć gogle, uruchomić Steam i SteamVR,
  2. Uruchomić FreeCAD, otworzyć wybrany model i wybrać z menu View pozycję FreeCAD-OpenVR,
  3. Gdy tylko SteamVR wykryje aktywność okularów, powinno pojawić się okna podglądu i obraz w samych goglach,
  4. Chcąc obejrzeć inny model/plik trzeba ponownie wybrać FreeCAD-OpenVR (kończy to rendering VR) i po otwarciu nowego modelu jeszcze raz użyć FreeCAD-OpenVR.
Teoretycznie program powinien dać się skompilować również pod macOS, ale niestety nie miałem możliwości tego sprawdzić.

Nawigacja:
Implementacja obsługuje tryb pokoju, czyli można swobodnie poruszać się w obszarze modelu. Dodatkowo można wykorzystać kontrolery do nawigacji:
  1. Gałka analogowa lub gładzik pierwszego kontrolera pozwala przesuwać się liniowo - poruszamy się wzdłuż kierunku wskazywanego przez kontroler,
  2. Gałka analogowa lub gładzik drugiego kontrolera pozwala obracać "świat" wokół dwóch osi, środkiem obrotu jest położenie kontrolera.

Przyszły rozwój
W najbliższym czasie chciałbym popracować nad wydajnością i jakością wyświetlania (wygładzanie krawędzi).

Prototyp w Pythonie
Dostępny jest też prototyp implementacji w Pythonie, który napisałem przez zabraniem się z pisanie kodu w C++. Można go pobrać stąd github.com/kwahoo2/freecad-pyopenvr i wystarczy skopiować do konsoli FreeCADa. Wymaga on Pythona wersji 3.5 lub nowszej, pyopenvr, numpy, pivy-coin i PySDL2. Prototyp nie obsługuje kontrolerów.
Last edited by kwahoo on Wed Jul 29, 2020 4:02 pm, edited 3 times in total.
User avatar
arturromarr
Posts: 326
Joined: Sat Jun 24, 2017 9:32 pm
Location: Poland

Re: FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Post by arturromarr »

Bajkowa rzeczywistość. :)
Jaki sprzęt trzeba do tego mieć?
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Post by kwahoo »

Jeśli chodzi o gogle + kontrolery, to zaczyna się od zestawów Windows Mixed Reality, np. Samsung Oddysey za 250 dolarów. Mają one jednak ograniczoną dostępność w Polsce (dlatego podaję cenę w dolarach) i działają tylko na Windows. Na drugim końcu skali jest Valve Index za 4670 zł. Pomimo wysokiej ceny jest wyprzedany do końca roku.

Jeśli chodzi o samego PC, to w większości zastosowań rozrywkowych podawanym minimum jest Geforce 1060/Radeon 580. Myślę jednak, że dla zabawy z FreeCAD-em i niezbyt dużymi modelami, powinno wystarczyć coś słabszego.
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Post by kwahoo »

W końcu udało mi się zrobić paczki dla Linuksa (AppImage) i Windows z użyciem skryptu autorstwa realthundera. Można je pobrać stąd: https://github.com/kwahoo2/FreeCAD/rele ... 19_preVR-1

Z racji, że powinniśmy tylko wspierać 100% otwarte/wolne standardy, nie mam zamiaru dążyć do włączenia rozszerzenia w obecnej formie do głównej gałęzi FreeCAD-a. Najbliższym celem jest próba przeniesienia rozszerzenia na OpenXR, otwarty standard ustanowiony przez Khronos Group. OpenXR na Linuksie implementuje Monado, a na Windows Oculus Runtime i Windows Mixed Reality.

Nigdzie nie mogłem znaleźć w dokumentacji Monado informacji o obsłudze Valve Index (mój HMD), ale skoro xrdesktop działa, to musi obsługiwać. Szczególnie, że widać go w kodzie vive_prober.c
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Post by kwahoo »

kwahoo wrote: Tue Dec 31, 2019 2:53 pm Z racji, że powinniśmy tylko wspierać 100% otwarte/wolne standardy, nie mam zamiaru dążyć do włączenia rozszerzenia w obecnej formie do głównej gałęzi FreeCAD-a. Najbliższym celem jest próba przeniesienia rozszerzenia na OpenXR, otwarty standard ustanowiony przez Khronos Group. OpenXR na Linuksie implementuje Monado, a na Windows Oculus Runtime i Windows Mixed Reality.
Dodałem wstępną obsługę OpenXR https://forum.freecadweb.org/viewtopic. ... 03#p379203

Na razie tylko sprawdzałem na działanie na Linuksie/Monado.
Wstrzymuję dalsze prace do czasu wprowadzenia obsługi OpenXR przez SteamVR.
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Post by kwahoo »

kwahoo wrote: Sun Mar 29, 2020 1:39 pm Wstrzymuję dalsze prace do czasu wprowadzenia obsługi OpenXR przez SteamVR.
Pozwolę sobie ogłosić, że SteamVR obsługuje teraz OpenXR, co umożliwiło mi dalsze prace nad OpenXR w FreeCADzie.

phpBB [video]


Planuję stworzyć AppImage i windowsową paczkę w ciągu kilku najbliższych dni.

Edycja:
Paczka binarna dla Windows i AppImage dla Linuksa.

Edycia 2:
Zaczynam powoli dłubać kwestię interakcji.
https://forum.freecadweb.org/viewtopic. ... 40#p477174
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: FreeCAD OpenVR/OpenXR - obsługa gogli wirtualnej rzeczywistości

Post by kwahoo »

Są tutaj jacyś użytkownicy Windows Mixed Reality? Mam dobre wieści, jak zostało wykryte tutaj, FreeCAD może działać z WMR. Tylko musi być uruchamiany z użyciem SteamVR, a nie bezpośrednio z WMR.

Nowe wydanie:
https://github.com/kwahoo2/FreeCAD/rele ... 0.20_preXR

phpBB [video]
User avatar
arturromarr
Posts: 326
Joined: Sat Jun 24, 2017 9:32 pm
Location: Poland

Re: FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Post by arturromarr »

kwahoo wrote: Wed Dec 11, 2019 4:30 pm Jeśli chodzi o gogle + kontrolery, to zaczyna się od zestawów Windows Mixed Reality, np. Samsung Oddysey za 250 dolarów. Mają one jednak ograniczoną dostępność w Polsce (dlatego podaję cenę w dolarach) i działają tylko na Windows. Na drugim końcu skali jest Valve Index za 4670 zł.
Możesz polecić jakiś przystępny cenowo sprzęt, który działa pod Linuxem?
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Post by kwahoo »

arturromarr wrote: Wed Jun 14, 2023 7:59 pm Możesz polecić jakiś przystępny cenowo sprzęt, który działa pod Linuxem?
Niestety nie mogę. Działa tylko pierwsze Vive (czyli nie Cosmos itp.) i Index. Po za tym pozostaje kombinowanie z streamingiem, czyli ALVR.

No inżynieria wsteczna jak wspomniane WMR przez Monado.
grzesiug
Posts: 11
Joined: Wed Jun 19, 2019 8:22 am

Re: FreeCAD OpenVR/OpenXR - obsługa gogli wirtualnej rzeczywistości

Post by grzesiug »

Cześć
Muszę powiedzieć, że świetna robota z tym VR. Wielkie dzięki. Jeśli planowane są dalsze prace to proszę o info, bo jestem bardzo zainteresowany tematem.
Podgląd VR uruchomiłem z goglami Meta Quest 2, na laptopie z grafiką Radeon Vega 10.
Post Reply