Ejemplo n.º 1
0
def Load(fileName):
    Model = os.path.join(os.path.dirname(__file__), fileName)
    scene = pyassimp.load(Model)
    newModel = Mesh()
    for index, mesh in enumerate(scene.meshes): #On suppose qu'il n'y a qu'un mesh par fichier, la fonction ne renvoyant qu'un mesh
        for index, vertices in enumerate(mesh.vertices):
            newModel.m_vertices.insert(index, vector3(vertices[0],vertices[1],vertices[2]))
        for index, face in enumerate(mesh.faces):
            newModel.m_faces.insert(index, vector3(face.indices[0],face.indices[1],face.indices[2]))
        for index, normal in enumerate(mesh.normals):
            newModel.m_normals.insert(index, vector3(normal[0],normal[1],normal[2]))
    pyassimp.release(scene)
    return newModel
Ejemplo n.º 2
0
 def __init__(self):
     self.m_p = 4 * [vector3()]
     self.m_q = 4 * [vector3()]
     self.m_det = 16 * [0]
     for i in range(len(self.m_det)):
         self.m_det[i] = 4 * [0]
     self.m_edge = 4 * [0]
     for i in range(len(self.m_edge)):
         self.m_edge[i] = 4 * [0]
     self.m_y = 4 * [vector3()]
     self.m_bits = 0x0
     self.m_allBits = 0x0
     self.m_last = 0
     self.m_lastBit = 0x0
Ejemplo n.º 3
0
 def compute_vector(self, subset):
     v = vector3()
     temp = 0
     bit = 0x1
     for i in range(4): 
         if(self.contains(bit, subset)):
             v += self.m_y[i] * self.m_det[subset][i]
             temp += self.m_det[subset][i]
         bit <<= 1
     assert temp > 0
     return v * (1 / temp)
Ejemplo n.º 4
0
def Minkowski(mesh1, mesh2):
    vertices1 = mesh1.m_vertices
    normal1 = mesh1.m_normals
    vertices2 = mesh2.m_vertices
    faces2 = mesh2.m_faces
    normal2 = mesh2.m_normals
    newMesh = Mesh()
    for i1, point1 in enumerate(vertices1):
        for i2, face in enumerate(faces2):
            newMesh.m_vertices.insert((i1+1)*i2*3, vertices1[i1] - vertices2[face.x])
            newMesh.m_vertices.insert((i1+1)*i2*3+1, vertices1[i1] - vertices2[face.y])
            newMesh.m_vertices.insert((i1+1)*i2*3+2, vertices1[i1] - vertices2[face.z])
            newMesh.m_normals.insert((i1+1)*i2*3,normal2[face.x]*-1)
            newMesh.m_normals.insert((i1+1)*i2*3+1,normal2[face.x]*-1)
            newMesh.m_normals.insert((i1+1)*i2*3+2,normal2[face.x]*-1)
            newMesh.m_faces.insert((i1+1)*i2, vector3((i1+1)*i2*3, (i1+1)*i2*3+1, (i1+1)*i2*3+2))
    return newMesh