在Blender Python API中检测平面边界

0 投票
1 回答
953 浏览
提问于 2025-04-17 09:55

我正在写一个脚本,用来根据平面生成建筑物。如果平面是个普通的矩形,那就简单多了——你只需要找出最靠近正负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,找出所有映射到单个元素列表的键。

撰写回答