Skip to content
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

ENH: Initial VR home widget implementation #100

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jcfr
Copy link
Contributor

@jcfr jcfr commented Oct 13, 2022

This commit is intended to implement features described in #43 by integrating changes originally associated with the following branches:


Commits originally associated with branch dgmato/gui-widgets-interactions:

  • ENH: Remove unused UI widget in GUI Widgets module

  • ENH: Do not load avatar models when setting up VR pointer

  • ENH: Add new button to set up interaction Set up will include getting the VR controller transform node and applying that transform to the pointer model.

  • ENH: Add GUIWidgets module to Virtual Reality category for easy access

  • ENH: Load avatar models and transform pointer by right controller transform

  • ENH: Reorganize code and remove unused code

  • COMP: Fix build error due to Slicer API changes

  • ENH: Add new module target library vtkSlicerMarkupsModuleMRMLDisplayableManager

  • ENH: Send mouse release event to complete simulated mouse click after press event

  • ENH: Modify coordinate system for GUI widget Origin is located on the top left corner in Qt widgets.

  • ENH: Add button "Start interaction" to simulate interaction with VR pointer

  • ENH: Add module to simulate VR pointer display and movement


Commits originally associated with branch dgmato/gui-widgets-module:

  • ENH: Add buttons in GUIWidgets to show VR widgets; Fix include dirs variable in CMake

  • ENH: Add GUIWidgets module that provides in-VR Qt widget

    This is still a prototype, a few crucial features are needed:

    • Handle mouse interactions on the widget: forward events to Qt
    • Support moving the widget to arbitrary position
      • Implement outline tube and handle to grab with the controller
      • Option to keep widget floating in certain position relative to head motion (~HUD)
    • Implement laser pointer and use the intersection with these widgets as mouse interaction

    See more history: https://github.com/cpinter/VtkQWidgetTest

  • ENH: Creating and registering VR segment editor widget Creates and registers the VR segment editor widget (which can be switched to from the VR home widget)

  • BUG: Fix issues in VR home widget and the data widget

  • ENH: Creating and registering VR data module widget Creates and registers the VR data module widget (which can be switched to from the VR home widget)

  • ENH: Convert the interactor style to use the new vtkMRMLViewInteractorStyle Fix build error with Slicer-4.10

  • STYLE: Add function documentation

  • ENH: Initial VR home widget implementation

    Squashed commits (originally associated with branch dgmato/virtual-widget)

    • ENH: Create framework for registering VR modules Adds registerModule function to qMRMLVRView which can be called to create a new button for that module on the Modules bar in the VR home widget

    • ENH: Make VR home widget controls functional These changes make it so that changes in the module widget (viewable in Slicer) are reflected in the home widget (viewable in VR) and vice versa

    • ENH: Add VR optimized Qt Style Sheet This style sheet makes the text in the VR menu widget bigger, and gives the buttons and slider handles different colors for unpressed, hover, and pressed statuses.

    • ENH: Add VR home widget WIP Its UI is more or less complete but events are not handled and style sheet is needed

    • ENH: Add virtual widget from arbitrary Qt Widget !WIP!

Co-authored-by: Andras Lasso lasso@cs.queensu.ca
Co-authored-by: Csaba Pinter pinter.csaba@gmail.com
Co-authored-by: David Garcia Mato dgarciamato@gmail.com
Co-authored-by: Mohammad Rashid mohammadrashid0917@gmail.com
Co-authored-by: Sal Choueib salehchoueib@outlook.com

This commit is intended to implement features described in KitwareMedical#43
by integrating changes originally associated with the following
branches:

* dgmato/gui-widgets-interactions
  - initially developed between 2021-12-15 and 2022-05-23 by @dgmato
    with contributions from @cpinter.
  - based on the "gui-widgets-module" branch

* dgmato/gui-widgets-module
  - initially developed between 2018-10-18 and 2021-10-0523 by @cpinter
    with contributions from @dgmato, @lassoan, @SalehChoueib and @mohammadrashid0917
  - with first commit titled "ENH: Initial VR home widget implementation"
    based of "dgmato/virtual-widget" branch.

* dgmato/virtual-widget
  - initial commit contributed by @SalehChoueib on 2018-10-18 (ENH: Add virtual widget
    from arbitrary Qt Widget !WIP!)
  - follow-up development by @cpinter and @mohammadrashid0917
    between 2019-05-13 and 2019-06-13

------------
Commits originally associated with branch "dgmato/gui-widgets-interactions":

* ENH: Remove unused UI widget in GUI Widgets module

* ENH: Do not load avatar models when setting up VR pointer

* ENH: Add new button to set up interaction
  Set up will include getting the VR controller transform node and applying that transform to the pointer model.

* ENH: Add GUIWidgets module to Virtual Reality category for easy access

* ENH: Load avatar models and transform pointer by right controller transform

* ENH: Reorganize code and remove unused code

* COMP: Fix build error due to Slicer API changes

* ENH: Add new module target library
  vtkSlicerMarkupsModuleMRMLDisplayableManager

* ENH: Send mouse release event to complete simulated mouse click after press event

* ENH: Modify coordinate system for GUI widget
  Origin is located on the top left corner in Qt widgets.

* ENH: Add button "Start interaction" to simulate interaction with VR pointer

* ENH: Add module to simulate VR pointer display and movement

------------
Commits originally associated with branch "dgmato/gui-widgets-module":

* ENH: Add buttons in GUIWidgets to show VR widgets; Fix include dirs variable in CMake

* ENH: Add GUIWidgets module that provides in-VR Qt widget

  This is still a prototype, a few crucial features are needed:
  - Handle mouse interactions on the widget: forward events to Qt
  - Support moving the widget to arbitrary position
    - Implement outline tube and handle to grab with the controller
    - Option to keep widget floating in certain position relative to head motion (~HUD)
  - Implement laser pointer and use the intersection with these widgets as mouse interaction

  See more history: https://github.com/cpinter/VtkQWidgetTest

* ENH: Creating and registering VR segment editor widget
  Creates and registers the VR segment editor widget (which can be switched to from the VR home widget)

* BUG: Fix issues in VR home widget and the data widget

* ENH: Creating and registering VR data module widget
  Creates and registers the VR data module widget (which can be switched to from the VR home widget)

* ENH: Convert the interactor style to use the new vtkMRMLViewInteractorStyle
  Fix build error with Slicer-4.10

* STYLE: Add function documentation

* ENH: Initial VR home widget implementation

  Squashed commits (originally associated with branch "dgmato/virtual-widget")

  * ENH: Create framework for registering VR modules
    Adds registerModule function to qMRMLVRView which can be called to create a new button for that module on the Modules bar in the VR home widget

  * ENH: Make VR home widget controls functional
    These changes make it so that changes in the module widget (viewable in Slicer) are reflected in the home widget (viewable in VR) and vice versa

  * ENH: Add VR optimized Qt Style Sheet
    This style sheet makes the text in the VR menu widget bigger, and gives the buttons and slider handles different colors for unpressed, hover, and pressed statuses.

  * ENH: Add VR home widget WIP
    Its UI is more or less complete but events are not handled and style sheet is needed

  * ENH: Add virtual widget from arbitrary Qt Widget !WIP!

Co-authored-by: Andras Lasso <lasso@cs.queensu.ca>
Co-authored-by: Csaba Pinter <pinter.csaba@gmail.com>
Co-authored-by: David Garcia Mato <dgarciamato@gmail.com>
Co-authored-by: Mohammad Rashid <mohammadrashid0917@gmail.com>
Co-authored-by: Sal Choueib <salehchoueib@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants