在Blender Python API中检测平面边界
我正在写一个脚本,用来根据平面生成建筑物。如果平面是个普通的矩形,那就简单多了——你只需要找出最靠近正负X、正负Y和正负Z的顶点。但是如果平面形状不规则呢?在Blender的Python接口中,有没有简单好用的解决办法?其实有没有什么聪明的方法可以检测边界上的面、边和顶点呢?
1 个回答
1
寻找边界边缘:这些边缘只连接到一个面。可以查看Mesh类,特别是edges(边缘)、faces(面)和vertices(顶点)这些属性。不幸的是,边缘并没有包含它们属于哪些面的列表,所以你需要自己建立这样的映射,比如:
EdgeFaces = {} # mapping from edge to adjacent faces
for ThisFace in TheMesh.faces :
for ThisEdge in ThisFace.edge_keys :
if not ThisEdge in EdgeFaces :
EdgeFaces[ThisEdge] = []
#end if
EdgeFaces[ThisEdge].append(ThisFace.edge_keys)
#end for
#end for
然后你只需要查看EdgeFaces,找出所有映射到单个元素列表的键。