Хорошо, значит, вы проходите через свои старые стены и используете makeIdentity
, чтобы заморозить их преобразования.
Теперь представьте, что у вас есть старая стена, которая повернута на 90 градусов в x. После того, как вы зафиксируете ее преобразования, стена останется там, где она есть, но ее повороты упадут до 0. Теперь, когда вы запрашиваете его вращение по оси x, он возвращает 0, как если бы он никогда не вращался в первую очередь (даже если это так!). Поэтому, когда вы делаете новую стену и применяете к ней вращение, вы просто применяете 0 по всем осям x, y и z. Вот почему вы не получаете никакого вращения.
Что касается позиции, когда вы используете makeIdentity
для преобразований, она переводит все переводы в 0, за исключением того, что переносит старые значения в свои опорные точки. Это можно увидеть, выбрав старую стену и переключившись в Редактор атрибутов> Сводки> Локальное пространство. Если какое-либо из этих значений равно , а не 0, это означает, что объект имеет смещение в своих осях. А использование xform
не учитывает эти значения при переводе запроса, поэтому вы получите странное смещение. Теперь, если вы используете Maya 2016 или выше, вы можете использовать matchTransform
, и будет учитывать опорных точек. В противном случае вы должны сделать еще один вызов с xform(q=True, pivots=True)
и включить эти значения в свои расчеты.
Самое простое решение сейчас - закомментировать makeIdentity
, чтобы вы вообще не замораживали преобразования на старых стенах. ,Таким образом, ваше вращение останется нетронутым, и вы не создаете смещения оси.