728x90
mesh = om.TriMesh()
points = []
faces = []
pre_roofs =[]
for idx, row in corridor_info.iterrows():
center = row['center']
top = row['top']
bot = row['bot']
top_int = row['top_intersect'][0]
bot_int = row['bot_intersect'][0]
center_vh = mesh.add_vertex(center)
left_vh = mesh.add_vertex(top)
right_vh = mesh.add_vertex(bot)
left_edge_vh = mesh.add_vertex(top_int)
right_edge_vh = mesh.add_vertex(bot_int)
if idx > 0:
face3 = mesh.add_face(pre_roofs[1], pre_roofs[3], left_edge_vh)
face5 = mesh.add_face(left_edge_vh, left_vh, pre_roofs[1])
face1 = mesh.add_face(pre_roofs[0], pre_roofs[1], left_vh)
face6 = mesh.add_face(left_vh, center_vh, pre_roofs[0])
face2 = mesh.add_face(pre_roofs[0], center_vh, pre_roofs[2])
face7 = mesh.add_face(center_vh, right_vh, pre_roofs[2])
face4 = mesh.add_face(pre_roofs[2], right_vh, pre_roofs[4])
face8 = mesh.add_face(right_vh, right_edge_vh, pre_roofs[4])
print(face1.idx(), face2.idx(), face3.idx(), face4.idx(), face5.idx(), face6.idx(), face7.idx(), face8.idx())
pre_roofs = [center_vh, left_vh, right_vh, left_edge_vh, right_edge_vh]
#points.append(center)
#points.append(top)
#points.append(bot)
#points.append(top_int)
디버깅을 해보았을 때
문제점 :
mesh.add_vertex와 mesh.add_face를 이용해 mesh를 생성하는데 구멍뚫린 부분이 나타난다.
디버깅 :
face#.idx() 가 -1이 나오면 face가 제대로 생성되지 않았다는 뜻이다.
해결 방안 :
vh 인자들의 순서를 될 때까지 바꿔주면 된다.