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):
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
- Windows
- Linux
- macOS
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ł:
- Standardowe wymagania dla kompilacji FreeCADa: Linux, Windows,
- OpenVR SDK github.com/ValveSoftware/openvr,
- Opcja cmake BUILD_OPENVR ustawiona (np. z użyciem cmake-gui) na ON (podczas wywołania w trybie tekstowym -DBUILD_OPENVR=ON),
- Opcja BUILD_QT5 ustawiona na ON - implementacja korzysta z QOpenGLWidget wprowadzonego w Qt 5.4,
- 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,
- 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,
- 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,
- 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.

Wymagania do uruchomienia:
- Należy podłączyć gogle, uruchomić Steam i SteamVR,
- Uruchomić FreeCAD, otworzyć wybrany model i wybrać z menu View pozycję FreeCAD-OpenVR,
- Gdy tylko SteamVR wykryje aktywność okularów, powinno pojawić się okna podglądu i obraz w samych goglach,
- 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.
Nawigacja:
Implementacja obsługuje tryb pokoju, czyli można swobodnie poruszać się w obszarze modelu. Dodatkowo można wykorzystać kontrolery do nawigacji:
- Gałka analogowa lub gładzik pierwszego kontrolera pozwala przesuwać się liniowo - poruszamy się wzdłuż kierunku wskazywanego przez kontroler,
- 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.