Save a 3D mesh to a polygon .ply file.
(filename, verts, faces, norms, colors)
| 56 | f.close() |
| 57 | |
| 58 | def meshwrite(filename, verts, faces, norms, colors): |
| 59 | """Save a 3D mesh to a polygon .ply file. |
| 60 | """ |
| 61 | # Write header |
| 62 | ply_file = open(filename, 'w') |
| 63 | ply_file.write("ply\n") |
| 64 | ply_file.write("format ascii 1.0\n") |
| 65 | ply_file.write("element vertex %d\n" % (verts.shape[0])) |
| 66 | ply_file.write("property float x\n") |
| 67 | ply_file.write("property float y\n") |
| 68 | ply_file.write("property float z\n") |
| 69 | ply_file.write("property float nx\n") |
| 70 | ply_file.write("property float ny\n") |
| 71 | ply_file.write("property float nz\n") |
| 72 | ply_file.write("property uchar red\n") |
| 73 | ply_file.write("property uchar green\n") |
| 74 | ply_file.write("property uchar blue\n") |
| 75 | ply_file.write("element face %d\n" % (faces.shape[0])) |
| 76 | ply_file.write("property list uchar int vertex_index\n") |
| 77 | ply_file.write("end_header\n") |
| 78 | |
| 79 | # Write vertex list |
| 80 | for i in range(verts.shape[0]): |
| 81 | ply_file.write("%f %f %f %f %f %f %d %d %d\n" % ( |
| 82 | verts[i, 0], verts[i, 1], verts[i, 2], |
| 83 | norms[i, 0], norms[i, 1], norms[i, 2], |
| 84 | colors[i, 0], colors[i, 1], colors[i, 2], |
| 85 | )) |
| 86 | |
| 87 | # Write face list |
| 88 | for i in range(faces.shape[0]): |
| 89 | ply_file.write("3 %d %d %d\n" % (faces[i, 0], faces[i, 1], faces[i, 2])) |
| 90 | |
| 91 | ply_file.close() |
| 92 | |
| 93 | |
| 94 | def pcwrite(filename, xyz, rgb=None): |
nothing calls this directly
no outgoing calls
no test coverage detected