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)
Exemple #3
0
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)
Exemple #4
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