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

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

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

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

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Настало время описать детально, как создать в редакторе гибкую оболочку, чтобы ее мог скушать движок и корректно воспроизвести в игре.
Если кто-то серьезно ковыряется с 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 без разницы, что там происходит с геометрией кости, если в локальной системе координат она всегда неподвижна.

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

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
Что насчет плавности переходов между анимациями и ключами прерывания? В случае физической имитации выглядеть оно будет не очень естественно, не?
 

Aven Felon

Любопытная Варвара
Регистрация
15 Июл 2016
Сообщения
2.539
Благодарности
2.702
Баллы
530
Вот чем программисты занимаются::)
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Что насчет плавности переходов между анимациями и ключами прерывания?
Это не realtime физика, а заранее сохраненная в общей анимации. На переходах работать будет также, как и все прочие анимации. Т.е. в рамках возможностей движка более чем удовлетворительно. Плюс есть возможность ручной анимации костей. Или отключения анимации вообще, если нужно. Blend для костей груди будет работать также, как и для всех прочих.
Для рендеров система вообще безотказная.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
Ну о том и речь что анимации так или иначе зависят друг от друга, а сама реализация всего этого дела требует высоких трудозатрат. Я бы посмотрел еще в сторону симуляции костей в реальном времени выполнения.
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Это глубокая доработка движка. Могу лишь заметить, что realtime - это хорошо, но не всегда. Какая мне разница, будут ли кости заранее просчитаны или болтаться в реальном времени? Корейцы вон в своих MMO используют предварительный просчет. И нормально. А realtime может быть опасен всякими глюками вроде застревания костей в теле. Помнится, играя в bioshock 3, наблюдал, как сходит с ума юбка на теле героини. И это AAA игра.

В приципе, если взять для движка что-то от решений nvidia в области физики, было бы неплохо. Например, анимацию всяких свисающих с колен тряпок. Или волос.

Flex - не трудозатратен. Это realtime-модификатор с высокой степенью гибкости и стабильности. Один раз настроить и он будет на лету подстраиваться под любую загруженную на скелет анимацию.

Я нашел еще одну интересную штуковину, но о ней чуть позже.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.802
Баллы
995
Я нашел еще одну интересную штуковину, но о ней чуть позже.
Алекс няха, поставь Синяка для посчупать, там плюх по аниме в раз больше.. *pointing*
Единственный минус, экспортер только для старенькой версии имеется.. :(
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Алекс няха, поставь Синяка для посчупать, там плюх по аниме в раз больше..
Любые плюхи бесполезны, если их игнорирует экспортер и движок. Caracter Studio лично меня всем устраивает. И корейцы свой зверинец делали в максе. ;)
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.802
Баллы
995
Ну, если только так, что устраивает.. :)
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
Это глубокая доработка движка.
Это смотря что нужно. В рамках зенгина хватит базовых знаний векторов, которыми, в общем, и определяются кости. Создать упругую пружину не сильно сложно. Достаточно знать направление кости к которой приконекчены груди и их направляющую

свисающих с колен тряпок
Ну у меня есть несколько решений вертексной упругой и неупругой связей.. Не нвидиа конечно, но сообразить тряпки уровня элекса, в целом, можно.
 
Последнее редактирование:

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Это смотря что нужно.
Тебе нужно построить что-то вроде flex модификатора на движке. И применять его к костям модели, которые можно обозвать специфически:
zflex_01 и т.п. Не знаю только, как это настраивать индивидуально.

но сообразить тряпки уровня элекса, в целом, можно.
Тряпки, как правило, часть основного меша, пришитого к костям. Ну и нужно еще что-то для коллизий. Задачка сложнее, чем с обычной тряпкой на бельевой веревке, которую можно просчитать заранее и сохранить как морф в игру.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
настраивать индивидуально.
Zs/bip01_<name>_flex_<radius>_<elasticity>

Тебе корректные коллизии не обеспечит даже нвидиа.. можно завязать их вертексно на костях или меше, но больших плащей или цельнотелых платьев лучше избегать.
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Zs/bip01_<name>_flex_<radius>_<elasticity>
Модель подготовить?

Тебе корректные коллизии не обеспечит даже нвидиа.. можно завязать их вертексно на костях или меше, но больших плащей или цельнотелых платьев лучше избегать.
Ясное дело, особенно с тем сложным набором движений, что есть в игре. Нужно, чтобы можно было деформировать свисающие части, как например, платье моей модели. Т.е. часть вершин, плавно от неподвижных до динамических. С коллизией сложно, надо заводить какие-то опорные элементы в местах применения физики. В TES примерно так сделано.
Цельную ткань, покрывающую тело полностью, оставим для CGI.
 

unknown111

Участник форума
Регистрация
5 Фев 2013
Сообщения
1.072
Благодарности
1.581
Баллы
290
Ну у меня есть несколько решений вертексной упругой и неупругой связей.. Не нвидиа конечно, но сообразить тряпки уровня элекса, в целом, можно.
Было бы очень круто сделать нормальное подобие физики тканей для брони при передвижении... +100500 к атмосфере, правда все брони ре-мастерить)
Главное что бы тряпки не колыхались в режиме покоя, ибо нормального ветра для окружения то нет :)
А физика груди, для Готы, фактически, абсолютная ересь. Она нужна только для высоко-детализированных проектов, с качественными кат-сценами , где грудь солидно фигурирует в кадре...
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
549
Благодарности
142
Баллы
220
Ничего себе. Вот, где уж точно эта тема раскрыта:)
 

alex_draven


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

Смотрите шире и вы увидите не только сиьски, но и какого-нибудь монстра с пульсирующими гнойными нарывами.
 
Последнее редактирование:

unknown111

Участник форума
Регистрация
5 Фев 2013
Сообщения
1.072
Благодарности
1.581
Баллы
290
Моё дело показать, что это может работать. Мне и так хорошо известно, что правильный готоман предпочитает исключительно крепкие мужские попы.

Смотрите шире и вы увидите не только сиьски, но и какого-нибудь монстра с пульсирующими гнойными нарывами.
Оно и так многим было понятно что можно просто анимировать дополнительные кости и она зашевелится, но причем тут мужские попцы я понятия не имею...
Тут дело в том что для Готы еще фактически не было ни одного нового, качественного, полностью анимированного, зверя, а ты предлагаешь парится с анимацией нарывов у них :)
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
Было бы очень круто сделать нормальное подобие физики тканей для брони при передвижении...
а сколько ты готов заплатить за это? ::)
сложность реализации с учетом топорности готана сравнима с переносом движка на рельсы 9го дх :)
 

unknown111

Участник форума
Регистрация
5 Фев 2013
Сообщения
1.072
Благодарности
1.581
Баллы
290
а сколько ты готов заплатить за это? ::)
*flag of Russia*
сложность реализации с учетом топорности готана сравнима с переносом готана на рельсы 9го дх :)
Оно и понятно, это дело даже крупные студии частенько игнорируют, несмотря на то что им не мешает движок...
 
Сверху Снизу