How to create dynamic StylusToReference transform from NDI tracker data?

Hi all,大家好

I am working with an NDI tracker in 3D Slicer and I have two transforms provided dynamically by the tracker:

  • StylusToTracker

  • ReferenceToTracker

What I would like to obtain in real time is the transform:

  • StylusToReference

I have read through the SlicerIGT Tutorial U04 materials, and I understand the general idea of transform concatenation. However, I am still not clear how to properly set this up in Slicer so that StylusToReference is updated dynamically during tracking.

Questions:

  1. Should I use the “Add derived transform” function in PLUS or set up a Transform node hierarchy directly in Slicer?

  2. If using Slicer, should I simply parent Stylus under Reference and then harden transforms, or is there a way to keep StylusToReference continuously updated without hardening?

  3. Is there an example in the SlicerIGT extension that specifically shows how to compute a live StylusToReference from tracker transforms?

Any clarification or example pipeline would be greatly appreciated!

Thanks a lot!

I have had to set up something very similar to this. The way I solved it was to change the PlusServerLauncher xml configuration file so that it was transmitting TrackerToReference rather than ReferenceToTracker. Then, I set up a transform hierarchy with TrackerToReference as the parent of StylusToTracker. These two transforms are updated continuously from the tracker-streamed data, and combined, they provide the StylusToReference transformation. Any object (e.g. a stylus surface model) with is then placed under StylusToTracker transform will move correctly relative to the reference.