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