Определение границы плоскости в Blender Python API

Я работаю над сценарием для создания здания из самолета. В то время как наличие нормальной плоскости - это прямоугольник, это довольно просто - вы ищете большинство вершин -/+X, -/+Y, -/+Z, но что если плоскость не имеет правильной формы? Есть ли хорошее решение в Python API в Blender? На самом деле, есть ли какой-нибудь умный способ обнаружить грани / ребра / вершины на границе?

1 ответ

Решение

Ищите границы границ: это будут те, которые прикреплены только к одному лицу. Посмотрите на класс Mesh, в частности атрибуты ребер, граней и вершин. К сожалению, ребра не содержат списка граней, к которым они принадлежат, поэтому вам придется создать такое отображение, например

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 для всех ключей, которые отображаются в одноэлементные списки.

Другие вопросы по тегам