-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhancements and Refactoring for XR Runtimes Integration #149
Enhancements and Refactoring for XR Runtimes Integration #149
Commits on Dec 27, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 38e793f - Browse repository at this point
Copy the full SHA 38e793fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4025985 - Browse repository at this point
Copy the full SHA 4025985View commit details -
ENH: Remove interactor style GetMappedAction available in base class
The function `GetMappedAction()` is added to the vtkVRInteractorStyle base class through MR-10784. See https://gitlab.kitware.com/vtk/vtk/-/merge_requests/10784
Configuration menu - View commit details
-
Copy full SHA for 833aa02 - Browse repository at this point
Copy the full SHA 833aa02View commit details -
Configuration menu - View commit details
-
Copy full SHA for 986a439 - Browse repository at this point
Copy the full SHA 986a439View commit details -
Configuration menu - View commit details
-
Copy full SHA for d1a4d40 - Browse repository at this point
Copy the full SHA d1a4d40View commit details -
ENH: Remove obsolete "GestureEnabledButtons" ivar from interactor class
Removes "GestureEnabledButtons" ivar that became obsolete following these commits: * c5c6d6f ("BUG: Restore complex gesture support", 2023-01-29), * 22eba9f ("BUG: Fix integration with updated Slicer event delegation and VTK OpenVR API (KitwareMedical#131)", 2023-12-21) * 0fa6102 ("BUG: Ensure handling of gesture triggers the "End" event", 2023-12-20) * 512efe6 ("BUG: Do not report "Unrecognized device" if handling complex gesture", 2023-12-20) For reference, it was originally introduced in 43bef4b ("ENH: Make trigger button configurable", 2019-01-11).
Configuration menu - View commit details
-
Copy full SHA for dee0fb2 - Browse repository at this point
Copy the full SHA dee0fb2View commit details -
ENH: Remove interactor GetCurrentGesture available in base class
The function `GetCurrentGesture()` is added to the vtkVRRenderWindowInteractor base class through MR-10786. See https://gitlab.kitware.com/vtk/vtk/-/merge_requests/10786
Configuration menu - View commit details
-
Copy full SHA for 50330d2 - Browse repository at this point
Copy the full SHA 50330d2View commit details
Commits on Dec 28, 2023
-
Configuration menu - View commit details
-
Copy full SHA for c1c7959 - Browse repository at this point
Copy the full SHA c1c7959View commit details -
ENH: Relocate CalculateCombinedControllerPose" into logic class
Since OpenXR and OpenVR runtime each require their own instance of interactor style, this commit relocates is a step toward reducing the amount of code that will be duplicated.
Configuration menu - View commit details
-
Copy full SHA for 3a9480f - Browse repository at this point
Copy the full SHA 3a9480fView commit details -
ENH: Relocate "GestureButton" configuration functions to logic class
Since OpenXR and OpenVR runtime each require their own instance of interactor style, this commit is a step toward reducing the amount of code specific to the interactor. The is made possible after the following vtkOpenVRRenderWindowInteractor updates: * Declare AddAction() functions as virtual. See https://gitlab.kitware.com/vtk/vtk/-/merge_requests/10785 * Mark ComplexGesture recognition functions as public. See https://gitlab.kitware.com/vtk/vtk/-/merge_requests/10786 For reference, the "GestureButton" configuration functions were introduced through these commites: * 43bef4b ("ENH: Make trigger button configurable", 2019-01-11) * e268168 ("ENH: Add python-accessible functions to capture vr controller events, associate buttons with gestures and enable/disable interaction.", 2019-05-30)
Configuration menu - View commit details
-
Copy full SHA for ed70b61 - Browse repository at this point
Copy the full SHA ed70b61View commit details -
ENH: Add vtkVirtualRealityComplexGestureRecognizer
Update the RenderWindowInteractor to use the recognizer. This will allow to have dedicated interactor for OpenVR and OpenXR runtime wihout any code duplication.
Configuration menu - View commit details
-
Copy full SHA for 957b261 - Browse repository at this point
Copy the full SHA 957b261View commit details -
DOC: Removing obsolete comments related to original interactor debugging
Following 22eba9f (BUG: Fix integration with updated Slicer event delegation and VTK OpenVR API), the VirtualReality interactor style derives from `vtkOpenVRInteractorStyle` and all the upstream capabilities are now available.
Configuration menu - View commit details
-
Copy full SHA for 85843cb - Browse repository at this point
Copy the full SHA 85843cbView commit details -
ENH: Cleanup createRenderWindow re-ordering calls and adding comments
Also removes redundant call `InteractorStyle->SetInteractor(this->Interactor)` Calling `Interactor->SetInteractorStyle(this->InteractorStyle)` is sufficient.
Configuration menu - View commit details
-
Copy full SHA for 1ece06b - Browse repository at this point
Copy the full SHA 1ece06bView commit details
Commits on Dec 29, 2023
-
ENH: Add vtkVirtualRealityViewInteractorStyleDelegate
Update the InteractorStyle to use a delegate implementing the common logic related to processing of the "Pinch3D" complex gesture, handling of the "PositionProp" interaction and update of the view magnification. This will allow to have dedicated interactor styles for OpenVR and OpenXR runtime without code duplication.
Configuration menu - View commit details
-
Copy full SHA for 3b51503 - Browse repository at this point
Copy the full SHA 3b51503View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8b5557f - Browse repository at this point
Copy the full SHA 8b5557fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7787292 - Browse repository at this point
Copy the full SHA 7787292View commit details -
Configuration menu - View commit details
-
Copy full SHA for b718296 - Browse repository at this point
Copy the full SHA b718296View commit details -
Group headers and remove unused ones. Consistently use "VR [Logic|MRML|MRMLDM|Widgets] includes" comment to introduce headers from this extension. Re-order include groups and sort alphabetically within groups. Remove `vr::TrackedDevicePose_t` forward declaration that became obsolete following commit 0c8c2e8 ("ENH: Decouple update of transform node matrix and attributes", 2023-12-26)
Configuration menu - View commit details
-
Copy full SHA for 23d1a00 - Browse repository at this point
Copy the full SHA 23d1a00View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3d8132c - Browse repository at this point
Copy the full SHA 3d8132cView commit details -
Configuration menu - View commit details
-
Copy full SHA for e2d3ba6 - Browse repository at this point
Copy the full SHA e2d3ba6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 39ba1c8 - Browse repository at this point
Copy the full SHA 39ba1c8View commit details -
ENH: Associate VirtualRealityLogic with VirtualRealityView
This is done anticipating subsequent refactoring in which the computation of the ActionManifestPath will be moved to the logic.
Configuration menu - View commit details
-
Copy full SHA for 290567a - Browse repository at this point
Copy the full SHA 290567aView commit details
Commits on Dec 30, 2023
-
ENH: Add support for runtime-specific action manifest path
Update VirtualReality logic adding `ComputeActionManifestPath()` utility function and update VirtualRealityView to compute the path based on the XR runtime. To support computing the path based on the module install state, the `ModuleInstalled` property was also added.
Configuration menu - View commit details
-
Copy full SHA for 1684fa8 - Browse repository at this point
Copy the full SHA 1684fa8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0dab065 - Browse repository at this point
Copy the full SHA 0dab065View commit details -
Configuration menu - View commit details
-
Copy full SHA for 42c2ec8 - Browse repository at this point
Copy the full SHA 42c2ec8View commit details -
ENH: Update "createRenderWindow()" to internally instantiate objects …
…base on XRRuntime
Configuration menu - View commit details
-
Copy full SHA for f1dd001 - Browse repository at this point
Copy the full SHA f1dd001View commit details -
ENH: Consolidate & simplify logic for RenderWindow creation
This commit streamlines the process of creating a RenderWindow in the qMRMLVirtualRealityView class by making several improvements: - Reorganize the update of QCursor in the `createRenderWindow()` function around the time-consuming `RenderWindow->Initialize()` call. - Set the view node's Error status directly within `createRenderWindow()`, and check for view node errors before returning from `updateWidgetFromMRML()`. - Enhance `destroyRenderWindow()` to gracefully handle calls without instantiated objects. - Update `createRenderWindow()` to set a view node error if the XR runtime is undefined and RenderWindow creation did not occur.
Configuration menu - View commit details
-
Copy full SHA for ce0c1bc - Browse repository at this point
Copy the full SHA ce0c1bcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 12b6201 - Browse repository at this point
Copy the full SHA 12b6201View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1ed0776 - Browse repository at this point
Copy the full SHA 1ed0776View commit details -
Configuration menu - View commit details
-
Copy full SHA for 139daa5 - Browse repository at this point
Copy the full SHA 139daa5View commit details -
ENH: Initialize XR Runtime based on the corresponding view node property
Since we systematically attempt to initialize the runtime if it is "UndefinedXRRuntime" or if it has changed, this commit also adds support for checking for the maximum initialization attempts and avoid recursion.
Configuration menu - View commit details
-
Copy full SHA for ab512ad - Browse repository at this point
Copy the full SHA ab512adView commit details -
Configuration menu - View commit details
-
Copy full SHA for c7a6cb1 - Browse repository at this point
Copy the full SHA c7a6cb1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 107a105 - Browse repository at this point
Copy the full SHA 107a105View commit details -
ENH: Update UI with XR Runtime selection combox
Users can now conveniently select and update the current XR Runtime.
Configuration menu - View commit details
-
Copy full SHA for fe6eb83 - Browse repository at this point
Copy the full SHA fe6eb83View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7dae050 - Browse repository at this point
Copy the full SHA 7dae050View commit details -
ENH: Eliminate explicit OpenVR dependency in TransformWidget
This commit removes the explicit dependency on the "openvr.h" header in the TransformWidget. However, it's essential to note that tracking results are not standardized, and the status will consistently be reported as "off" for XR runtimes other than OpenVR.
Configuration menu - View commit details
-
Copy full SHA for 7f3e673 - Browse repository at this point
Copy the full SHA 7f3e673View commit details -
ENH: Simplify event loop introducing shouldConsiderQuickViewMotion()
For reference, the function was originally introduced in commit 46b252d ("Added progressive rendering", 2018-04-20) Also renamed ivar from `viewUpDirectionChangeSpeed` to `viewUpChangeSpeed`
Configuration menu - View commit details
-
Copy full SHA for 3b94848 - Browse repository at this point
Copy the full SHA 3b94848View commit details -
ENH: Improve initialization process robustness using `GetVRInitialize…
…d()` Since having the head-mounted display (HMD) connected may not always be a good proxy to check if the initialization succeeded, we instead swith to the dedicated `GetVRInitialized` function available since commit Kitware/VTK@bddd94efd3 ("Improve OpenVR/OpenXR module and test and enable OpenXR in CI", 2023-01-11) Moreover, the determination of whether the event loop should run has been refined by relying on the GetVRInitialized function as the primary criterion. In the case of the OpenVR runtime, the use of GetHMD is retained through the introduction of the `hmdConnected` internal variable for enhanced flexibility.
Configuration menu - View commit details
-
Copy full SHA for e0fe654 - Browse repository at this point
Copy the full SHA e0fe654View commit details -
ENH: Introduce CMake option for toggling "OpenVR" support
- Introduce the CMake option `SlicerVirtualReality_HAS_OPENVR_SUPPORT`, initialized to OFF on macOS. - Introduce `vtkMRMLVirtualRealityConfigure.h`, a configurable header facilitating conditional compilation based on the presence of the macro `SlicerVirtualReality_HAS_OPENVR_SUPPORT`. - Update `vtkVirtualRealityViewInteractorObserver::GetInteractorStyleDelegate` to dynamically return the current delegate based on the availability of OpenVR support. - Ensure that when OpenVR support is disabled, proper linkage against the `VTK::RenderingVR` target is maintained, providing a backend-agnostic interface.
Configuration menu - View commit details
-
Copy full SHA for db20342 - Browse repository at this point
Copy the full SHA db20342View commit details -
Configuration menu - View commit details
-
Copy full SHA for fa756b0 - Browse repository at this point
Copy the full SHA fa756b0View commit details -
ENH: Add support for "OpenXR" XR runtime
- Add SlicerVirtualReality_HAS_OPENXR_SUPPORT CMake option - Add OpenXR-SDK and vtkRenderingOpenXR external projects - Add OpenXR specialized interactor style class for. - Add OpenXR specialized interactor class. Thanks to the shared `vtkVirtualRealityComplexGestureRecognizer`, there is no duplicated code. - Add OpenXR specialized interactor style class. Thanks to the shared `vtkVirtualRealityViewInteractorStyleDelegate`, there is no duplicated code. - Update vtkSlicerVirtualRealityLogic::ComputeActionManifestPath support for `OpenXR`. - Update `vtkMRMLVirtualRealityViewNode` adding `OpenXR` to `XRRuntimeType` enum - Update `qMRMLVirtualRealityView::createRenderWindow` to instantiate `vtkOpenXR*` classes - Update `qMRMLVirtualRealityView::currentXRRuntime` to check for OpenXR
Configuration menu - View commit details
-
Copy full SHA for e60325e - Browse repository at this point
Copy the full SHA e60325eView commit details