Render.ru

Риггинг руки

аниматорХХХ

Пользователь сайта
Рейтинг
2
#1
есть цепочка ИК и ФК костей, и цепочка костей, на каждую из которых назначен 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)?
 
Последнее редактирование:

maiden666

Мастер
Рейтинг
112
#2
прикажешь смотреть всё видео чтобы уловить как и что там сделано?
Я делал это так - при растяжении ИК-цепочки мы делили текущее значение длины на базовое и получали множитель растяжения ( переменная Stretch в выражении), а затем для ФК-костей собственно и записывали это самое выражение в скрипт-контроллер для Scale X, где их исходное значение умножалось на величину Стреч
 

аниматорХХХ

Пользователь сайта
Рейтинг
2
#3
прикажешь смотреть всё видео чтобы уловить как и что там сделано?
извиняюсь, теперь расписал все как можно подробно

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

maiden666

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