diff --git a/HandGenerator/HandGenerator.py b/HandGenerator/HandGenerator.py
index 8990033..0e765f2 100644
--- a/HandGenerator/HandGenerator.py
+++ b/HandGenerator/HandGenerator.py
@@ -28,7 +28,7 @@ def __init__(self, parent=None):
self.connectorNode = None
self.generated = False
-
+ slicer.mymod = self
def setup(self):
ScriptedLoadableModuleWidget.setup(self)
@@ -53,8 +53,14 @@ def setup(self):
self.generateButton.text = "Generate Hands"
self.parametersFormLayout.addWidget(self.generateButton)
+ self.generateModelButton = qt.QPushButton()
+ self.generateModelButton.setDefault(False)
+ self.generateModelButton.text = "Generate Hand Models"
+ self.parametersFormLayout.addWidget(self.generateModelButton)
+
self.connectButton.connect('clicked(bool)', self.onConnectButtonClicked)
self.generateButton.connect('clicked(bool)', self.generateCylinders)
+ self.generateModelButton.connect('clicked(bool)', self.generateModels)
self.layout.addStretch(1)
def onConnectButtonClicked(self):
@@ -115,3 +121,118 @@ def generateCylinders(self):
slicer.mrmlScene.RemoveNode(nodes[i])
self.generated = False
self.generateCylinders()
+
+
+ def generateModels(self):
+ self.resourcePath = os.path.dirname(os.path.abspath(__file__))
+ if self.generated == False:
+ self.nodes = slicer.util.getNodesByClass('vtkMRMLLinearTransformNode')
+ self.n = len(self.nodes)
+ l = slicer.modules.createmodels.logic()
+
+ mat = vtk.vtkMatrix4x4()
+ mat_axis_conv = vtk.vtkMatrix4x4()
+ mat_table_to_mounted = vtk.vtkMatrix4x4()
+ # Old transforms
+ mat.SetElement(0,0,-1)
+ mat.SetElement(2,2,-1)
+
+ # Transform Matrix for HTC VIVE
+ #mat.SetElement(0,0,-0.99)
+ #mat.SetElement(0,1,-0.02)
+ #mat.SetElement(0,2,0.08)
+ #mat.SetElement(0,3,-2.75)
+ #mat.SetElement(1,0,-0.06)
+ #mat.SetElement(1,1,-.23)
+ #mat.SetElement(1,2,-0.97)
+ #mat.SetElement(1,3,29.11)
+ #mat.SetElement(2,0,0.04)
+ #mat.SetElement(2,1,-0.98)
+ #mat.SetElement(2,2,0.23)
+ #mat.SetElement(2,3,-133.75)
+
+ # Transform Matrix for HTC VIVE PRO
+ mat.SetElement(0,0,-0.99)
+ mat.SetElement(0,1,-0.02)
+ mat.SetElement(0,2,0.08)
+ mat.SetElement(0,3,7.25)
+ mat.SetElement(1,0,-0.06)
+ mat.SetElement(1,1,-0.23)
+ mat.SetElement(1,2,-0.97)
+ mat.SetElement(1,3,-100.89)
+ mat.SetElement(2,0,0.04)
+ mat.SetElement(2,1,-0.98)
+ mat.SetElement(2,2,0.23)
+ mat.SetElement(2,3,-111.75)
+
+ # Transforms from https://developer.leapmotion.com/documentation/v4/vrar.html
+ # Must attach to HMD transforms (ie, make HMD transform the parent of this matrix
+ # Setting the axis_conversion
+ #mat_axis_conv.SetElement(2,2,-1) #Identity with position 2,2 (starting from 0) set to -1
+
+ # Setting the table_to_mounted matrix
+ #mat_table_to_mounted.SetElement(0,0,-1)
+ #mat_table_to_mounted.SetElement(1,1,0)
+ #mat_table_to_mounted.SetElement(1,2,-1)
+ #mat_table_to_mounted.SetElement(2,1,-1)
+ #mat_table_to_mounted.SetElement(2,2,0)
+ #mat_table_to_mounted.SetElement(2,3,-80)
+
+ #Multiply4x4(mat_axis_conv, mat_table_to_mounted, mat)
+ #vtk.vtkMatrix4x4.Multiply4x4(mat_axis_conv,mat_table_to_mounted, mat)
+
+ self.Xflip = slicer.mrmlScene.AddNewNodeByClass('vtkMRMLLinearTransformNode')
+ self.Xflip.SetName('LHG_TrackerToHMD')
+ self.Xflip.SetAndObserveMatrixTransformToParent(mat)
+ #self.Xflip.SetAndObserveTransformNodeID(self.Xflip.GetID()) Set this to observe the VR.HMD transform
+ #self.HMDAlign = slicer.mrmlScene.AddNewNodeByClass('vtkMRMLLinearTransformNode')
+ #self.HMDAlign.SetName("LHG_RASToHMD")
+ self.generated = True
+
+ print(self.resourcePath)
+
+
+ for i in range (0, self.n):
+ if 'Left' in self.nodes[i].GetName() or 'Right' in self.nodes[i].GetName():
+ if 'Dis' in self.nodes[i].GetName() or 'Int' in self.nodes[i].GetName() or 'Prox' in self.nodes[i].GetName() or 'Meta' in self.nodes[i].GetName() or 'Palm' in self.nodes[i].GetName():
+
+
+ print('Resources\\' + self.nodes[i].GetName() + ".stl")
+ self.tempModel = slicer.util.loadModel(os.path.join(self.resourcePath, 'Resources\\' + self.nodes[i].GetName() + ".stl"))
+ if self.tempModel is not False:
+ self.nodes[i].SetAndObserveTransformNodeID(self.Xflip.GetID())
+ self.tempModel.SetAndObserveTransformNodeID(self.nodes[i].GetID())
+ self.tempModel.SetName('LHG_Seg' + self.nodes[i].GetName())
+
+ else:
+ self.nodes = slicer.util.getNodesByClass('vtkMRMLLinearTransformNode')
+ self.n = len(self.nodes)
+ self.models = slicer.util.getNodesByClass('vtkMRMLModelNode')
+ if self.Xflip is None:
+ mat = vtk.vtkMatrix4x4()
+ # Old transforms
+ mat.SetElement(0,0,-1)
+ mat.SetElement(2,2,-1)
+
+ # New transforms
+ mat.SetElement(0,0,-1)
+ mat.SetElement(1,1,0.17)
+ mat.SetElement(1,2,-0.99)
+ mat.SetElement(1,3,-70)
+ mat.SetElement(2,1,-0.99)
+ mat.SetElement(2,2,-0.17)
+ mat.SetElement(2,3,-80)
+ self.Xflip = slicer.mrmlScene.AddNewNodeByClass('vtkMRMLLinearTransformNode')
+ self.Xflip.SetName('LHG_TrackerToHMD')
+ self.Xflip.SetAndObserveMatrixTransformToParent(mat)
+ for j in range(0, len(self.models)):
+ if 'LHG_' in self.models[j].GetName():
+ slicer.mrmlScene.RemoveNode(self.models[j])
+ for i in range (0, self.n):
+ if 'Left' in self.nodes[i].GetName() or 'Right' in self.nodes[i].GetName():
+ if 'Dis' in self.nodes[i].GetName() or 'Int' in self.nodes[i].GetName() or 'Prox' in self.nodes[i].GetName() or 'Meta' in self.nodes[i].GetName():
+ print('Resources\\' + self.nodes[i].GetName() + ".stl")
+ self.tempModel = slicer.util.loadModel(os.path.join(self.resourcePath, 'Resources\\' + self.nodes[i].GetName() + ".stl"))
+ self.nodes[i].SetAndObserveTransformNodeID(self.Xflip.GetID())
+ self.tempModel.SetAndObserveTransformNodeID(self.nodes[i].GetID())
+ self.tempModel.SetName('LHG_Seg' + self.nodes[i].GetName())
diff --git a/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Both.xml b/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Both.xml
index 545064b..783395f 100644
--- a/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Both.xml
+++ b/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Both.xml
@@ -8,7 +8,7 @@
AcquisitionRate="1000"
Id="TrackerDevice"
Type="LeapMotion"
- LeapHMDPolicy="FALSE"
+ LeapHMDPolicy="TRUE"
ToolReferenceFrame="Tracker" >
@@ -26,13 +26,14 @@
-
+
-
+
+
@@ -46,13 +47,14 @@
-
+
-
+
+
@@ -72,12 +74,13 @@
-
+
-
+
+
@@ -91,12 +94,13 @@
-
+
-
+
+
@@ -160,12 +164,13 @@
-
+
-
+
+
@@ -179,13 +184,13 @@
-
+
-
-
+
+
diff --git a/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Left.xml b/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Left.xml
index 31054bf..e11fed8 100644
--- a/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Left.xml
+++ b/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker Left.xml
@@ -8,7 +8,7 @@
AcquisitionRate="1000"
Id="TrackerDevice"
Type="LeapMotion"
- LeapHMDPolicy="FALSE"
+ LeapHMDPolicy="TRUE"
ToolReferenceFrame="Tracker" >
@@ -26,14 +26,14 @@
-
+
-
-
+
+
-
-
+
+
+
-
-
+
+
-
+
+
@@ -95,12 +96,13 @@
-
+
-
+
+
@@ -185,13 +187,13 @@
-
+
-
-
+
+
diff --git a/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker.xml b/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker.xml
new file mode 100644
index 0000000..73d3cae
--- /dev/null
+++ b/HandGenerator/PlusDeviceSet_Server_LeapMotionTracker.xml
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HandGenerator/Resources/LeftIndexDistalToTra.stl b/HandGenerator/Resources/LeftIndexDistalToTra.stl
new file mode 100644
index 0000000..9c8a420
Binary files /dev/null and b/HandGenerator/Resources/LeftIndexDistalToTra.stl differ
diff --git a/HandGenerator/Resources/LeftIndexIntermediat.stl b/HandGenerator/Resources/LeftIndexIntermediat.stl
new file mode 100644
index 0000000..2f56791
Binary files /dev/null and b/HandGenerator/Resources/LeftIndexIntermediat.stl differ
diff --git a/HandGenerator/Resources/LeftIndexProximalToT.stl b/HandGenerator/Resources/LeftIndexProximalToT.stl
new file mode 100644
index 0000000..f4cb5ca
Binary files /dev/null and b/HandGenerator/Resources/LeftIndexProximalToT.stl differ
diff --git a/HandGenerator/Resources/LeftMiddleDistalToTr.stl b/HandGenerator/Resources/LeftMiddleDistalToTr.stl
new file mode 100644
index 0000000..cf58d82
Binary files /dev/null and b/HandGenerator/Resources/LeftMiddleDistalToTr.stl differ
diff --git a/HandGenerator/Resources/LeftMiddleIntermedia.stl b/HandGenerator/Resources/LeftMiddleIntermedia.stl
new file mode 100644
index 0000000..250f605
Binary files /dev/null and b/HandGenerator/Resources/LeftMiddleIntermedia.stl differ
diff --git a/HandGenerator/Resources/LeftMiddleMetacarpal.stl b/HandGenerator/Resources/LeftMiddleMetacarpal.stl
new file mode 100644
index 0000000..570305d
Binary files /dev/null and b/HandGenerator/Resources/LeftMiddleMetacarpal.stl differ
diff --git a/HandGenerator/Resources/LeftMiddleProximalTo.stl b/HandGenerator/Resources/LeftMiddleProximalTo.stl
new file mode 100644
index 0000000..6d55fb2
Binary files /dev/null and b/HandGenerator/Resources/LeftMiddleProximalTo.stl differ
diff --git a/HandGenerator/Resources/LeftPalmToTracker.stl b/HandGenerator/Resources/LeftPalmToTracker.stl
new file mode 100644
index 0000000..9873ea1
Binary files /dev/null and b/HandGenerator/Resources/LeftPalmToTracker.stl differ
diff --git a/HandGenerator/Resources/LeftPinkyDistalToTra.stl b/HandGenerator/Resources/LeftPinkyDistalToTra.stl
new file mode 100644
index 0000000..8abe1c7
Binary files /dev/null and b/HandGenerator/Resources/LeftPinkyDistalToTra.stl differ
diff --git a/HandGenerator/Resources/LeftPinkyIntermediat.stl b/HandGenerator/Resources/LeftPinkyIntermediat.stl
new file mode 100644
index 0000000..1f2d1b2
Binary files /dev/null and b/HandGenerator/Resources/LeftPinkyIntermediat.stl differ
diff --git a/HandGenerator/Resources/LeftPinkyProximalToT.stl b/HandGenerator/Resources/LeftPinkyProximalToT.stl
new file mode 100644
index 0000000..c85851c
Binary files /dev/null and b/HandGenerator/Resources/LeftPinkyProximalToT.stl differ
diff --git a/HandGenerator/Resources/LeftRingDistalToTrac.stl b/HandGenerator/Resources/LeftRingDistalToTrac.stl
new file mode 100644
index 0000000..be788c7
Binary files /dev/null and b/HandGenerator/Resources/LeftRingDistalToTrac.stl differ
diff --git a/HandGenerator/Resources/LeftRingIntermediate.stl b/HandGenerator/Resources/LeftRingIntermediate.stl
new file mode 100644
index 0000000..67b286b
Binary files /dev/null and b/HandGenerator/Resources/LeftRingIntermediate.stl differ
diff --git a/HandGenerator/Resources/LeftRingProximalToTr.stl b/HandGenerator/Resources/LeftRingProximalToTr.stl
new file mode 100644
index 0000000..bac82bb
Binary files /dev/null and b/HandGenerator/Resources/LeftRingProximalToTr.stl differ
diff --git a/HandGenerator/Resources/LeftThumbDistalToTra.stl b/HandGenerator/Resources/LeftThumbDistalToTra.stl
new file mode 100644
index 0000000..db1f28a
Binary files /dev/null and b/HandGenerator/Resources/LeftThumbDistalToTra.stl differ
diff --git a/HandGenerator/Resources/LeftThumbIntermediat.stl b/HandGenerator/Resources/LeftThumbIntermediat.stl
new file mode 100644
index 0000000..fd24dc8
Binary files /dev/null and b/HandGenerator/Resources/LeftThumbIntermediat.stl differ
diff --git a/HandGenerator/Resources/RightIndexDistalToTr.stl b/HandGenerator/Resources/RightIndexDistalToTr.stl
new file mode 100644
index 0000000..f9a74ce
Binary files /dev/null and b/HandGenerator/Resources/RightIndexDistalToTr.stl differ
diff --git a/HandGenerator/Resources/RightIndexIntermedia.stl b/HandGenerator/Resources/RightIndexIntermedia.stl
new file mode 100644
index 0000000..14dfaa6
Binary files /dev/null and b/HandGenerator/Resources/RightIndexIntermedia.stl differ
diff --git a/HandGenerator/Resources/RightIndexProximalTo.stl b/HandGenerator/Resources/RightIndexProximalTo.stl
new file mode 100644
index 0000000..9927fd7
Binary files /dev/null and b/HandGenerator/Resources/RightIndexProximalTo.stl differ
diff --git a/HandGenerator/Resources/RightMiddleDistalToT.stl b/HandGenerator/Resources/RightMiddleDistalToT.stl
new file mode 100644
index 0000000..9dc8b52
Binary files /dev/null and b/HandGenerator/Resources/RightMiddleDistalToT.stl differ
diff --git a/HandGenerator/Resources/RightMiddleIntermedi.stl b/HandGenerator/Resources/RightMiddleIntermedi.stl
new file mode 100644
index 0000000..386eb2b
Binary files /dev/null and b/HandGenerator/Resources/RightMiddleIntermedi.stl differ
diff --git a/HandGenerator/Resources/RightMiddleMetacarpa - Copy.stl b/HandGenerator/Resources/RightMiddleMetacarpa - Copy.stl
new file mode 100644
index 0000000..fd379ae
Binary files /dev/null and b/HandGenerator/Resources/RightMiddleMetacarpa - Copy.stl differ
diff --git a/HandGenerator/Resources/RightMiddleMetacarpa.stl b/HandGenerator/Resources/RightMiddleMetacarpa.stl
new file mode 100644
index 0000000..01fb444
Binary files /dev/null and b/HandGenerator/Resources/RightMiddleMetacarpa.stl differ
diff --git a/HandGenerator/Resources/RightMiddleProximalT.stl b/HandGenerator/Resources/RightMiddleProximalT.stl
new file mode 100644
index 0000000..be46105
Binary files /dev/null and b/HandGenerator/Resources/RightMiddleProximalT.stl differ
diff --git a/HandGenerator/Resources/RightPalmToTracker.stl b/HandGenerator/Resources/RightPalmToTracker.stl
new file mode 100644
index 0000000..9873ea1
Binary files /dev/null and b/HandGenerator/Resources/RightPalmToTracker.stl differ
diff --git a/HandGenerator/Resources/RightPinkyDistalToTr.stl b/HandGenerator/Resources/RightPinkyDistalToTr.stl
new file mode 100644
index 0000000..5ead4b5
Binary files /dev/null and b/HandGenerator/Resources/RightPinkyDistalToTr.stl differ
diff --git a/HandGenerator/Resources/RightPinkyIntermedia.stl b/HandGenerator/Resources/RightPinkyIntermedia.stl
new file mode 100644
index 0000000..446d462
Binary files /dev/null and b/HandGenerator/Resources/RightPinkyIntermedia.stl differ
diff --git a/HandGenerator/Resources/RightPinkyProximalTo.stl b/HandGenerator/Resources/RightPinkyProximalTo.stl
new file mode 100644
index 0000000..1b8fb1d
Binary files /dev/null and b/HandGenerator/Resources/RightPinkyProximalTo.stl differ
diff --git a/HandGenerator/Resources/RightRingDistalToTra.stl b/HandGenerator/Resources/RightRingDistalToTra.stl
new file mode 100644
index 0000000..56727ed
Binary files /dev/null and b/HandGenerator/Resources/RightRingDistalToTra.stl differ
diff --git a/HandGenerator/Resources/RightRingIntermediat.stl b/HandGenerator/Resources/RightRingIntermediat.stl
new file mode 100644
index 0000000..d88e195
Binary files /dev/null and b/HandGenerator/Resources/RightRingIntermediat.stl differ
diff --git a/HandGenerator/Resources/RightRingProximalToT.3mf b/HandGenerator/Resources/RightRingProximalToT.3mf
new file mode 100644
index 0000000..d3d056f
Binary files /dev/null and b/HandGenerator/Resources/RightRingProximalToT.3mf differ
diff --git a/HandGenerator/Resources/RightRingProximalToT.stl b/HandGenerator/Resources/RightRingProximalToT.stl
new file mode 100644
index 0000000..368cb12
Binary files /dev/null and b/HandGenerator/Resources/RightRingProximalToT.stl differ
diff --git a/HandGenerator/Resources/RightThumbDistalToTr.stl b/HandGenerator/Resources/RightThumbDistalToTr.stl
new file mode 100644
index 0000000..451c57c
Binary files /dev/null and b/HandGenerator/Resources/RightThumbDistalToTr.stl differ
diff --git a/HandGenerator/Resources/RightThumbIntermedia.stl b/HandGenerator/Resources/RightThumbIntermedia.stl
new file mode 100644
index 0000000..f9d66d7
Binary files /dev/null and b/HandGenerator/Resources/RightThumbIntermedia.stl differ