cc: update old verts

This commit is contained in:
Stephen M. McQuay 2012-05-09 23:20:23 -06:00
parent 198a7d7ca8
commit a00f1cb59a

View File

@ -33,11 +33,11 @@ def refine(mesh):
e_vert_offset = len(new_vertices) e_vert_offset = len(new_vertices)
# For each edge, add an edge point. # For each edge, add an edge point.
for cur_edge_id, cur_edge in enumerate(mesh.edges): for old_edge_id, old_edge in enumerate(mesh.edges):
# make mapping from edge -> new_face_vert for later # make mapping from edge -> new_face_vert for later
face_ids_for_edge = mesh.faces_for_edge[cur_edge_id] face_ids_for_edge = mesh.faces_for_edge[old_edge_id]
for fid in face_ids_for_edge: for fid in face_ids_for_edge:
edge_vids_for[fid].append(cur_edge_id) edge_vids_for[fid].append(old_edge_id)
tmp_verts = [] tmp_verts = []
@ -46,7 +46,7 @@ def refine(mesh):
tmp_verts.extend([new_vertices[f + f_vert_offset] for f in face_ids_for_edge]) tmp_verts.extend([new_vertices[f + f_vert_offset] for f in face_ids_for_edge])
# ... and its two original endpoints. # ... and its two original endpoints.
tmp_verts.extend([mesh.vertices[vid] for vid in cur_edge]) tmp_verts.extend([mesh.vertices[vid] for vid in old_edge])
# centroid == average # centroid == average
new_vertices.append(centroid(tmp_verts)) new_vertices.append(centroid(tmp_verts))
@ -80,9 +80,9 @@ def refine(mesh):
R = centroid(e_verts) R = centroid(e_verts)
# where each edge midpoint is the average of its two endpoint vertices. # where each edge midpoint is the average of its two endpoint vertices.
# Move each original point to the point (or add it to new_verts) # **Move** each original point to the point (or add it to new_verts)
new_vertex_point = (F + 2 * R + (len(edges) - 3) * new_vertices[new_vid]) / len(edges) new_vertex_point = (F + 2 * R + (len(edges) - 3) * new_vertices[new_vid]) / len(edges)
new_vertices.append(new_vertex_point) new_vertices[new_vid] = new_vertex_point
return PolygonMesh(vertices=new_vertices, edges=new_edges, faces=new_faces) return PolygonMesh(vertices=new_vertices, edges=new_edges, faces=new_faces)
@ -94,4 +94,4 @@ if __name__ == '__main__':
cube = json.load(open('blender/samples/cube.json', 'r')) cube = json.load(open('blender/samples/cube.json', 'r'))
p = PolygonMesh(**cube) p = PolygonMesh(**cube)
q = refine(p) q = refine(p)
print q print json.dumps({'vertices': [list(v) for v in q.vertices]})