We are developing a navigation system for use with CT images and optically tracked tools. We’re using the volume reslice driver to reslice the image views in real-time with respect to tool position and orientation, but our surgeons would prefer to if the image was still (still resliced) and the tool moved around it. At the moment the tool is stationary and the image moves around it.
Also, how do you reslice an image based on an abitrary axis? We have cylindrical models (representing screws) placed in our image, and would like to reslice our slice views along the axes of these models.
These are all completely configurable. You need to set up your transform tree keeping in mind that the root of the transform tree is the renderer world coordinate system. So, objects in that coordinate system will be stationary in the viewers (unless of course you move the slice view plane or camera).
Usually we define coordinate system for positioning screw model and use the same transform in volume reslice driver to align the views with the screw.
Reconfiguring these on the GUI involves switching between modules and change a number of parameters, so once you figured out what visualization modes you need, it can make sense to implement their setup in Python (probably 10-15 lines of code).
I’m not sure I totally understand your solution. Here is the transform tree:
For reslicing I set GuideTipToGuide as the driver. The CT (CT_crop) is the image of interest. From my understanding the root here is the RAS coordinate system, and the CT image is in that coordinate system?
Exactly. This means that the CT image will be always stationary.
For example, if you want your CT image to move in the 3D view when the patient moves then you can use the Tracker coordinate system as root (and rearrange the transform tree accordingly).
Alternatively, you can make objects appear as moving on screen (even if they are stationary in the root coordinate system), by translating/rotating slice view planes or 3D view’s camera.
Sorry I think I wasn’t clear from the beginning.
The CT is stationary in the 3D viewer as expected and as desired by our surgeons. However, the CT is not stationary in the red/yellow slices when using the volume reslice driver and setting the driver to GuideTipToGuide. Instead the tool model (‘Locator_GuideToReference’ from the tree above) has stationary pose while the CT’s pose changes as the tool is moved. We would like it so that the tool is moving around and the CT is fixed in translation and rotation while being resliced in the slice views. Perhaps I need to calculate a new RASToGuideTip transform by inversing and chaining the existing transforms, and use that as the driver?
Volume reslice driver has modes that force the slice orientation to an anatomical direction and just take the position from the tool transform.
You can display the tool model as projection to visualize out-of-plane parts of the model (configurable in Models module).
You can also define custom rules for computing slice pose from tool pose. See this example: https://www.slicer.org/wiki/Documentation/Nightly/ScriptRepository#Set_slice_position_and_orientation_from_a_normal_vector_and_position
Thanks, I will take a look at that example.
2 posts were split to a new topic: Clipping of models is too slow