def setMatrix(apGeneSet): global g_matrix_width global g_matrix_height global g_matrix_x global g_matrix_y global matrix_parameter_set matrix_parameter_set = copy.deepcopy(apGeneSet) # Matrix # Make a cube g_matrix_width = apGeneSet[ 2] * detector_width_in_pixels * pixel_size_in_micrometer / 1.5 g_matrix_height = apGeneSet[ 3] * detector_width_in_pixels * pixel_size_in_micrometer / 1.5 g_matrix_x = apGeneSet[ 0] * detector_width_in_pixels * pixel_size_in_micrometer - detector_width_in_pixels * pixel_size_in_micrometer / 2.0 g_matrix_y = apGeneSet[ 1] * detector_width_in_pixels * pixel_size_in_micrometer - detector_width_in_pixels * pixel_size_in_micrometer / 2.0 gvxr.makeCube("Matrix", 1, "micrometer") gvxr.setLocalTransformationMatrix("Matrix", [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]) gvxr.translateNode("Matrix", g_matrix_y, 0, g_matrix_x, "micrometer") gvxr.scaleNode("Matrix", g_matrix_width, 815, g_matrix_height, "mm") '''gvxr.shearNode("Matrix", 0, apGeneSet[5], 0, 0, apGeneSet[6], 0);''' gvxr.rotateNode("Matrix", apGeneSet[4] * 360.0, 0, 1, 0) # Matrix #gvxr.addPolygonMeshAsOuterSurface("Matrix"); gvxr.setMixture("Matrix", matrix_material) gvxr.setDensity("Matrix", matrix_density, "g.cm-3") gvxr.setLinearAttenuationCoefficient("Matrix", matrix_mu, "cm-1")
def setZRotation(self, event): global x_ray_image selection = "Rotation in Z = " + str( (self.z_rotation_value.get())) + ' degrees' self.z_rotation_label.config(text=selection) gvxr.rotateNode( self.selected_node, self.z_rotation_value.get() - self.rotation_dictionary[self.selected_node][2], 0, 0, 1) self.rotation_dictionary[ self.selected_node][0] = self.z_rotation_value.get() x_ray_image = gvxr.computeXRayImage() gvxr.displayScene() self.xray_vis.draw(x_ray_image)
def setXRayEnvironment(): gvxr.createWindow() gvxr.setWindowSize(512, 512) #gvxr.usePointSource(); gvxr.setMonoChromatic(80, "keV", 1000) gvxr.setDetectorUpVector(0, 0, -1) gvxr.setDetectorNumberOfPixels(768, 1024) gvxr.setDetectorPixelSize(0.5, 0.5, "mm") # 5 dpi setXRayParameters(10.0, 100.0) gvxr.loadSceneGraph("./hand.dae", "m") node_label_set = [] node_label_set.append('root') # The list is not empty while (len(node_label_set)): # Get the last node last_node = node_label_set[-1] # Initialise the material properties # print("Set ", label, "'s Hounsfield unit"); # gvxr.setHU(label, 1000) Z = gvxr.getElementAtomicNumber("H") gvxr.setElement(last_node, gvxr.getElementName(Z)) # Change the node colour to a random colour gvxr.setColour(last_node, random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), 1.0) # Remove it from the list node_label_set.pop() # Add its Children for i in range(gvxr.getNumberOfChildren(last_node)): node_label_set.append(gvxr.getChildLabel(last_node, i)) gvxr.moveToCentre('root') gvxr.disableArtefactFiltering() gvxr.rotateNode('root', -90, 1, 0, 0)
def updateLocalTransformationMatrixSet(angles, finger): if finger == 'Root': gvxr.rotateNode('root', angles[0], 1, 0, 0) gvxr.rotateNode('root', angles[1], 0, 1, 0) gvxr.rotateNode('root', angles[2], 0, 0, 1) elif finger == 'Thumb': gvxr.rotateNode('node-Thu_Meta', angles[0], 1, 0, 0) gvxr.rotateNode('node-Thu_Meta', angles[1], 0, 1, 0) gvxr.rotateNode('node-Thu_Prox', angles[2], 1, 0, 0) elif finger == 'Little': gvxr.rotateNode('node-Lit_Prox', angles[0], 1, 0, 0) gvxr.rotateNode('node-Lit_Prox', angles[1], 0, 1, 0) gvxr.rotateNode('node-Lit_Midd', angles[2], 0, 1, 0) gvxr.rotateNode('node-Lit_Dist', angles[3], 0, 1, 0) elif finger == 'Ring': gvxr.rotateNode('node-Thi_Prox', angles[0], 1, 0, 0) gvxr.rotateNode('node-Thi_Prox', angles[1], 0, 1, 0) gvxr.rotateNode('node-Thi_Midd', angles[2], 0, 1, 0) gvxr.rotateNode('node-Thi_Dist', angles[3], 0, 1, 0) elif finger == 'Middle': gvxr.rotateNode('node-Mid_Prox', angles[0], 1, 0, 0) gvxr.rotateNode('node-Mid_Prox', angles[1], 0, 1, 0) gvxr.rotateNode('node-Mid_Midd', angles[2], 0, 1, 0) gvxr.rotateNode('node-Mid_Dist', angles[3], 0, 1, 0) elif finger == 'Index': gvxr.rotateNode('node-Ind_Prox', angles[0], 1, 0, 0) gvxr.rotateNode('node-Ind_Prox', angles[1], 0, 1, 0) gvxr.rotateNode('node-Ind_Midd', angles[2], 0, 1, 0) gvxr.rotateNode('node-Ind_Dist', angles[3], 0, 1, 0) elif finger == 'All': gvxr.rotateNode('root', angles[0], 1, 0, 0) gvxr.rotateNode('root', angles[1], 0, 1, 0) gvxr.rotateNode('root', angles[2], 0, 0, 1) gvxr.rotateNode('node-Thu_Meta', angles[3], 1, 0, 0) gvxr.rotateNode('node-Thu_Meta', angles[4], 0, 1, 0) gvxr.rotateNode('node-Thu_Prox', angles[5], 1, 0, 0) gvxr.rotateNode('node-Ind_Prox', angles[6], 1, 0, 0) gvxr.rotateNode('node-Ind_Prox', angles[7], 0, 1, 0) gvxr.rotateNode('node-Ind_Midd', angles[8], 0, 1, 0) gvxr.rotateNode('node-Ind_Dist', angles[9], 0, 1, 0) gvxr.rotateNode('node-Mid_Prox', angles[10], 1, 0, 0) gvxr.rotateNode('node-Mid_Prox', angles[11], 0, 1, 0) gvxr.rotateNode('node-Mid_Midd', angles[12], 0, 1, 0) gvxr.rotateNode('node-Mid_Dist', angles[13], 0, 1, 0) gvxr.rotateNode('node-Thi_Prox', angles[14], 1, 0, 0) gvxr.rotateNode('node-Thi_Prox', angles[15], 0, 1, 0) gvxr.rotateNode('node-Thi_Midd', angles[16], 0, 1, 0) gvxr.rotateNode('node-Thi_Dist', angles[17], 0, 1, 0) gvxr.rotateNode('node-Lit_Prox', angles[18], 1, 0, 0) gvxr.rotateNode('node-Lit_Prox', angles[19], 0, 1, 0) gvxr.rotateNode('node-Lit_Midd', angles[20], 0, 1, 0) gvxr.rotateNode('node-Lit_Dist', angles[21], 0, 1, 0)
def poserior_anterior(angles): node_label_set = [] node_label_set.append('root') # The list is not empty while (len(node_label_set)): # Get the last node node = node_label_set[-1] # Initialise the material properties Z = gvxr.getElementAtomicNumber("H") gvxr.setElement(node, gvxr.getElementName(Z)) # Change the node colour to a random colour gvxr.setColour(node, random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), 1.0) # Remove it from the list node_label_set.pop() # Add its Children for i in range(gvxr.getNumberOfChildren(node)): node_label_set.append(gvxr.getChildLabel(node, i)) if node == 'root': gvxr.rotateNode(node, angles[0], 1, 0, 0) gvxr.rotateNode(node, angles[1], 0, 1, 0) if node == 'node-Thu_Meta': gvxr.rotateNode(node, angles[2], 1, 0, 0) gvxr.rotateNode(node, angles[3], 0, 1, 0) if node == 'node-Thu_Prox': gvxr.rotateNode(node, angles[4], 1, 0, 0) gvxr.rotateNode(node, angles[5], 0, 1, 0) if node == 'node-Thu_Dist': gvxr.rotateNode(node, angles[6], 1, 0, 0) gvxr.rotateNode(node, angles[7], 0, 1, 0) if node == 'node-Lit_Meta': gvxr.rotateNode(node, angles[8], 1, 0, 0) gvxr.rotateNode(node, angles[9], 0, 1, 0) if node == 'node-Lit_Prox': gvxr.rotateNode(node, angles[10], 1, 0, 0) gvxr.rotateNode(node, angles[11], 0, 1, 0) if node == 'node-Lit_Midd': gvxr.rotateNode(node, angles[12], 1, 0, 0) gvxr.rotateNode(node, angles[13], 0, 1, 0) if node == 'node-Lit_Dist': gvxr.rotateNode(node, angles[14], 1, 0, 0) gvxr.rotateNode(node, angles[15], 0, 1, 0) if node == 'node-Thi_Meta': gvxr.rotateNode(node, angles[16], 1, 0, 0) gvxr.rotateNode(node, angles[17], 0, 1, 0) if node == 'node-Thi_Prox': gvxr.rotateNode(node, angles[18], 1, 0, 0) gvxr.rotateNode(node, angles[19], 0, 1, 0) if node == 'node-Thi_Midd': gvxr.rotateNode(node, angles[20], 1, 0, 0) gvxr.rotateNode(node, angles[21], 0, 1, 0) if node == 'node-Thi_Dist': gvxr.rotateNode(node, angles[22], 1, 0, 0) gvxr.rotateNode(node, angles[23], 0, 1, 0) if node == 'node-Mid_Meta': gvxr.rotateNode(node, angles[24], 1, 0, 0) gvxr.rotateNode(node, angles[25], 0, 1, 0) if node == 'node-Mid_Prox': gvxr.rotateNode(node, angles[26], 1, 0, 0) gvxr.rotateNode(node, angles[27], 0, 1, 0) if node == 'node-Mid_Midd': gvxr.rotateNode(node, angles[28], 1, 0, 0) gvxr.rotateNode(node, angles[29], 0, 1, 0) if node == 'node-Mid_Dist': gvxr.rotateNode(node, angles[30], 1, 0, 0) gvxr.rotateNode(node, angles[31], 0, 1, 0) if node == 'node-Ind_Meta': gvxr.rotateNode(node, angles[32], 1, 0, 0) gvxr.rotateNode(node, angles[33], 0, 1, 0) if node == 'node-Ind_Prox': gvxr.rotateNode(node, angles[34], 1, 0, 0) gvxr.rotateNode(node, angles[35], 0, 1, 0) if node == 'node-Ind_Midd': gvxr.rotateNode(node, angles[36], 1, 0, 0) gvxr.rotateNode(node, angles[37], 0, 1, 0) if node == 'node-Ind_Dist': gvxr.rotateNode(node, angles[0], 1, 0, 0) gvxr.rotateNode(node, angles[0], 0, 1, 0) x_ray_image = gvxr.computeXRayImage() image = np.array(x_ray_image) return image