Почему мой объект не достигает 0,0,0 при использовании команды xform Maya - PullRequest
0 голосов
/ 11 июля 2019

Я использую Maya, и я хотел бы переместить мой объект на 0,0,0 в мировом пространстве.Я использую команду xform, и мой объект не перемещается (основываясь на его центрированной оси) до 0,0,0.Вот то, что я бегу:

import maya.cmds as cmds

temp_xforms = [0,0,0]
cmds.xform('Bottle_new',translation = temp_xforms,worldSpace = True)

, и вот результат:

enter image description here

, и это то, что я ожидали хочу, чтобы произошло:

enter image description here

1 Ответ

1 голос
/ 11 июля 2019

Скорее всего, на вашем объекте есть смещение центра, и xform не учитывает это.Вы можете убедиться в этом, выбрав свой объект, перейдя в редактор атрибутов и перейдя на вкладку Local Space.Если все значения не равны 0, тогда он имеет смещение.

Вы можете вернуть свой сводный источник к мировому происхождению, запросив эти сводные значения и указав их отрицательную версию в команде xform.

Это должно быть что-то вроде этого:

import maya.cmds as cmds

pivs = cmds.xform("Bottle_new", q=True, piv=True)[:3]  # Get pivot offset values.

# Multiply all pivot values with -1.
for i in range(len(pivs)):
    pivs[i] *= -1

cmds.xform("Bottle_new", ws=True, t=pivs)  # Instead of [0, 0, 0] use the pivot values to snap it back to world origin.

Еще один очень хитрый способ - использовать matchTransform, поскольку учитывает точки поворота, но вам нужен еще один объект, которыйэто может соответствовать.Таким образом, вы можете создать временное преобразование в начале координат мира, выровнять его, а затем сдуть преобразование.Я считаю, что matchTransform доступен только> Maya 2016.

import maya.cmds as cmds

temp_transform = cmds.createNode("transform")  # Create a temporary transform at world origin.
cmds.matchTransform("Bottle_new", temp_transform, position=True)  # Align your object to the transform.
cmds.delete(temp_transform)  # Delete the transform.

В качестве альтернативы вы можете полностью избежать всего этого, удалив любые смещения на объекте, затем выбрав вершины и переместив его в центр оси.,При этом не будет никакого смещения, и вы можете использовать xform, как вы изначально хотели центрировать его в мировом происхождении.

...