Форумы на Наша-Life
Home user CP  
Календарь событий Найти других пользователей Часто задаваемые Вопросы Поиск  
Автор
Тема
Создать Новую Тему    Ответить
romanshuvalov
(Музыкант и разработчик игр)

Зарегистрирован: Jul 2007
Проживает: Россия/Тольятти
Написал: 819 сообщений

Оценка: 35 Votes 35 чел.

Developer Старожил 
Модели и анимированные сцены. О том, как это устроено
Сообщение #744583
Пытаюсь понять устройство сказанного в названии темы. Вопросами помечал то, что пока не понимаю (либо не уверен в понимании).

(ВТОРАЯ редакция, после замечаний от manJak)

Сейчас мое представление примерно такое:

  • Скомпилированная модель, расстедоточенная по файлам VVD, VTX, MDL, в общем случае включает в себя:
    - SMD-модель с самой моделью
    - SMD-модель с физбоксом
    - несколько скелетных SMD-анимаций движения
    - некий QC-файл, разъясняющий движку назначение всех этих smd-файликов.
  • В любой кадр анимации можно поместить событие, которые обрабатывается кодом Entity, которая базируется на данной модели. События могут иметь параметры и служить для чего угодно, например, для проигрывания звуков (звуки находятся вне файлов модели).
  • Среди анимаций модель содержит какие-то "Postures" (??) - статичные положения модели (??), к которым эту модель можно плавно отклонять в FacePoser'e. В ModelViewer'e они проигрываются странно, но это и правильно, т.к. Postures не являются анимациями.
  • Подобно Postures модель содержит еще и Gestures (жесты), которые могут быть (или должны быть?) анимированными.
  • Для лицевой анимации применяется повершинный морфинг. Модели персонажей содержат около 35 morph target-ов, которые можно смешивать в фейспозере, составляя фонемы и выражения лица. - это надо изложить "по полочкам" более подробно
  • Материалы, из которых изготовлена модель, хранятся вне mdl-файла и располагаются в \materials\models\.

Как я понимаю, анимированная сценка, например, продемонстрированная в sdk_faceposer, создается примерно следующим образом:
  • для модели делается одна или несколько костных smd-анимаций, которые должны быть вшиты в mdl (??) при компиляции
  • подготавливаются звуки, содержащие речь
  • на карте ставятся опорные точки info_target, по которым будет ходить модель (например, Barney)
  • запускается Faceposer, позволяющий создать сцену (vcd), на временной шкале которой находятся:
    - последовательность проигрываемых smd-анимаций, заранее вшитых в модель
    - последовательность звуков (речь персонажа)
    - субтитры (??) + информация о движении губ в редакторе фонем (??)
    - команды MoveTo, FaceTo, LookAt и т.п., которые заставляют модель взаимодействовать с объектами, находящимися на карте (например, находящимися рядом персонажи и заранее проставленные info_target'ами)
    - отрезки "Postures", представляющие собой графики зависимости "дальности отклонения" указанного Posture от нормальной позиции. По вертикальной шкале графика откладывается отклонение (от обычного до полностью отклоненного), вправо - время.
    - и где-то тут можно покрутить Flex Slider'ами (??), причем это единственное что в FacePoser'e именно СОЗДАЁТСЯ (а не компонуется из уже созданного) (?)
  • В точечную Entity logic_choreographed_scene вписывается путь к созданному vcd-файлу, и после вызова input'a "Start" анимация начинает воспроизводиться.


Уф.

Знающим людям большая просьба исправить здесь всё неверно сказанное (надеюсь, хоть что-то я верно написал?) и дописать упущенное мной.

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

Спасибо.
Роман

Поправил romanshuvalov 11-07-2008 в 18:05

Old Post 10-07-2008 22:25
romanshuvalov отсутствует Посмотреть данные 'romanshuvalov' Отправить Приватное Сообщение для 'romanshuvalov' Посетить домашнюю страничку romanshuvalov Найти другие сообщения 'romanshuvalov' Добавить romanshuvalov в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
manJak
(маппер-теоретик)

Зарегистрирован: Feb 2006
Проживает: Mother Russia/Moscow
Написал: 2953 сообщений

Оценка: 66 Votes 66 чел.

Developer Старожил 
Сообщение #744862
Кхм, попробую исправить кое-что, хотя я далеко не гуру и могу сам в чём-то напортачить.. )

> Скомпилированная модель, располагающаяся в файле .mdl, в общем случае включает в себя: ...
Модель хранится в нескольких файлах. VVD - информация о позициях и нормалях вершин, VTX - прочая вершинная инфа, оптимизированая под различные API. PHY - физическая модель. MDL - тут вся остальная информация.
В остальном, в общем, так оно и есть, как ты сказал)

> Анимация движения может (??) как-то ссылаться звуки ...
Любой кадр анимации можно "пометить" событием, которые обрабатывает код энтити, на которую эта модель "натянута". События могут иметь параметры и служить для чего угодно (в частности - проигрывания звуков).

> Однако в ModelViewer'e они проигрываются странно.
Это вполне нормально, так как они по сути анимациями не являются. Есть ещё gestures - жесты. Вот они, вроде, уже анимированы.

> Судя по всему, куча подобных "Postures" имеются и для костей лица
В лице костей нет. Для лицевой анимации применяется повершинный морфинг. Модели персонажей содержат около 35 morph target-ов, которые можно смешивать в фейспозере, составляя фонемы и выражения лица.

To be continued)
Old Post 11-07-2008 16:17
manJak отсутствует Посмотреть данные 'manJak' Отправить Приватное Сообщение для 'manJak' Найти другие сообщения 'manJak' Добавить manJak в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
romanshuvalov
(Музыкант и разработчик игр)

Зарегистрирован: Jul 2007
Проживает: Россия/Тольятти
Написал: 819 сообщений

Оценка: 35 Votes 35 чел.

Developer Старожил 
Сообщение #744907
Обновил первый пост в соответствии с твоими замечаниями (и буду его постоянно обновлять).

Спасибо за помощь, ждём продложения от тебя и от других
Роман
Old Post 11-07-2008 17:47
romanshuvalov отсутствует Посмотреть данные 'romanshuvalov' Отправить Приватное Сообщение для 'romanshuvalov' Посетить домашнюю страничку romanshuvalov Найти другие сообщения 'romanshuvalov' Добавить romanshuvalov в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
manJak
(маппер-теоретик)

Зарегистрирован: Feb 2006
Проживает: Mother Russia/Moscow
Написал: 2953 сообщений

Оценка: 66 Votes 66 чел.

Developer Старожил 
Сообщение #744935
Про лицевую анимацию вот тута довольно много сказано, мне особо добавить нечего.

Что касается работы с фейспозером, то здесь я точно не советчик. Могу лишь направить сюда.
Old Post 11-07-2008 18:40
manJak отсутствует Посмотреть данные 'manJak' Отправить Приватное Сообщение для 'manJak' Найти другие сообщения 'manJak' Добавить manJak в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
redbox
(Senior Member)

Зарегистрирован: Jan 2008
Проживает: Ukraine/Dnepr
Написал: 766 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #747573
так.
вобщем Постурес это позы.
Гестурес это жесты.
Их мона смешивать и получится в определенной позе определенный жест.
Можно прикрутить жест к ходьбе или другой анимации, где нужно.
С позами описания Альпайна не понял, что значит отклонение?
есть 2 вида мдл файлов.
Файлы с самой моделью, где содержиться скелет, сетка, ссылки на материалы и анимации. все это прописывется в qc перед компиляцией модели.
компиляция это процесс сборки мдл файла из смд'шек.
второй тип мдл, это *animations.mdl
вот здесь то как раз и находится вся скелетная анимация. т. к. скелеты в сурсе "абстрактные", можно прикрутить все имеющиеся в игре инимации всех персов с одним скелетом к 1 своему персу, с таким же скелетом или подобным, главное правильно расставить имена костей.
всю анимацию желательно компилить отдельно в отдельный мдл.
*.вта - это файл с лицевой анимацией, полученной в результате набора морфинга или деформера(для Майки). он лежит отдельно и является файлом жестко привязанным к 1 конкретному персу с которого он сделан и не может быть прикручен к другому персу. также нельзя применить его к измененному исходному персу. например, Аликс с шевелюрой и лысая Аликс не смогут использовать один и тот же набор лицевухи.
где вы прочитали что там 35 морфов?... я конечно не считал, но одних фонем не меньше 50и, да плюс еще флексы...
насчет звуков и прочего.
например у нас есть анимация удара с разворота и мы хотим чтобы при ударе перс говорил: "кийа!", а ударяемый перс отлетал со скрученной шеей в сторону. в таком случае мы при компиляции анимации прописываем в кусе(qc) ивент на вызов ответной анимации у ударяемого перса, но этого мало, здесь еще надо лезть в код перса чтоб добавить условие использования анимации(удара) в игре и демейдж.
звук прописывается опять же в кусе, но не в качестве звука а типа, который прописан в гейм_саундс.тхт или где там еще.
отож тебе и УФ...
что я забыл?
З.Ы. ты хош составной мега тутор сделать?
Old Post 20-07-2008 20:00
redbox отсутствует Посмотреть данные 'redbox' Отправить Приватное Сообщение для 'redbox' Посетить домашнюю страничку redbox Найти другие сообщения 'redbox' Добавить redbox в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
romanshuvalov
(Музыкант и разработчик игр)

Зарегистрирован: Jul 2007
Проживает: Россия/Тольятти
Написал: 819 сообщений

Оценка: 35 Votes 35 чел.

Developer Старожил 
Сообщение #747588
большое спасибо за разъяснение.

Цитата:
С позами описания Альпайна не понял, что значит отклонение?

в модель-вьювере можно включить какую-нибудь анимацию, например ходьбы. второй строчкой - выбрать позу (ничего не произойдет), но если передвинуть 1 ползунок вправо то модель встанет в эту позу. двигая ползунок плавно, можно видеть, Как анимация ходьбы плавно переходит в статичную позу, то есть кости как бы ОТКЛОНЯЮТСЯ от анимации ходьбы в сторону позы. я это и имел в виду под этим словом.

Цитата:
есть 2 вида мдл файлов.

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

Цитата:
З.Ы. ты хош составной мега тутор сделать?

Я просто хочу по пунктам разобраться, как и что работает. это не тутор, а просто "план-схема"... тутор бы еще и объяснял как это СДЕЛАТЬ, а не только как это устроено.

Еще раз спасибо за разъяснения, с файлами *.вта, морфами, флексами и проч. надо будет поподробней мне разобраться...

первый пост обновлю позже (не сегодня)
Роман
Old Post 20-07-2008 20:32
romanshuvalov отсутствует Посмотреть данные 'romanshuvalov' Отправить Приватное Сообщение для 'romanshuvalov' Посетить домашнюю страничку romanshuvalov Найти другие сообщения 'romanshuvalov' Добавить romanshuvalov в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
 
redbox
(Senior Member)

Зарегистрирован: Jan 2008
Проживает: Ukraine/Dnepr
Написал: 766 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #747600
1 кароч имелась в виду интерполяция одной анимации в другую.

2 да, ты, правильно понял.

кстати, вспомнил что забыл.
скриптед_сиквенс.
сие замечательное энтити повсеместно используется в различных сценах.
оно позволяет заставить перса идти(бежать) куда либо. (при желании можно даже заставить ползти). а также бесконечно долго или до определенного условия проигрывать какую либо анимацию.
например, когда у телепорта вылетает вилка из розетки, кто то там говорит: "Гордон, будь добр...", в этот момент все персонажи переходят в состояние ожидания пока Гордон вставит вилку, кароч попадают под действие скриптед_сиквенса с анимацией позы ожидания. далее если Гордон жмет кнопку снова начинают проигрываться вцд'шки и сцена продолжается, если же Гордон долго тупит, врубается вцд'шка Кляйнера кажись, со словами "Гордон розетка" или что то такое. достигается это путем установки таймера-если через 10 сек вилка не втыкнута в розетку, проиграть сцену.
извините за такую абстрактность, но сейчас голова по другому не варит...
еще пример. Игрок заходит в помещение. на другом конце стоит перс.
задача-игрок должен подойти к персу.
как только срабатывает триггер на входе в помещение врубается ложик_хор._сцен с анимацией махания рукой и криком "иди сюда".
после врубается скриптед сиквенс с анимацией позы ожидания.
и в конце, когда игрок пересекает триггер рядом с персом снова врубается лож_хор._сцен с анимацией, допустим "привет".
вобще любая сложная сцена требует детального анализа и разложения по полочкам. это реально театральное действие, и перед тем как его делать нужно бы в реале его обыграть. не зря у Вальвы, да и у всех нормальных контор есть отдел постановки.

redbox добавил 20-07-2008 в 22:25:40:
и еще одно
scenes.image
это чудо является файлом содержащим инфу о сценах и создано для улучшения производительности на консолях. и какого мы жаримся с ним на РС непонятно.
как его создать.
в меню сдк создаем мод. убеждаемся что он стоит в приоритете в выпадающем меню внизу.
создаем в папке мода папку Scenes и перемещаем туда все предварительно созданные свои или вальвовские вцд'шки.
запускаем фейспозер и в меню выбираем rebuild scenes.image.
по идее в папке сцен мода создастся этот файл, НО! если его нет или он создался в папке сцен еп2, то нужно убедиться что ваш мод выбран в выпадающем меню, перезапустить сдк, ребилднуть снова.
брать этот файл из сцен еп2 не советую, т. к. содержимое папок сцен вашего мода может отличаться, и еще я так понял что эта зараза берет то ли имя игры то ли что то еще из гейм_инфо.тхт, а у каждой игры они отличаются...
Old Post 20-07-2008 21:18
redbox отсутствует Посмотреть данные 'redbox' Отправить Приватное Сообщение для 'redbox' Посетить домашнюю страничку redbox Найти другие сообщения 'redbox' Добавить redbox в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Flagg
(Senior Member)

Зарегистрирован: Jul 2007
Проживает: Belarus/Borisov
Написал: 777 сообщений

Оценка: 39 Votes 39 чел.

Developer Старожил 
Сообщение #747687
Цитата:
где вы прочитали что там 35 морфов?

здесь
Это основные ключи, из которых состоит vta файл, все остальное генерируется при компиляции с помощью скриптов из sourcesdk_content:
facerules_xsi.qci и bodyrules_xsi.qci

Поправил Flagg 21-07-2008 в 09:25

Old Post 21-07-2008 06:57
Flagg отсутствует Посмотреть данные 'Flagg' Отправить Приватное Сообщение для 'Flagg' Найти другие сообщения 'Flagg' Добавить Flagg в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
redbox
(Senior Member)

Зарегистрирован: Jan 2008
Проживает: Ukraine/Dnepr
Написал: 766 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #747880
ясно.
Old Post 21-07-2008 17:26
redbox отсутствует Посмотреть данные 'redbox' Отправить Приватное Сообщение для 'redbox' Посетить домашнюю страничку redbox Найти другие сообщения 'redbox' Добавить redbox в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
ROCK
(Gasschutzmaske)

Зарегистрирован: Aug 2003
Проживает: Россия/СПб
Написал: 2272 сообщений

Оценка: 37 Votes 37 чел.

Старожил 
Сообщение #747884
redbox
*.vta конечно жестко привязан к персу, но у меня почему-то стандартный перс (оставил только глазки) зашевелил глазницами противогаза =///
Значение не имеет значения
Old Post 21-07-2008 17:41
ROCK отсутствует Посмотреть данные 'ROCK' Отправить Приватное Сообщение для 'ROCK' Найти другие сообщения 'ROCK' Добавить ROCK в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
redbox
(Senior Member)

Зарегистрирован: Jan 2008
Проживает: Ukraine/Dnepr
Написал: 766 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #747921
хуясе
ну такой момент не исключен конечно, но я привык говорит о том что нормально работает.

redbox добавил 21-07-2008 в 19:30:09:
вобще прикольно, я ржу с того как работает сурс...
Old Post 21-07-2008 19:24
redbox отсутствует Посмотреть данные 'redbox' Отправить Приватное Сообщение для 'redbox' Посетить домашнюю страничку redbox Найти другие сообщения 'redbox' Добавить redbox в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
ROCK
(Gasschutzmaske)

Зарегистрирован: Aug 2003
Проживает: Россия/СПб
Написал: 2272 сообщений

Оценка: 37 Votes 37 чел.

Старожил 
Сообщение #747949
я планирую двинуться немного дальше и возможно удасться унивицировать да какой-то степени один vta для нескольких голов =)
Значение не имеет значения
Old Post 21-07-2008 19:57
ROCK отсутствует Посмотреть данные 'ROCK' Отправить Приватное Сообщение для 'ROCK' Найти другие сообщения 'ROCK' Добавить ROCK в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
ROCK
(Gasschutzmaske)

Зарегистрирован: Aug 2003
Проживает: Россия/СПб
Написал: 2272 сообщений

Оценка: 37 Votes 37 чел.

Старожил 
Сообщение #748200
итого.глаза не реагируют, рот с глюками.
теперь насущный вопрос,можно ли заменить только необходимые анимции? похоже это слишком большой геморр, анимации, которые работают и самому сделать можно за 15 минут.
вердикт, выходит лысую аликс сделать можно=)
а вот использовать готовые анимации для других моделей увы.
Значение не имеет значения
Old Post 22-07-2008 13:18
ROCK отсутствует Посмотреть данные 'ROCK' Отправить Приватное Сообщение для 'ROCK' Найти другие сообщения 'ROCK' Добавить ROCK в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
redbox
(Senior Member)

Зарегистрирован: Jan 2008
Проживает: Ukraine/Dnepr
Написал: 766 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #748575
Лысую Аликс я пробовал. Криво получается с глазами и лбом. Рот так себе еще...
Вывод один - делать надо по-нормальному, каждому персу свою лицевуху.
Old Post 23-07-2008 06:48
redbox отсутствует Посмотреть данные 'redbox' Отправить Приватное Сообщение для 'redbox' Посетить домашнюю страничку redbox Найти другие сообщения 'redbox' Добавить redbox в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
manJak
(маппер-теоретик)

Зарегистрирован: Feb 2006
Проживает: Mother Russia/Moscow
Написал: 2953 сообщений

Оценка: 66 Votes 66 чел.

Developer Старожил 
Сообщение #764868
Цитата:
Оригинальное сообщение от ROCK
стандартный перс зашевелил глазницами противогаза


Насколько понимаю, морфы в .vta соотносятся с референсом в .smd исключительно по индексам вершин. Следовательно, получилось так, что индексы вершин, составляющих "глазницы" противогаза волшебным образом совпали индексами удалённых вершин лица. Дико звучит, но другого объяснения не вижу..

ALPINE
> я правильно понял?
Именно так.
Модели с анимациями (и только с анимациями!) подключаются при помощи $includemodel "model.mdl"
Old Post 06-09-2008 15:41
manJak отсутствует Посмотреть данные 'manJak' Отправить Приватное Сообщение для 'manJak' Найти другие сообщения 'manJak' Добавить manJak в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Все время в GMT . Сейчас 16:57.
Создать Новую Тему    Ответить

Быстрый ответ
Ваше Имя:
Хотите Зарегистрироваться?
Ваш Пароль:
Забыли свой Пароль?
Вы можете оставлять свои комментарии анонимно, просто введя свои имя и оставив пустым поле пароля.
Ваш ответ:

[проверить размер]
[транслит в win] | [?]
[русская клавиатура]

Дополнительно: Подтверждение по E-Mail


Быстрый переход:
 
Оцените эту Тему:
 

Правила форума:
Создание Тем не разрешено
Создание Сообщений разрешено
Создавать Вложения не разрешено
Редактирование Сообщений не разрешено
Коды HTML запрещены
Коды форума разрешены
Смайлики разрешены
Коды [IMG] запрещены