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

Риггинг руки

Тема в разделе "Анимация", создана пользователем аниматорХХХ, 16 ноя 2015.

Модераторы: Артер
  1. аниматорХХХ

    аниматорХХХ Пользователь сайта

    С нами с:
    02.05.2015
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    2
    есть цепочка ИК и ФК костей, и цепочка костей, на каждую из которых назначен Orientation Constraint, в качестве таргетов для первой кости назначены 1 кость ИК цепочки и 1 кость ФК цепочки и т.д; на ИК контрол назначен Attribute holder и создан кастомный атрибут IK/FK, c с помощью Wire Parametrs атрибут IK/FK связан с весом таргетов таким образом, что при IK/FK=0 вес ИК костей равен 100%, а вес ФК = 0%; при IK/FK=100
    вес ИК костей равен 0%, а вес ФК = 100%;

    на X position IK костей( начиная со второй кости) назначен скрипт:
    dependsOn $IKChain01.pos.controller $Bone01.pos.controller // пересчет скрипта при изменении расстояния между первой костью и контролом
    d = distance $IKChain01.pos $Bone01.pos //вычисляется расстояние между первой костью и контролом
    ex = (d - 184.612) // Из текущего расстояния вычитается максимальное расстояние, после которого кости должны растягиваться
    orig = 111.804 //текущие положение данной кости
    if (ex < 0) then // если расстояние между контролом и первой костью больше заданной величины
    ex = 0 // то расстояние на которое растянута нога становится равным нулю
    p = orig + (ex/2) // и устанавливается положение кости по x
    (http://korolinka.livejournal.com/1107.html)
    Как сделать, чтобы растяжение IK костей передавалось на кости для скиннинга(skin bones), когда вес IK костей выставлен на 100% ( т.е IK/FK = 0)?
     
    Последнее редактирование: 17 ноя 2015
  2. maiden666

    maiden666 Знаток

    С нами с:
    06.04.2010
    Сообщения:
    3.092
    Симпатии:
    87
    Баллы:
    74
    прикажешь смотреть всё видео чтобы уловить как и что там сделано?
    Я делал это так - при растяжении ИК-цепочки мы делили текущее значение длины на базовое и получали множитель растяжения ( переменная Stretch в выражении), а затем для ФК-костей собственно и записывали это самое выражение в скрипт-контроллер для Scale X, где их исходное значение умножалось на величину Стреч
     
  3. аниматорХХХ

    аниматорХХХ Пользователь сайта

    С нами с:
    02.05.2015
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    2
    извиняюсь, теперь расписал все как можно подробно

    насчет способа: я понял, как передать растяжение с Ик на Фк, но мне нужно, чтобы когда вес ФК был 100%, растяжение ИК не передавалось на кости для скиннинга, а когда ФК 0%, то растяжение ИК передавалось на кости для скиннинга на 100%. Знаю что в скрипте нужно обратиться к значению кастомного атрибута, но как это сделать( с точки зрения синтаксиса)?
     
    Последнее редактирование: 17 ноя 2015
  4. maiden666

    maiden666 Знаток

    С нами с:
    06.04.2010
    Сообщения:
    3.092
    Симпатии:
    87
    Баллы:
    74
    Не уверен, что смогу внятно обьяснить, но здесь у меня на ляжке как видишь 5 твист-бонов ( что не принципиально, просто чтоб было понятно откуда взялось выражние Length/5), это простой примитив, не поли, поэтому его длина определяется параметром Height, теперь самый важный момент - Height равна позиции нижней кости ( лодыжки) которую я подкрасил синим, поскольку она прилинкована к верхней кости, то её позиция в родительской системе координат как раз равна длине той самой верхней кости
    Итог - просто надо получить длину ИК-кости так или иначе и использовать для вычисления длины скин-бонов, это можно сделать и по другому, например тупо прилинковать линейку и брать её длину, как делал один мой знакомый
    http://c2n.me/3qtusjo
     
Модераторы: Артер

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