When tracking two instruments using the Brainlab system and OpenIGTLink:
- OpenIGT link transfers transforms for both instruments from BrainLab to Slicer as expected
- As long as only one instrument is ever visible at a time, things work as expected
a) Transform sliders and transforms change in real time in the Transform Module as expected
b) Slice views are controlled by the transforms assigned in the ResliceDriver as expected - If at some point, both instruments become visible, the Transforms Module and ResliceDriver both behave in unexpected ways
a) As long as both instruments are visible and until one of the instruments becomes not visible:- Transform sliders and transforms behave as expected in the Transforms Module
- Slice views are controlled as expected by the ResliceDriver
b) As soon as one of the two instruments becomes not visible and thereafter until Slicer is stopped and restarted: - The transform from one of the two instruments (always the same one, possibly determined by the order Brainlab sends transforms) no longer impacts the Transforms Module (sliders and transforms do not change when the instrument is moved) and the ResliceDriver (transform does not control the assigned slice view)
c) Note that both transforms continue to be received via OpenIGTLink as expected and both emit move events. (We have an independent module that observes and records transform events. The behavior of the Transforms Module and ResliceDriver described here occurs whether or not our module is opened/activated.)
I think this may have something to do with how observers are attached/detached from transforms in the Transforms Module and ResliceDriver. However, the behavior is buried under multiple layers in vtk and MRML that I am having trouble tracing through the code.
Is there anyone familiar with these modules and/or the vtk observer model who might be able to help us with this issue? It is a blocking issue on software we used regularly during tumor resections.
Thanks!
Sarah