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

как инвертнуть значение атрибута weightList ?

Тема в разделе "Maya", создана пользователем ClinicalFilm, 30 окт 2013.

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

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    есть задача перераспределять веса между врапом и кластером, я хочу для этого подать на атрибут weightList кластера инвертированное значение такого же атрибута от врап деформера, есть ли штатные возможности чтобы такое совершить? оч. пож....!!!
     
  2. Покатигорошек

    Покатигорошек Активный участник

    С нами с:
    09.12.2005
    Сообщения:
    232
    Симпатии:
    3
    Баллы:
    15
    подать WorldInverseMatrix деформера на все индексы bindPreMatrix кластера. кажись так...
     
  3. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    неа ... инверсная матрица - это не то... немного... я могу соединить weightList одного с weightList другого ... и кластер будет раскрашен так же как и врап, но мне надо инвертировать эту раскраску...
     
  4. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    скриптом или через карту
     
  5. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    спасибо, но карту надо сохранять, а хотелось бы иметь интерактивную связь. скриптом я пробовал соединять подАтрибуты(по точечные веса) но при этом майка вылетает каждый раз ... в инверс матикс weightList просто не коннектится ... пока не вижу варианта кроме как писать ноду ... но надеюсь на более простое решение ..
     
  6. Покатигорошек

    Покатигорошек Активный участник

    С нами с:
    09.12.2005
    Сообщения:
    232
    Симпатии:
    3
    Баллы:
    15
    может проблема в том, что врап не использует веса, а только сетмембершип?
     
  7. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    хотел былочи написать, что у майа нет инструментария интерактивной обработки атрибутов-массивов (ну за исключением эррэймаппера), но ведь действительно, весов как таковых у рэп деформера нет.... лоханулся...
     
  8. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    это не обычный врап, плагин - гпушный врап, очень шустрый, он с весом..
     
  9. Покатигорошек

    Покатигорошек Активный участник

    С нами с:
    09.12.2005
    Сообщения:
    232
    Симпатии:
    3
    Баллы:
    15
    хм, а это вообще в майе делается? ;)

    как вариант - законнектить веса на альфу вертекс-колора прокси(копии) объекта
     
  10. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    хм... а это ведь мулти-атрибуты разных типов. стандартными средствами они разве законектятся?
     
  11. Покатигорошек

    Покатигорошек Активный участник

    С нами с:
    09.12.2005
    Сообщения:
    232
    Симпатии:
    3
    Баллы:
    15
    не..) только ручками ;)

    тип один и тот же - флоат. и индексация совпадает. что ещё нужно?
     
  12. SLONIK_ZX

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

    С нами с:
    02.03.2003
    Сообщения:
    238
    Симпатии:
    1
    Баллы:
    14
    Inverse deformer weights:

    1ый вариант на меле. Копирую с softMod1 на softMod2 "инвертнутые"веса. Без интерактива.

    {
    int $i;
    for ($i = 0; $i < 5000; $i++)
    {
    //print ("i=" + $i + "\n");
    $ee = (1 - `getAttr softMod1.weightList[0].weights[$i]`);
    setAttr softMod2.weightList[0].weights[$i] $ee;
    }
    }

    2ой вариант на меле, интерактивный. Создаю инверс ноды (для каждого вертекса):
    {
    int $i;
    for ($i = 0; $i < 121; $i++) // 121 - number of vertexes in geometry (default pPlane)
    {
    createNode reverse -n ("reverse" + $i);
    connectAttr softMod1.weightList[0].weights[$i] ("reverse"+$i+".input.inputX");
    connectAttr ("reverse"+$i+".outputX") softMod2.weightList[0].weights[$i];
    }
    }

    3й вариант на супе (SOuP). Интерактивный:

    softMod1(weightList) -> multiToArray -> remapArray -> arrayToMulti -> softMod2
    INVERSE.jpg
     
    _T нравится это.
Модераторы: Dark™, Skif

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