Development of 3D Slicer Implant planning Module

We have started developing a module based on Pedicle Screw Simulator for dental implant planning, simulation and navigation @chamath , @anuradha and @Anuradha_Rajapaksha .

We would hope for support in this project and keep this thread running for development of this.

The first problem we have is, in the screw insertion step, since we plan to let the user to import the dental implant they want and we assume every company will have their screw oriented differently because there is no standard for this. However we want to automatically orient the screw tip to the fiducial placed by the user.

therefore,

transformScrewTemp = slicer.vtkMRMLLinearTransformNode()
slicer.mrmlScene.AddNode(transformScrewTemp)
transformScrewTemp.ApplyTransformMatrix(matrix)

Currently ‘matrix’ was calculated using following static matrix.
matrix.DeepCopy((1, 0, 0, self.coords[0],
0, 0, 1, self.coords[1],
0, 1, 0, self.coords[2],
0, 0, 0, 1))

We’d like to make it dynamic with the axis specified by a given orientation. Can you point us to a reference where we can read about how the matrix coefficients are calculated for a given orientation.

I would recommend to store all models in a standard coordinate system, for example, origin is along the centerline at the bone line; z axis is the center of rotation of the implant, pointing towards the crown; x and y axes are orthogonal to z axis (they can be arbitrary, or aligned to some specific direction), unit is mm.

If any of the models that you receive does not follow the standard coordinate system, you can fix that using Transforms module, and when the alignment is correct, harden the transform, and save the resulting model.

For future reference, if you need to compute transformation matrix then you can use vtkTransform class: call Rotate..., Translate..., etc. then get the resulting matrix using GetMatrix.

1 Like