2012-01-09 3 views
1

Как вы пишете Maxscript, который получает три точки, необходимые для создания лица?Какие точки в трехмерном пространстве имеют форму + угол между гранями?

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

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

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

ответ

0

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

Эта функция возвращает массив, состоящий из индекса номинальной, а значение 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.

+0

Мне удалось решить это с помощью полиопа. Одна вещь: как определить направление угла? Насколько я понимаю, нормали обращены наружу, так как я могу определить, является ли 90 ° губой или ударом? – Zurechtweiser