欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用Python从PLY文件中提取颜色信息、索引信息、法线信息、模型的顶点坐标

程序员文章站 2022-03-31 11:04:45
...
class MeshPly:   
    def __init__(self,filename,color=[0.,0.,0.]):

	f = open(filename,'r')
	self.vertices=[]
	self.colors=[]
	self.indices=[]
	self.normals = []
	vertex_mode = False
	face_mode = False
	nb_vertices = 0
	nb_faces = 0
	idx = 0
	with f as open_file_object:
		for line in open_file_object:
			elements = line.split()
			if vertex_mode:
				self.vertices.append([float(i) for i in elements[:3]])
				self.normals.append([float(i) for i in elements[3:6]])
				if elements[6:9]:
					self.colors.append([float(i) / 255. for i in elements[6:9]])
				else:
					self.colors.append([float(i) / 255. for i in color])
				idx += 1
				if idx == nb_vertices:
					vertex_mode = False
					face_mode = True
					idx= 0 
			elif face_mode:
				self.indices.append([float(i) for i in elements[1:4]])
				idx += 1
				if idx == nb_faces:
					face_mode == False
			elif elements[0] == 'element':
				if elements[1] == 'vertex':
					nb_vertices = int(elements[2])
				elif elements[1] == 'face':
					nb_faces =int(elements[2])
			elif elements[0] == 'end_header':
				vertex_mode = True
if __name__ == '__main__':  
    path_mode = '**/**/**'  
    mesh = MeshPly(path_mode)