Я программирую функцию на Python в Autodesk Maya (используя PyMel для Maya)
У меня есть три 3D-точки; р0, р1, р2.
Затем они делают жесткое преобразование, так что после преобразования (аффинного преобразования) я получаю их новые позиции; q0, q1, q2.
У меня также есть четвертая точка перед преобразованием; р3. Я хочу вычислить его позицию после того же преобразования; д4.
Поэтому мне нужно рассчитать матрицу преобразования, а затем применить ее к p4. Я тоже не знаю, как быть. Список = массив объектов
import pymel.core as pm
import pymel.core.datatypes as dt
p0 = dt.Vector(pm.getAttr(list[0]+".tx"), pm.getAttr(list[0]+".ty"), pm.getAttr(list[0]+".tz"))
p1 = dt.Vector(pm.getAttr(list[1]+".tx"), pm.getAttr(list[1]+".ty"), pm.getAttr(list[1]+".tz"))
p2 = dt.Vector(pm.getAttr(list[2]+".tx"), pm.getAttr(list[2]+".ty"), pm.getAttr(list[2]+".tz")
p3 = dt.Vector(pm.getAttr(list[3]+".tx"), pm.getAttr(list[3]+".ty"), pm.getAttr(list[3]+".tz"))
Точки 3D считываются из анимированных объектов в сцене Maya. Итак, в другом кадре я запускаю этот код, чтобы получить
q0 = dt.Vector(pm.getAttr(list[0]+".tx"), pm.getAttr(list[0]+".ty"), pm.getAttr(list[0]+".tz"))
q1 = dt.Vector(pm.getAttr(list[1]+".tx"), pm.getAttr(list[1]+".ty"), pm.getAttr(list[1]+".tz"))
q2 = dt.Vector(pm.getAttr(list[2]+".tx"), pm.getAttr(list[2]+".ty"), pm.getAttr(list[2]+".tz"))
#q3 = TransformationMatrix between (p0,p1,p2) and (q0,q1,q2), applied to p3
Я пытался считать с векторами, но получил ошибки из-за деления на ноль... Поэтому я решил, что матрица преобразования должна решить это без проблем.
У меня крайний срок не за горами, и мне ОЧЕНЬ нужна помощь в решении этого вопроса! ПОЖАЛУЙСТА ПОМОГИ!
Изменить: как выполнить аффинное преобразование координат с помощью python?
Мне нужна эта функция "solve_affine", но она должна брать только 3 точки из каждого набора вместо 4. И я не могу использовать numpy...