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

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

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

Эксперименты по сложной оснастке персонажей

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
  • Первое сообщение
  • #1
ВНИМАНИЕ!
Перед изучением статьи будет полезно почитать предыдущую: "Правильное приготовление головы персонажа". Желательны также общие представления о работе в 3DsMax и вставке персонажей в моды для Готики.

Давно хотел описать эксперимент по созданию персонажа с длинными волосами на движке Готики. Данный материал вовсе не призыв бежать и делать что-то аналогичное, а скорее размышления на тему нераскрытого потенцЫала zengin.
Итак, для начала нужен персонаж с косой. Ничего кроме модели леди Крофт мне в голову не пришло. Однако, найти нормальный такой рип, сделанный прямыми руками, мне не удалось. Зато нашлась ее версия с хвостом из TR:Legend, с которой можно было сделать хоть что-то. Игра, кстати, 2006 года и в нее я не играл.
После некоторых чисток и ручной доводки, из рипа получилось вот что:
LR1.jpg
С головой я проделал примерно тот же прием, что и в первой статье. Правда, тут взял только лицо фактически:
LR2.jpg
Это и составило основу "готической" головы. На это раз не поленился даже сделать анимацию моргания, чтобы показать, что такая конструкция позволяет сделать мимику и отыграть ее на zengin.
Глаза и волосы остались частью основного тела (зубы и ротовую полость я удалил, т.к. особой роли для теста они не играют).
Идея теста состоит в следующем: просчитать физику косы (хвоста волос) средствами 3Д-редактора, а затем экспортировать анимацию в готический формат. Ввиду того, что никакой физикой в zengin не пахнет, а анимировать косу вручную удовольствие сомнительное, данный эксперимент весьма интересен.

Косу сделал с помощью стандартных костей Biped: три секции:
LR3.jpg
Сами секции связал средствами Point-Point Constraint, а физику коллизий повесил на кости бипеда. Кости имеют простую геометрию, поэтому расчет физики довольно быстр. Все моделирование делалось средствами reactor. Насколько я знаю, его выпилили из 3DsMax начиная с 2012 версии, и что пришло на замену (и пришло ли), сказать не могу.
В тесте не было цели сделать супер-реалистичную имитацию физики, все настройки подгонялись грубо, лишь бы программа схавала без ошибок и предупреждений.
После симуляции кости косы получают кадры анимации, которые можно удалять, редактировать и т.п. Я воспользовался этим в циклических анимациях, чтобы на пером и последнем кадрах положение косы совпадало. И тут очень полезно, что коса собрана именно костями бипеда, а не отдельными цепочками, т.к. анимацию костей бипеда очень удобно редактировать средствами CS.

Готовую модель собрал для Готики1, компилировал через Gothic Engine Керракса, т.к. там можно раз и навсегда при компиляции модели отключить LOD. Дальнейшие забеги были выполнены на чистой Готике 1.
Видео-отчёт тут:


Какие можно сделать краткие выводы? Ну, zengin вполне способен шевелить модели, которые были в ходу в играх до конца нулевых. Если бы PB развивали движок вглубь, то на нем вполне реально делать как качественную анимацию тела, мимики, так и простую анимацию физики отдельных элементов через движок игры.

Осмелюсь предположить, что не составит также труда анимировать сами глаза, чтобы персонаж ими мог вращать, а не только моргать, глядя в никуда. Штатными средствами.

Также можно экспортировать персонаж составным - руки и ноги отдельно, например. Это дало бы возможность делать, например, составную броню: торс, сапоги, перчатки (при наличии поддержки в движке). Т.е. каждый элемент брони покрывал только отведенную ему часть. Скажем, главный торс - это меш с именем zm_torso, перчатки - zm_arms, а сапоги - zm_boots. В скриптах соответственно: wear_torso/wear_arms/wear_boots.

По прежнему считаю освещение в zengin не подходящим для сложных моделей. С DX11-рендером не пробовал (скорее всего будет заметно лучше). И судя по всему, zengin ничерта не знает про Smoothing Groups :confused:

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

З.Ы. А почему никто никогда не распускал волосы безымянному герою?
 

alex_draven


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

В нашем случае из-за особенностей такой привязки меша головы к костям приходится волосы и глаза выносить в область тела (если волосы простые, то не надо).
Если бы глаза оставались частью морф-меша, то они бы вращались только тогда, когда включается face_ani из отдельного лицевого набора. А это только анимация диалога, ну, и может, еще пережевывания пищи. Остальное слишком кратковременное. И более в Готике ничего нет серьезного.
А вот в области тела глазами можно управлять в любом движении: от стояния на месте, до ударов мечом или работы за станком. Можно было б для морфа добавить возможность играть анимацию лица для любого из движений тела. Тогда к движению глаз можно добавить разные выражения лица, синхронизировав длительность анимации с длительностью указанных в скрипте базовых движений типа s_run, t_guard и т.д.. Вот тут, например, NPC курит кальян и всем доволен. А вот тут он рубит дрова и напряжен. И т.д.

Про волосы вообще: если их вынести в часть головы, то они в общем случае были бы мертво-дубовыми. И даже если их как-то оживить в морфе, то это капля в море: в 99% движений морф головы только моргает глазами в 1 кадр, оставаясь по сути неактивным.

что вроде не так много возможных вариантов разбудить НПС?
Я глубоко не копал. Хватило разбудить NPC ударом меча, или просто сменить время в консоли. И они начинали бегать с закрытыми глазами, т.к. те части дырявых скриптов, которые должны им глаза открывать в особых случаях просто не срабатывают. Безусловно, есть всякие костыли, вроде триггер-скриптов. Но мне кажется, это все слишком мутно и неудобно. "Mdl_StartFaceAni()" также работает, но это все настолько тупо, что нет слов. Надо, скажем, чтобы в моде трактирная девка тебе улыбнулась. Теперь ты включаешь ей FaceAni(), замечательно. А дальше что? Сразу выключить? Если не сразу, то при каких условиях? И даже если выключить, это смотреться будет странно: никакой плавности и естественности. Тут надо что-то принципиально иное, встроенное в систему диалогов.

) Для разных слоёв анимации можно заранее подготовить разнообразные цикличные фазы анимаций лица. Аналогично MMS-скрипту, только на разных слоях.
Попробую сделать пару примеров анимации диалога: нейтральный, приветливый и неприветливый. Просто показать, как это примерно могло бы выглядеть. Продолжения у этого не будет, т.к. у нас нет поддержки таких вещей в системе диалогов.

Также во всём этом может помочь функция "Npc_IsVoiceActive()". Проверка на активность голоса того или иного персонажа.
Я бы еще расширил диалог, задав ему флаг интонации от грубого до приветливого. Чтобы движок понимал, какую жестикуляцию ему выводить.

Например, кто-то из НПС может запускать свои анимации лица в своих же цикличных состояниях.
Это хорошо, но сильно попахивает крайней дискретностью - ВКЛ/ВЫКЛ. О чем чуть выше я уже написал.


если все это сводить в кучу и чтобы работало в игре, то надо все это хозяйство сначала вывести в отдельный уровень, относящийся конкретно к лицевой аниме и диалогам.
Абсолютно согласен. Причем можно оставить как старую схему с разделением головы и тела, так и внедрить другую, когда голова прописана не отдельно, а является частью оснастки всей модели. Ты мне как-то кидал модели из какой-то онлайн-игры, так там морф лица заделан для всего тела в целом, а не вынесен, как отдельный элемент модели. Просто в такой системе это как-то должно управляться по-другому в диалогах. Может, те же слои как-то работают для рта, когда тело "говорит". не знаю.
Короче, такие модели делают для 3Д-мультиков всяких, у них вся оснастка в одной сцене, начиная физикой костей и кончая рожей лица.

Вероятно, можно уже сейчас изготовить модель без морфа-головы на zengin, перенеся и ее в область тела к волосам и глазам. И в каждом движении анимировать лицо по полной. Настроения уже как-то оверлеями задавать. Но не берусь судить, насколько хорошо такой вариант себя покажет без серьезных тестов в диалогах. Да и в обычной беготне тоже.:oops:
Это точно не годится для системы смены лиц при одном и том же теле, на которой построено пол игры.
 

MaGoth

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

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

Вероятно, можно уже сейчас изготовить модель без морфа-головы на zengin, перенеся и ее в область тела к волосам и глазам. И в каждом движении анимировать лицо по полной. Настроения уже как-то оверлеями задавать. Но не берусь судить, насколько хорошо такой вариант себя покажет без серьезных тестов в диалогах. Да и в обычной беготне тоже.
А имеет ли смысл на это тратить время, тем более что:

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

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
435
Благодарности
261
Баллы
230
Где я об этом писал?
Вот эта фраза поменяла моё представление:
alex_draven написал(а):
Меш головы аттачим к кости головы Bip01 Head обычным способом.
Как я понял, эта операция нужна была только для проверки состыковки?
А я решил, что голова должна прикрепиться к кости "BIP01 HEAD" с помощью инструмента "Select and Link" и стать какой-нибудь "zm_Frill".


alex_draven написал(а):
Хватило разбудить NPC ударом меча, или просто сменить время в консоли. И они начинали бегать с закрытыми глазами, т.к. те части дырявых скриптов, которые должны им глаза открывать в особых случаях просто не срабатывают. Безусловно, есть всякие костыли, вроде триггер-скриптов. Но мне кажется, это все слишком мутно и неудобно."Mdl_StartFaceAni()" также работает, но это все настолько тупо, что нет слов.
Ну, кто как может.

Надо, скажем, чтобы в моде трактирная девка тебе улыбнулась. Теперь ты включаешь ей FaceAni(), замечательно.
А дальше что? Сразу выключить?
Не сразу.
Если не сразу, то при каких условиях?
При условии, что ГГ на неё не смотрит.
Либо если ГГ продолжает на неё смотреть, то она должна сильно заулыбаться и, засмущаясь, отвернуться и убрать свою улыбку.

И даже если выключить, это смотреться будет странно: никакой плавности и естественности.
Надо выключать с плавным переходом.

Можно было б для морфа добавить возможность играть анимацию лица для любого из движений тела.
Попробую сделать пару примеров анимации диалога: нейтральный, приветливый и неприветливый. Просто показать, как это примерно могло бы выглядеть. Продолжения у этого не будет, т.к. у нас нет поддержки таких вещей в системе диалогов.
В MDS-скриптах используется тэг "*eventMMStartAni()". Можно и здесь попробовать.
 

alex_draven


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

При условии, что
Ну в текущем виде наверно будет как-то работать. Хотя полезнее было бы изучить опыт речевых движков других игр, где это реализовано хорошо, и взять принцип отттуда. Например, старичок HL2, или такое консольное кинцо, как the Last of Us как практический идеал.

В MDS-скриптах используется тэг "*eventMMStartAni()". Можно и здесь попробовать.
При всей любви к MDS и всему, что сним связано, не могу не отметить, что всякие теги имеют привычку не выполняться, если по какой-то причине движение оборвалось в кадре, предшествующем кадру исполнения этого тега. :)
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Как обещано, тест сложной лицевой анимации в Готике 1:


Без привязки к игровым диалогам, естественно. Да, глаза стеклянными также не оставил.
*popcorn*
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.802
Баллы
995
Без привязки к игровым диалогам, естественно. Да, глаза стеклянными также не оставил.
Шикарная краля получается! :) Все очень даже симпатично.. *thumbs up*
Только синхра со звуком не хватает, эх.. ::)
 

alex_draven


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

Для катсцен или чисто сцен рендера, например, можно использовать плагин Voice-O-Matic, если там пресет под русский есть. 350 американских карбованцев всего :D. Он дает хорошую синхронизацию лицевой анимации модели с аудио-потоком. Язык там выбирается как базовая точка настройки.
 

MaGoth

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

Для катсцен или чисто сцен рендера, например, можно использовать плагин Voice-O-Matic, если там пресет под русский есть. 350 американских карбованцев всего . Он дает хорошую синхронизацию лицевой анимации модели с аудио-потоком. Язык там выбирается как базовая точка настройки.
Знакомо, но я макс не юзаю, пользую Синяка. Надо будет пошарить и вспомнить где и что было для него.. :)
 

Nergal_ov_Grim

Участник форума
Регистрация
8 Апр 2015
Сообщения
162
Благодарности
3
Баллы
170
Я, конечно, некромант, и воможно скажу очевидную или глупую вещь, но насчет волос и сложности их реализации: а если просто сделать не так много костей, прикрепить к ним полигональные полоски опред. толщины (см 5-10) и накидать на них текстуру волосяную, наподобие кустов и деревьев, т.е. с альфа-каналом (или как там это наз-ся). Тогда если пилить туда физику, то париться придется всего лишь с 20-30 костями. Конечно, не так мало, но и не очень много, чтоы создать прямо адский труд моделлеру.

Просто вспомнил, что что-то подобное было в одном файтинге года эдак 2012.
 

alex_draven


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

Nergal_ov_Grim

Участник форума
Регистрация
8 Апр 2015
Сообщения
162
Благодарности
3
Баллы
170
Это будет работать. Но тут проблема в сложности настройки скелета и коллизий костных цепочек.
Ранее тут писалось, что такой способ вообще широко используется, только под 3dsmax берутся специальные плагины, заточенные под данную задачу. Например - ezCloth. Шмотки он также прекрасно анимирует костями, можете видео посмотреть про то, как это настраивается.
Т.е. и плащ, если загнаться, то можно таким образом запилить? Это, конечно, будет куда дольше головы, но все же.
 

alex_draven


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

С волосами аналогично: можно отдельные висящие локоны делать. Можно вообще не использовать эти цепочки, если предполагается вариант головы с уложенными волосами.
 

Nergal_ov_Grim

Участник форума
Регистрация
8 Апр 2015
Сообщения
162
Благодарности
3
Баллы
170
Да.
Причем, если в игре используется броня без висящих кусков, просто не пришиваем ее части к этой специальной группе костей. Но они все-равно будут всегда в модели, невидимые в игре. Вплоть до групп можно разделить: плечи, область таза и т.п. И использовать их для разных вариантов шмота.

С волосами аналогично: можно отдельные висящие локоны делать. Можно вообще не использовать эти цепочки, если предполагается вариант головы с уложенными волосами.
Ну да, я так и подумал)
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Продолжим.

Как-то на форуме упомянули, что неплохо бы анимировать одну важную часть тела у женских персонажей. Сделать это с точки зрения обычного моделирования не сложно с помощью тех же костей. Однако, тут есть момент: грудь - это упругий, деформируемый элемент, который довольно сложно анимировать ручными методами. Вероятно, можно использовать какие-то физические модификаторы, но их очень сложно настроить. Кто-то на 3D-форумах предлагал даже это дело оформить в виде пружины . М-дя, совет "гениальный".
Беглый поиск по ютубам не дал ничего: смоделировать объект из куска полигона - это пожалуйста. А вот оживить его - фиг вам :( В специализированных пакетах проще - там под это всё есть базовые предустановки, но не в случае обычного 3dsmax.
На данном этапе пришлось придумывать свой рецепт, причем так, чтобы сцену проглотил ASC-экспорт, а потом воссоздал ее уже при обратном импорте.
И вот что вышло:

Оно не только изгибается при движении, но и меняет свой размер в рамках упрощенной модели. Работает в режиме реального времени, т.е. в отличие от физики не нужно ничего дополнительно просчитывать.
В игре еще не смотрел, но если asc работает, то 99% вероятности на движке также не будет проблем. *popcorn*
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Еще вариант, меньше скорость, но больше амплитуда:

Для любого варианта можно поменять параметры, увеличив или уменьшив отзывчивость колебательной системы. Осталось в игре проверить.
 

alex_draven


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

Итого: или вручную, или в виде пружины. Реалистичный вариант только для рендеров и, вероятно, для других движков через obj-формат.
Если интересно кому, могу подробно расписать, как сделать в 3DsMax простые, но очень реалистичные сиськи, как в роликах выше.

Следующим пунктом попробуем свисающие элементы одежды через какой-нибудь прием попроще.
 

MaGoth

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

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.184
Благодарности
2.879
Баллы
420
Ради этого нет смысла возиться.
 
Сверху Снизу