Библиотека поз Maya — смещение набора атрибутов

Итак, я разрабатываю библиотеку поз для студии, в которой стажируюсь. У меня это в значительной степени сделано, но при тестировании я обнаружил довольно большой недостаток инструмента. Когда я устанавливаю позу, ее позиции основаны на локальном пространстве ее родителя, но родитель представляет собой кривую вращения шкалы перемещения.

Когда аниматор устанавливает позу и выполняет цикл ходьбы, он не будет перемещать MSR. У меня проблема: что, если аниматор отодвинул персонажа от MSR и хочет установить позу? Прямо сейчас он вернется к тому месту, где находится MSR, если поза была установлена ​​​​в местоположении MSR, или вернется к положению, которое было установлено, на основе положения MSR.

Мне нужен инструмент для управления смещением, чтобы, когда аниматор перемещает риг от MSR, он не возвращался к тому месту, где поза была изначально установлена, а устанавливал позу в текущем местоположении в пространстве. Я думаю, что могу добиться этого, повозившись с матрицей или используя команду Dag на контрольных кривых, но я действительно понятия не имею, с чего начать.


person jredd    schedule 24.06.2013    source источник
comment
Вы используете DagPose или занимаетесь сохранением и восстановлением кривых самостоятельно?   -  person theodox    schedule 25.06.2013
comment
Сейчас я занимаюсь сохранением и восстановлением самостоятельно   -  person jredd    schedule 25.06.2013


Ответы (1)


Техническая часть довольно проста. Если вы уже храните все локально, для начала все будет относительно корня, и это лучший способ сделать это. Если вам нужно что-то делать в мировом пространстве, вы можете сделать это, используя xform(t = (x,y,z) ws = True), чтобы перемещать их в мировом пространстве, а не относительно.

Похоже, проблема семантическая: вам нужно в какой-то момент выяснить, хочет ли пользователь, чтобы персонаж располагался относительно корневой кости или нет. Вероятно, правильнее будет хранить ваши позы относительно все время и просто спрашивать пользователя, что делать:

1) сохранить относительные данные ниже корня, но только не сбрасывать корень. Это будет обрабатывать, скажем, позу бездействия, которая намеренно смещена от центра корня. Он применяется там, где корень находится во время восстановления. Отношение корень > скелет сохраняется, но корень остается там, где он был у аниматора во время восстановления.

2) восстановить как относительную, так и корневую позиции для точного соответствия исходной позе. Это было бы хорошо для чего-то вроде позы перехода цикла, которая должна быть точной как для движения корня, так и для позы персонажа.

Вы также можете попробовать что-то схитрить — например, восстановить позу, а затем настроить исходное положение (скажем, на проекцию таза на землю), но в этот момент вы пытаетесь спасти аниматоров от самих себя. 1 и 2 охватывают две реальные альтернативы: применить эту позу к моей MSR и ко всему остальному или просто ко «всему остальному».

person theodox    schedule 25.06.2013
comment
Тео Мне трудно понять, что ты имеешь в виду. Я все еще новичок в том, как все это будет работать, и я все еще немного не понимаю, какой должна быть иерархия, как я должен запрашивать информацию и как мне нужно настроить ее для смещения и применения. - person jredd; 25.06.2013
comment
Похоже, вы сохраняете позу, используя локальное вращение и перевод, да? Таким образом, «поза» (или «поза») всегда должна воспроизводить отношение скелета — и элементов управления, я должен был спросить, храните ли вы также элементы управления и настройки управления — к MSR. Единственное, что вам нужно сделать, это выяснить, хочет ли пользователь вернуть персонажу полную сохраненную позу (таким образом перемещая MSR) или применить ее только к скелету (таким образом сохраняя любые изменения в MSR). Что прояснить? - person theodox; 25.06.2013
comment
В настоящее время я храню информацию об атрибутах только для поз, поэтому я считаю, что она хранит вещи локально на основе их родителя, не знаю, что вы подразумеваете под настройками управления. Разговор с аниматорами, которые автоматически перемещают MSR после того, как они его установили, является большим запретом в этой книге, поэтому я пытаюсь установить его, не перемещая MSR. Я думал просто переместить MSR, но это решение не одобрялось. У меня возникли проблемы с пониманием того, что вы говорите, что применяете его только к скелету (таким образом сохраняя любые изменения в MSR). Я не уверен, как заставить его просто применить его к скелету. - person jredd; 25.06.2013
comment
или лучше сказать idk, как получить числа, чтобы получить правильное относительное положение. Я знаю, как применять атрибутивную информацию. Я храню информацию в базе данных SQL. Я просто не понимаю, как получить номера. - person jredd; 25.06.2013
comment
xform -q -ws дает вам значения мирового пространства (используйте -t для перевода и -r для поворота). xform -q -os даст вам локальные значения. Вы можете использовать ту же команду, чтобы установить их в локальном или глобальном пространстве. Вы также можете использовать трюк 'delete(parenConstraint(mo=False))', чтобы дешево объединить вещи;) - person theodox; 25.06.2013