FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Polish forum

Moderator: PrzemoF

Forum rules
Regulamin forum i pomocne informacje

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

FreeCAD OpenVR - obsługa gogli wirtualnej rzeczywistości

Postby kwahoo » Sun Dec 08, 2019 8:12 pm

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 Tue Dec 31, 2019 8:57 am, edited 1 time in total.
User avatar
arturromarr
Posts: 204
Joined: Sat Jun 24, 2017 9:32 pm

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

Postby arturromarr » Wed Dec 11, 2019 7:24 am

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

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

Postby kwahoo » 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ł. 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.
kwahoo
Posts: 263
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

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

Postby kwahoo » Tue Dec 31, 2019 2:53 pm

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