Вторая «засада» - крыло слишком тонкое. Как только мы начнем вручную редактировать влияние костей на поверхность (веса прискиненных точек), так неизбежно столкнемся с тем, что после редактирования веса точек верхней части поверхности будут отличаться от весов нижней части, а значит при вертикальном «сложении» поверхности будут деформироваться немного по-разному и, как следствие, проникать одна сквозь другую.
Можно, конечно, реализовать деформации крыла через набор blendshape'oe, но вряд ли в таком случае мы получим достаточно гибкое управление. Да и вообще, подобное решение будет громоздким и неэлегантным, этакий «тришкин кафтан», весь состоящий из технологических заплаток. Но тем не менее, если мы ставим себе задачу получить всего лишь парящую где-то далеко в небесах чайку, то «монокрыло>* может быть вполне адекватно поставленной задаче. И для реализации анимации «геометрического» крыла можно воспользоваться одним из методов косвенного или опосредованного скиннинга (indirect skinning), основная идея которого заключается в том, что кости скелета управляют поведением вспомогательного объекта (или объектов) или деформера, который, в свою очередь, и определяет деформации крыла.
В качестве простейшей конструкции рассмотрим следующий пример.
Припарентим к костям крыла несколько локаторов, «погуще» в районе сустава.
С помощью Point Constraint прикрепим к каждому из локаторов по отрезку NURBS-кривой. (Во избежание недоразумений, в дальнейшем желательно, чтобы эти отрезки были одинаковы с топологической точки зрения, то есть состояли из одинакового количества контрольных точек и были бы одной степени. Лучше всего, если бы это были копии с одного эталонного образца.) Пивоты отрезков имеет смысл разместить в граничных точках.
Из-за того, что мы прикрепили отрезки с помощью Point constraint, они всегда остаются параллельны одной оси.
Если теперь по этим отрезкам построить NURBS-поверхность (loft), «не убивая» историю (history), при манипуляциях с костями поведение построенной поверхности будет ближе к поведению крыла (конечно, такое крыло еще не слишком соответствует динамике настоящего крыла пернатых представителей фауны и больше напоминает махолет, но все же…)
Теперь можно использовать полученную NURBS-поверхность в качестве wrap-деформерэ для исходной геометрии крыла.
Вы, может, спросите: зачем? А дело в том, что Wrap-деформер позволит нам избежать самопересечения геометрии исходного крыла при деформациях, как по ширине, так и по толщине.
Более того, подобной конструкции крыла можно добавить несколько большую степень правдоподобности за счет согласованных между собой вращений базовых отрезков как вправо-влево, так и вверх-вниз. Первое позволит нам проэмулировать «растопыривание» крыльев (хотя «растопыривание" - слишком громкое слово, скорее мы получим растягивание крыла в продольном направлении, что само по себе далеко от реального поведения перьев), второе - отставание задней кромки крыла при маховых движениях.
Конечно, не надо вращать базовые отрезки независимо друг от друга, нужно согласовать их вращение. Проще всего это сделать, «посадив» эти самые отрезки с помощью Driven Key на дополнительные управляющие атрибуты.