• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык

Анимация гибкой оболочки на примере женской груди

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
  • Первое сообщение
  • #1
Настало время описать детально, как создать в редакторе гибкую оболочку, чтобы ее мог скушать движок и корректно воспроизвести в игре.
Если кто-то серьезно ковыряется с 3DsMax, то данный урок будет полезен еще и потому, что вы едва ли найдете в сети более простой и в то же время столь гибкий и эффективный способ.

На первом этапе берем заготовку любого скелета:
_1.png
Далее нам нужно добавить две кости в качестве extra в область груди. Лучше всего воспользоваться услугами Xtras:
_2.png
Этой функции нет в старых версиях 3dsmax. Я ковырял на 2011.
Желательно сделать opposite Xtra, чтобы получить левую и правую кости (зеленая и синяя). Так удобнее и правильнее с точки зрения топологии скелета. Также важно, чтобы эти кости были прилинкованы к кости спины. В моем случае это Bip01 Spine3.

На скриншоте видно, что кости имеют свою геометрию. Если в свойствах кости указать Display as BOX, то они станут выглядеть также, как и все прочие кости в моей сцене. Потом так и сделаем. А пока запомним, что кость имеет свою геометрию.

Когда я сидел и думал, как анимировать такую сложную систему, как "женская грудь", то начал с проработки упрощенной модели. Представим себе обычную гибкую пружину с закрепленным основанием. Максимальное отклонение от точки покоя будет иметь точка, удаленная от неподвижного основания на расстояние, равное базовой длине пружины:
_3.png
Посмотрим на нашу кость в редакторе. Если неподвижные точки это те, которые "ближе к телу", то максимально отклоняемая будет эта:
_4.png
Движок игры работает таким образом, что позволяет анимировать всё, что опирается на кости. Если заставить деформироваться геометрию кости, как на рисунке, то, к сожалению, это будет лишь деформацией ее внешнего вида. Сами опорные точки кости, по которым она привязывается к другим костям, деформироваться не будет. А значит, вырисовывается нехитрая задача по созданию дополнительной кости, которую мы должны привязать к колебательной системе нашей базовой кости. А именно к точке, отмеченной красным на рисунке выше.

Для этого воспользуемся хелпером типа point. Лучше сразу его повернуть на такой же угол в мировой системе координат, что и наши симметричные кости груди. Затем применяем к нему attachment constraint с параметрами, как на рисунке:
_5.png
Это означает, что наш точечный хелпер прилипнет навечно к нужной крайней точке колебательной системы и будет сориентирован строго по ней.
Время создать нашу рабочую кость. Для движка пофиг, как она будет выглядеть, главное, чтобы назвалась Bip01 xxx. Я беру обычный бокс:
_6.png
К этому боксу применяем position constraint и выбираем в качестве цели наш хелпер point:
_7.png
Если очень хочется, чтобы рабочая кость повторяла вращение, можно добавить orientation constraint, но для движка это не важно.
Вращая корневую кость (зеленую или синюю), можно видеть, как рабочая кость следует за ней. Т.е. она как бы прибита на гвоздь и болтается. Несложно понять, что если геометрия нашей корневой кости будет деформироваться, то точка привязки начнет плавать туда-сюда, а, значит, начнет плавать рабочая кость. Система работает!
_8.png

Настало время завершить модель. То, что у меня сразу не получилось. Дело в том, что при использовании модификатора physique для привязки шкурки к скелету очень важно, чтобы любая кость заканчивалась хелпером. Если вы возьмете рабочий Biped скелет, то увидите, что все цепочки костей оканчиваются хелперами в виде боксов, в названии которых есть по умолчанию суффикс "Nub". У моделей от разработчиков игры они переименованы в Dummy##. И при экспорте в ASC они тупо отсеиваются.
Это означает одну простую вещь: к нашей рабочей кости, которую я делал обычным боксом, нужно приаттачить хелпер типа Dummy. Примерно вот так:
_9.png
Система готова. Вот как оно выглядит после доводки и привязки:
_10.png
Иерархия костей у меня вот такая:
_11.png
Белым выделены рабочие кости. А корневые без приставки Bip01 - они нам в игре не нужны.

Ну а теперь завершающий этап. Именно то, что оживит подвижную систему. Это, товарищи, замечательный модификатор Flex. Именно что замечательный, т.к. очень простой и весьма стабильный. В отличие от большей части того глючного говна, что несет в себе могучий 3д-пакет от Autodesc.
Применяем его к нашим корневым костям, которые должны деформироваться. Вот так это выглядит для правой рабочей кости груди:
_12.png
Для левой аналогично.
Тут важны параметры, обведенные красным. Цифры определяют параметры колебательной системы, а кнопка reset возвращает кости в стартовое положение при работе с анимациями, т.к. они будут могут изменять положение, пока вы ковыряете модель.
0, 7 1,0 5,0 - это подходит для статичных положений, когда персонаж совершает фоновые движения.
0,4 0,75 5,0 - подходит для динамики, когда персонаж прыгает, бегает и пр.

В любом случае, подбирается опытным путем под вашу модель. При проигрывании анимации дайте ей прокрутиться пару циклов, чтобы колебательная систем подуспокоилась и зациклилась. Можно вручную слайдер временной шкалы повозить туда-сюда. Flex мне нравится потому, что он работает в режиме реального времени и сам стабилизируется.
Важную роль также играет то, как вы пришьете шкурку к рабочим костям. Помните, что корневые кости в привязке участвовать не должны. Для этого выделите их и снимите все галочки в этом поле:
_13.png
На рисунке видна привязка оболочки к рабочим костям. Корневые отключены. А хелперы игнорируются по умолчанию.

Почему нельзя было сразу привязаться к корневой кости и не городить огород? Дело в том, что flex меняет только ее условную геометрию, но параметры самой кости в точках привязки не меняются. И для модификатора physique без разницы, что там происходит с геометрией кости, если в локальной системе координат она всегда неподвижна.

На этом всё.
 
Последнее редактирование:

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Ну вот, этого достаточно, чтобы сделать, например, болтающийся в неких пределах меч на спине при движении.
Что до сложных механик, то понятия не имею, как оно делается на сложных движках. Всяких хелперов и костей я могу нагородить огород, а что делать с ними дальше :confused:
 
Сверху Снизу