Skip to content

Improve usability of transform node attributes #148

@jcfr

Description

@jcfr

Issue description based on suggestions originally posted by @lassoan in #147 (comment)

Is your feature request related to a problem? Please describe.

Using the current API[^1], it is challenging to find out which devices are active or not. First, the user would have to know what device types are possible and then do trial-and-error to find an attribute that can tell if the status is valid.

The attributes may also be contradicting (if you have both HMD and Controller status attributes then which ones should be used?).

Describe the solution you'd like

  • Remove use of PoseValid, PoseStatus, <DeviceType>Active and <DeviceType>Connected attributes

  • Use attribute VirtualReality.DeviceType for devices categorized as "HMD," "Controller" or "Tracker".

  • Use attribute VirtualReality.DeviceActive attribute to indicate the validity of the transform for all device types.

Consider also adding transform status support directly into Slicer and have it become a first-class property of transform nodes (instead of note attribute):

  • It would be used in SlicerIGT extensively
  • Also useful to temporarily disable a transform to quickly see the transformed nodes with/without the transformation in effect.
  • Transformable display node could also use the information to be represented differently:
    • if invalid status: node appear more transparent and/or different color, or use identity as transform; or ignore transform status for display.

Historical Notes

  • Attributes VirtualReality.PoseValid and VirtualReality.PoseStatus originally introduced in 3f12e85 (ENH: Adding additional information to VR transforms for pose status)

  • Attributes VirtualReality.HMDActive introduced in 5848c8c (Resolves #36. Exposes HMD pose to Slicer as a singleton transform named "VirtualReality.HMD")

  • Attributes VirtualReality.ControllerActive and VirtualReality.ControllerConnected introduced in 7aaf98c (Adding population of controller transforms (#29))

  • Logic refactored (while keep the same attributes) through Decouple update of transform node matrix and attributes #147

Related

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions