Я работаю над PyMEL скриптом, который позволяет пользователю дублировать выбранный объект несколько раз, используя кривую CV и ее координаты точек для преобразования & вращать каждую копию в определенную точку в пространстве. Для этого Im использует смежные 2 точки каждого CV (контрольная вершина) для определения поворота объекта.Преобразование 2 точечных коордов в векторные коорды для angleBetween()?
мне удалось получить координаты резюме кривой в
#Add all points of the curve to the cvDict dictionary
int=0
cvDict={}
while int<selSize:
pointName='point%s' % int
coords= pointPosition ('%s.cv[%s]' % (obj,int), w=1)
#Setup the key for the current point
cvDict[pointName]={}
#add coords to x,y,z subkeys to dict
cvDict[pointName]['x']= coords[0]
cvDict[pointName]['y']= coords[1]
cvDict[pointName]['z']= coords[2]
int += 1
Теперь проблема, у меня есть выяснить, как получить угол для каждого резюме. я наткнулся на angleBetween()
функции:
http://download.autodesk.com/us/maya/2010help/CommandsPython/angleBetween.html
В теории, это должно быть мое решение, так как я мог бы найти «средний вектор» (не уверен, если это математический термин) каждого из резюме кривой в (используя координаты смежных CVs, чтобы найти четвертую точку), и используйте указанную выше функцию, чтобы определить, сколько мне придется вращать объект, используя опорный вектор, например, на оси z.
По крайней мере теоретически - проблема в том, что функция принимает только один набор коордов для каждого вектора, и у меня нет абсолютно никакой идеи, как преобразовать мои точечные координаты в этот формат (так как у меня всегда есть как минимум 2 набора координат, по одному для каждой точки).
Спасибо.
Это, кажется, математический вопрос, но он очень неясен для всех, кто не знает PyMEL. Что такое CV? Кажется, вы используете синонимы «CV» и «point» - они одинаковы? Что это связано с дублированием чего-то? Вы пытаетесь определить, как вращать что-то, двигаясь вдоль кривой? – Beta
Ах, извините. На самом деле это вопрос Майи. CV относится к управляющим вершинам кривой, которая запрашивается (что, по существу, является точкой в пространстве). Im, используя координаты каждого cv, чтобы преобразовать дублированный объект в этот cv - однако я также хочу повернуть его так, чтобы он оказался в правильном направлении. Однако это не анимируется - объект будет дублироваться один раз за cv, а также перемещаться и поворачиваться в соответствии с этим cv. Никакая анимация не происходит и не предназначена. Я отредактирую сообщение, хотя, чтобы сделать его более ясным. – gh057
Хорошо, теперь как вы хотите представить поворот? Я имею в виду, хотите ли вы угол и ось, или набор (явно определенных) углов Эйлера, или что? – Beta