Render.ru

Вопрос по stretchy legs

Ken_Zin

Мастер
Рейтинг
108
#1
Занялся прохождением вот этого урока : DT-Cartoon Character in Maya rigging
1.Дошёл до места, где автор сделал возможным растягивать ноги персонажа.
2.А потом показал, как вкл и выкл эту возможность. И вот тут то у меня не получилось.
Первая часть в expression editor выглядит так :

//Stretch Expression
if (dist_r_leg0Shape1.distance >= div_r_leg01.input1X){
bn_r_thigh01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
bn_r_kneeA01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
bn_r_kneeB01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
}else{
bn_r_thigh01.scaleX = 1;
bn_r_kneeA01.scaleX = 1;
bn_r_kneeB01.scaleX = 1;
}

А потом он сюда дописывает и получается вот что :

if (jc_r_foot01.mode == 1){

//Stretch Expression
if (dist_r_leg0Shape1.distance >= div_r_leg01.input1X){
bn_r_thigh01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
bn_r_kneeA01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
bn_r_kneeB01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
}else{
bn_r_thigh01.scaleX = 1;
bn_r_kneeA01.scaleX = 1;
bn_r_kneeB01.scaleX = 1;
}

}else if (jc_r_foot01.mode == 0){
bn_r_thigh01.scaleX = 1;
bn_r_kneeA01.scaleX = 1;
bn_r_kneeB01.scaleX = 1;
}


То есть он создаёт на главном манипуляторе ноги атрибут типа boolen. И говорит что когда этот атрибут равен 1, то Stretch Expression работает, в противном случае кости будут иметь scaleX =1.
Смысл работы мне предельно ясен. Но почему то когда я дописываю эту вторую часть с выключателем, экспрешн едитор говорит что не получилось обновить expression, то есть где-то я допустил косяк. Я уж думал что может быть описался где,и уже пробовал Ctrl+C с оригинального рига, Ctrl+Vв свой . Не работает.

Где я мог ошибиться...А есть ли другой способ сделать переключатель on/off на растягивалку?
 

DanR

Активный участник
Рейтинг
17
#2
if (jc_r_foot01.mode == 1)
{

if (dist_r_leg0Shape1.distance >= div_r_leg01.input1X)

{
bn_r_thigh01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
bn_r_kneeA01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;
bn_r_kneeB01.scaleX = dist_r_leg0Shape1.distance/div_r_leg01.input1X;

}
else

{
bn_r_thigh01.scaleX = 1;
bn_r_kneeA01.scaleX = 1;
bn_r_kneeB01.scaleX = 1;
}




else
{
if (jc_r_foot01.mode == 0){
bn_r_thigh01.scaleX = 1;
bn_r_kneeA01.scaleX = 1;
bn_r_kneeB01.scaleX = 1;
}}}
 

Ken_Zin

Мастер
Рейтинг
108
#3
Я разобрался, оказалось всё банально просто. С какого то перепуга у меня контроллеры на правой и левой ноге назыаались одинаково. Вот и не получалось. А что касается написания, то подошёл мой вариант.
 
Сверху