Render.ru

Независимое движение joints

Юрий.

Активный участник
Рейтинг
5
#1
Всем добрый день!
И снова вопрос про joints. Вводная - всё нижеперечисленное производится с помощью координат и MEL. Представим себе что есть 2 узла и "кость" между ними - они представляют "локтевую" часть. От одного из узлов отходят 5 "костей" с узлами на концах - "пальцы". Каждые соседние узлы связаны между собой IK handles. Движение "пальцев" осуществляется с помощью IK handles. Ибо когда я двигаю узлы, то трудно контролировать длину кости "пальца".
Вопрос - как "развязать" между собой IKhandles "пальцев", чтобы при движении одного эффектора не двигались бы остальные "пальцы", т.е. не вращался бы узел, к которому приклеплены несколько управляющих пальцами IKhandles. Или - как зафиксировать длину кости так, чтобы можно было бы перемещать концевой узел по координатам (которые априори не требуют изменения длины связи) и при этом не озменялась бы её длина, т.е. перемещение из А в Б осуществлялось бы исключительно вращением?

 

Юрий.

Активный участник
Рейтинг
5
#2
Есть подозрение, что для контроля длины кости можно ввести ещё один атрибут и вычислять его на каждом фрейме. Пока не получается это сделать.
 

nemyax

Активный участник
Рейтинг
16
#3
Вопрос - как "развязать" между собой IKhandles "пальцев", чтобы при движении одного эффектора не двигались бы остальные "пальцы", т.е. не вращался бы узел, к которому приклеплены несколько управляющих пальцами IKhandles.
Создать для каждого "пальца" свой собственный корневой джойнт в том же месте, где "запястье". Сделать эти новые джойнты потомками "запястья". Переназначить IK handles.
 

Юрий.

Активный участник
Рейтинг
5
#4
Это понятно. Спасибо. Но не хотелось бы нагружать и без того перегруженную сцену. Да и ответвлений у меня - до чёрта. Может, как нибудь по другому можно?
 

nemyax

Активный участник
Рейтинг
16
#5
Вряд ли другой способ будет просчитываться быстрее, чем один лишний джойнт на щупальце. Да и как по-другому? Экспрешеном? Это тоже нода...
 

Юрий.

Активный участник
Рейтинг
5
#6
Да, вот думаю про Экспрешн. Добавлять узлы в нашу модель ну очень бы не хотелось.
Написал Экспрешн:

float $len;
float $prev[];
float $le[];
$prev=`joint -q -a -p joint3`;
$le=`joint -q -a -p joint4`;
//print $le[1];
float $x;
float $y;
float $z;
$x=$le[0]-$prev[0];
$y=$le[1]-$prev[1];
$z=$le[2]-$prev[2];
$len=sqrt(($x*$x)+($y*$y)+($z*$z));
print $len;
joint4.Length=$len;

Да вот не знаю, как поставить лимиты на атрибут joint4.Length. И будет ли при этом Maya искать возможные пути достижения заданной координаты с помощью вращения?
 
Сверху