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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

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

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
ВНИМАНИЕ!
Перед изучением статьи будет полезно почитать предыдущую: "Правильное приготовление головы персонажа". Желательны также общие представления о работе в 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:

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

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

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
З.Ы. А почему никто никогда не распускал волосы безымянному герою?
Зачем ?! ;)
Пускай девки расплетают-заплетает ему хвост в гриву, это их занятия. У нас и своих хватает.. *right*

Зы, Ты как всегда крутЪ! *thumbs up*
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.940
Благодарности
1.454
Баллы
465
В анимациях и все, что с ними связано пока мало, что знаю, посему задам вопрос: а есть ли ограничения на количество костей (гипотетически, насколько сложную прическу можно сделать в готике?)
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
В анимациях и все, что с ними связано пока мало, что знаю, посему задам вопрос: а есть ли ограничения на количество костей (гипотетически, насколько сложную прическу можно сделать в готике?)
Ограничений как таковых вроде нет, но ты сам себя ограничишь когда запаришься каждую кость анимировать., если их будет +100500.. *trollface*
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
а есть ли ограничения на количество костей (гипотетически, насколько сложную прическу можно сделать в готике?)

256, если я правильно помню.
И на один меш не более четырех материалов, если опять же я правильно помню. Т.е. не стоит увлекаться количеством текстур, а ограничиться двумя-тремя на персонажа.

Опять же, базовых наборов костей, типа Biped, за глаза.

Пускай девки расплетают-заплетает ему хвост в гриву, это их занятия. У нас и своих хватает..
Концепт не так плох:
rnd.jpg
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
256, если я правильно помню.
Эм.. но это же не ограничение игры, это ограничение базовой архитектуры гуманоидо-подобного скелета на бипеде или любой другой скелетной конструкции на его основе, по которой и строится человекоподобный скелет с 256 косточками..
Но, тут все зависит от того, какую скелетную основу выбирать, если не гуманоида и в других системах то возможно и большее число, если не ошибаюсь.. Но в любом случае в максе упрешься в ограничение скелетной части по числу конечностей, это да, если использовать его базовые скелетаторы...
А вот если своего скелета полностью мутить с нуля, с физикой кинематикой и прочими радостями, то тут бабка на двое сказала.. ;)


Концепт не так плох:
Бедняга, что с ним стало? Неужто с тобою вместе в командировке в Поднебесной побывал ?! :D
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.168
Баллы
340
О! Хвост выглядит потрясно! Даже не ожидал, что зенгин может такое.
Однако нормальные прически до сей поры не реализованы только по одной причине - любая нормальная прическа (хвост или распущенные волосы) будет проникать через надетый шлем. И до тех пор, пока на уровне движка не получится отвязать прическу собственно от черепа, чтобы можно было "снимать" прическу при надевании шлемов, дело с мертвой точки не сдвинется.
Зы: Есть конечно вариант создания каждого типа голов в двух вариантах - с прической и лысой, и при надевании шлема динамически менять тип головы, но будет ли этот вариант лучше - не известно.
Зы2: Интересно, получится ли по подобной технологии (как с хвостиком) реализовать нормальный плащ?
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Однако нормальные прически до сей поры не реализованы только по одной причине - любая нормальная прическа (хвост или распущенные волосы) будет проникать через надетый шлем.
В современных движках в таком случае волосы делаются отдельным мешем, пришитым к основному скелету (кости головы и их наследники). А сама голова тоже отельный объект, но лысый.
Все это жестко состыковано на уровне вершин, примерно по тому же принципу, что у меня пришивалась голова.
При одевании шлема движок просто отключает визуализацию волос и шлем покрывает лысый качан. Например, так сделано в "Скайриме", причем в некоторых случаях вообще отключается голова, а рисуется просто закрытый шлем, где не видно лица.

Короче, все возможно. Главное - чтобы программисты, моделлеры и аниматоры на этапе планирования той, или иной фичи понимали друг друга. И уж однозначно представляли, как оно должно работать по наиболее простому сценарию.


Зы2: Интересно, получится ли по подобной технологии (как с хвостиком) реализовать нормальный плащ?
А это зависит от того, есть ли в 3Д пакетах нормальные средства создания одежды с помощью костей. Что-то такое я где-то видел, но оно не бесплатное было. Штатными средствами если это и возможно, то крайне трудоемко.

Вдогонку грубая анимация глаз:


З.Ы. ezcloth, кажется.
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.168
Баллы
340

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Глаза сделаны отдельным мешем? То есть не нарисованы, а являются натуральной сферой в прорезях основного меша лица?

В первом тесте глаза были частью тела. Для теста 2 сделано вот что:

1) Оба глаза отвязаны от меша тела. Полученные меши переименованы в zm_frill1 и zm_frill2.
2) Тело, но уже без глаз, привязываю опять к скелету
3) Создаю два обычных бокса размером, примерно равным размеру глаза и выравниваю их по глазам.
4) Боксам даю имя: Bip01 EYEL и Bip01 EYER.
5) Создаю сферу-хелпер в координате X=0 Y=0 Z="чуть выше кости головы"
6) Линкую zm_frill1 и zm_frill2 к боксам-костям Bip01 EYEL и Bip01 EYER соответственно.
7) Линкую Bip01 EYEL, Bip01 EYER и сферу-хелпер к кости головы Bip01 Head
8) Bip01 EYEL и Bip01 EYER через контроллер Orientation Constraint линкую к сфере-хелперу. После этой процедуры любые вращения сферы будут передаваться глазам. Т.е., анимируя только сферу-хелпер, мы анимируем сразу оба глаза.
eyes.jpg

Т.е. система глаз по-прежнему находится в системе "тело", а мимика лица в системе "голова".

Ну и далее, в нужной анимации просто анимируем сферу-хелпер, ее вращение передается костям-глазам, и их в составе скелета экспортируем в ASC как animation.

У монстров можно аналогично сделать.
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
alex_draven, интересный эксперимент, но что будешь делать с мимикой лица? Ведь в твоём случае морфинг не будет поддерживаться.
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
но что будешь делать с мимикой лица? Ведь в твоём случае морфинг не будет поддерживаться.
А моргает она как по вашему?
;)

Имя хелпера не играет роли? При экспорте он игнорируется плагином?
Не, не играет. У меня было просто Sphere01. При экспорте анимации в ASC улетают тоько кости с приставкой Bip01 *. Остальное игнорится.
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
А моргает она как по вашему?
Ну это не сложная анимация - опустить вниз группу вертексов и затем поднять. Здесь, наверняка можно обойтись и обычной скелетной анимацией. Мне интересно было посмотреть на более сложную анимацию, типа разговора. А также хотелось узнать на сколько сложно будет сделать такую анимацию.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.940
Благодарности
1.454
Баллы
465
По крайней мере, за крупные планы камеры не будет стыдно - лица-то стали живее.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Ну это не сложная анимация - опустить вниз группу вертексов и затем поднять. Здесь, наверняка можно обойтись и обычной скелетной анимацией. Мне интересно было посмотреть на более сложную анимацию, типа разговора. А также хотелось узнать на сколько сложно будет сделать такую анимацию.
Чтобы это сделать, надо сначала реализовать то, чтобы двиг воспроизводил и понимал отдельный блок лицевой анимы: ключи, фреймы и т.д., от всего остального обвешанного на Хумане.., параллельно с этим, надо реализовать синхронизацию анимы с озвучкой, по алгаритмам анимационного движка для рожи/лица Нпс, в зависимости от слоговой-составной речи Нпс и выбора языка и т.д. и т.п.
А пока этого нет, все что будет делать НПС в игре, это открывать рот как "карп глушёный" в некоторых случаях... ::)
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Мне интересно было посмотреть на более сложную анимацию, типа разговора.
Позже накидаю такой вариант для примера.
Это во многом то же самое, что "опустить вниз группу вертексов и затем поднять", только вертексов чуть поболее, чем пара. Потом, тут нет предела совершенству: моя голова - это выделенный меш, аналогичный мешам голов в Готике, с тем же скриптом MMS.
Как его анимировать - это на усмотрение аниматора. Нужно что-то сложное - делай сложную обвязку вплоть до точечного захвата движения с камеры (сборка подобных девайсов и описание ПО в сети, кстати, есть). Если хай-энд не интересует - пользуем обычный морф-модификатор, что для Готики более чем.
В любом случае экспорт в Готику пойдет только в виде вершин и их деформаций. Обвязка же дает удобство, а также влияет на реалистичность виртуальной мордашки.

Из своего опыта анимирования разных около классических голов могу сказать, что на обычную балбешку у меня уходило полчаса-час. Причем, все делал только манипуляциями вершин.


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

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

И да, минус zengin в том, что нет развитой поддержки различной мимики в скриптах или хотя бы на уровне движка. Из-за этого довольно накладно заставить NPCзакрывать глаза во время сна, а потом их открыть в нестандартных условиях пробуждения. И т.п.

Общий вывод такой, что у Pirahna Bytes еще в начале нулевых был движок с очень навороченной скелетной анимацией. Не знаю, левая ли это разработка, или какой-то гений это сам написал. Но факт остается фактом - потенциал у системы огромный. Она во многом соответствует самым современным техникам и при некоторой доводке способна тянуть самые сложные модели с качественной физической обвязкой. Причем все это в честном открытом трехмерном пространстве, включая плавание и дайвинг. И работала система задолго до всяких "Ведьмаков 3". Вопрос, нафига было всё это ломать в триквеле, заменяя каким-то уродливым резиновым убожеством, так и висит в воздухе.
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
моя голова - это выделенный меш, аналогичный мешам голов в Готике, с тем же скриптом MMS.
пользуем обычный морф-модификатор, что для Готики более чем.
В любом случае экспорт в Готику пойдет только в виде вершин и их деформаций.
Не понял, мы вроде ушли от морфированных мешей и теперь опять к ним возвращаемся?

И да, минус zengin в том, что нет развитой поддержки различной мимики в скриптах или хотя бы на уровне движка. Из-за этого довольно накладно заставить NPCзакрывать глаза во время сна, а потом их открыть в нестандартных условиях пробуждения. И т.п.
Отходя от темы могу сказать, что вроде не так много возможных вариантов разбудить НПС?
Обработчики то все есть, если имеется ввиду реакции на повреждение оружием, магией или ещё чем. Открыть или закрыть глаза можно в любой момент, используя известную скриптовую функцию "Mdl_StartFaceAni()".

Т.е. что-то типа системы в том же "Ведьмаке", когда от конкретного персонажа излучаются разные стили общения, в том числе зависящие от настроения его или его окружения.
Если говорить о скелетной анимации в Gothic II Engine, то есть несколько интересных идей:
1) Для разных слоёв анимации можно заранее подготовить разнообразные цикличные фазы анимаций лица. Аналогично MMS-скрипту, только на разных слоях.
2) Управлять этими фазами можно через простейшие скриптовые функции: "Npc_PlayAni()" и "Npc_StopAni()". Возможны комбинации.
3) Также во всём этом может помочь функция "Npc_IsVoiceActive()". Проверка на активность голоса того или иного персонажа.
Управлять можно из чего угодно. Главное отследить все возможные ситуации, когда НПС или ГГ начинает что-то говорить.
Например, кто-то из НПС может запускать свои анимации лица в своих же цикличных состояниях.
Если говорить о режиме диалога, то здесь можно запустить анимации лица используя, например, триггер-скрипт(не очень скоростной) и функцию проверки активности голоса.
Т.е. если голос активный, то запускаем анимацию или комбинацию анимаций лица на определённых слоях анимаций. Если голос не активный, то останавливаем все ранее запущенные анимации лица.
Подытоживая, можно сказать, что без крупной переделки здесь не обойтись. Зато будет ноу-хау.;)
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Да это всё у zengin есть
Ну это и ежу понятно, худо-бедная система в игре и так была, это видно хотя бы глядя на простую аниму морды лица Нпс в оригинале, не говоря уже про его жалкие потуги выдать элемент Мима..
Но, на этом все и закончилось.. Я же про другое говорил, что если все это сводить в кучу и чтобы работало в игре, то надо все это хозяйство сначала вывести в отдельный уровень, относящийся конкретно к лицевой аниме и диалогам. Сделать так, как это реализовано в Аниматрониксах, Синьке и/или прочих проф. приблудах мира монстров 3D..

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

Кто это все будет делать, вопрос без ответа.. ::)


Не понял, мы вроде ушли от морфированных мешей и теперь опять к ним возвращаемся?
А зачем от них уходить и чем они плохи?
Некоторые вещи кроме как на них, больше никак не реализовать, в этом и есть их особая прелесть.. ;)
 
Сверху Снизу