1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Вопрос по stretchy legs

Тема в разделе "Maya", создана пользователем Pacmaniac, 4 фев 2012.

Модераторы: Dark™, Skif
  1. Pacmaniac

    Pacmaniac Знаток

    С нами с:
    25.12.2008
    Сообщения:
    736
    Симпатии:
    99
    Баллы:
    40
    Занялся прохождением вот этого урока : 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 на растягивалку?
     
  2. DanR

    DanR Активный участник

    С нами с:
    13.02.2009
    Сообщения:
    240
    Симпатии:
    0
    Баллы:
    19
    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;
    }}}
     
  3. Pacmaniac

    Pacmaniac Знаток

    С нами с:
    25.12.2008
    Сообщения:
    736
    Симпатии:
    99
    Баллы:
    40
    Я разобрался, оказалось всё банально просто. С какого то перепуга у меня контроллеры на правой и левой ноге назыаались одинаково. Вот и не получалось. А что касается написания, то подошёл мой вариант.
     
Модераторы: Dark™, Skif

Поделиться этой страницей