Какие точки в трехмерном пространстве образуют грань + угол между гранями? - PullRequest
1 голос
/ 09 января 2012

Как написать Maxscript, который получает три точки, необходимые для создания лица?

Итак, у вас есть объект, скажем, у него 100 лиц.Тогда сценарий должен сказать мне, какие точки образуют каждую грань.

Также мне хотелось бы знать угол, под которым две смежные грани имеют друг к другу.

Заранее спасибо

1 Ответ

0 голосов
/ 10 января 2012

Это действительно два отдельных вопроса, но здесь идет речь:

Эта функция вернет массив, состоящий из индекса лица и значения point3, отображающего индексы вершин, которые создают эту грань.

fn GetAllFaceVertices meshObj = 
(   
    for v = 1 to m.numVerts collect #(v, getFace v) 
)

Эта функция возвращает угол между двумя гранями. Это делается путем получения нормали каждой грани, а затем возвращает арккосинус точечного произведения двух нормалей.

fn GetFaceAngles meshObj faceA faceB =
(
    local nA = getFaceNormal meshObj faceA
    local nB = getFaceNormal meshObj faceB
    acos (dot nA nB)
)

Обратите внимание, что обе эти функции ожидают объект editable mesh. Если вам нужно работать с editable poly объектом, есть похожие методы, которые используют структуру polyop.

...