Моды - Euro Truck Simulator 2 :: Новости

Под Капотом: Персонажи


Доминик Луска - графический дизайнер, работающий в SCS Software уже более 4 лет и работавший почти над всеми выпущенными в настоящее время расширениями карт. Его работа состоит из записи анимации в motion capture, моделирования, ретопологии модели с высоким разрешением, текстурирования и импорта модели в игру. Он работает вместе с аниматором и карт-дизайнерами, создавая пешеходов, рабочих и других живых персонажей, которые можно увидеть в наших трак-симуляторах.

Если вас интересует, как мы создаем анимацию людей и животных, которую можно увидеть в Euro/American Truck Simulator, то вы пришли в нужное место. Прежде всего, я должен подчеркнуть, что пешеходы и другие персонажи даже близко не играют такой важной роли, как грузовики и склады с базами. Тем не менее, они всё ещё играют определенную роль в наших играх, поэтому мы должны убедиться в том, что они получают надлежащее внимание. На данный момент у нас есть более 30 моделей персонажей в наших играх. Это все персонажи, которых вы можете увидеть в нашем мире. Например, вы можете увидеть сотрудников службы безопасности, полицейских и таможенников, людей, фотографирующих негабаритные грузы на свои телефоны и многое другое. Для того, чтобы создать мир, полный жизни, мы должны создавать их отличными друг от друга, по действиям, анимации и внешности. Некоторые из них универсальны, и поэтому мы используем их между проектами, дабы сэкономить работу и время. Кроме универсальных, у нас имеются и особые персонажи для отдельных проектов, страны или города. У каждого персонажа имеется по четыре текстуры - две для одежды и две для тела.

Есть также дополнительные предметы, или если хотите "реквизит", с которым наши персонажи могут так или иначе взаимодействовать, все эти предметы включены в окончательные анимационные файлы. Объём данных для этих моделей и анимаций не является таким уж и незначительным, и чтобы помочь нам не путаться во всех этих текстурах и моделях, мы используем классику - Total Commander. Каждый файл имеет соглашение об именовании на английском языке, чтобы сделать его доступным и понятным для всех.

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

В самом начале мы создаём модель в соответствии со справочным файлом. Эти ссылки получены от наших исследователей - специального отдела нашей компании, отвечающего за поиск данных, изображений и информации. Эта первая модель называется "LOD 0", аббревиатура означает "Level of Detail" (уровень детализации), и эта система служит для переключения между моделями с более низким и более высоким разрешением в зависимости от диапазона с точки зрения. В наших играх у каждого персонажа есть 4 LOD'а, и последний из них служит на 100+ метровых дистанциях. LOD также должен быть тщательно проверен на предмет резких изменений, мы не хотим, чтобы например ноги или голова исчезали в пределах 10 метров от его точки обзора. Некоторые анимированные модели также имеют "collision model" (коллизию), которая останавливает игроков, пытающихся проехать через персонажа. Такая модель столкновения или проще говоря коллизия встречается также и на не анимированных и статических моделях. И почему мы не позволяем людям проходить через здания и персонажей? А потому что наши игры получили возрастной рейтинг 3, который нам бы хотелось сохранить. Благодаря чему в наши игры может играть любой, даже ребёнок.

Когда мы будем удовлетворены моделью и её LOD'ами, мы переходим к "UV mapping", или скорее к разворачиванию 3D-модели на 2D-плоскости для того, чтобы можно было создать текстуру. Этот процесс также занимает некоторое время в основном из-за того, что более важные части модели получают большее пространство на текстуре. Это означает, что UV-развёртка должна быть создана как можно более эффективно. К примеру, мы зеркально отражаем небольшие части модели, такие как шапки, шлемы и другие реквизиты, что экономит драгоценное пространство уже на следующей текстуре для этой модели. После этого мы создадим текстуру для этой модели в соответствии с полученными ссылками. Каждый персонаж получает "normal map". Карта нормалей - это изображение, имитирующее мягкую геометрическую структуру, которая используется для создания иллюзии более высокой детализации на модели с низким разрешением. Карты нормалей используются для сгибов, пуговиц, вышивки и других подобных деталей.

После того, как мы закончим с текстурами и моделью, начинается более интересный и в то же время немного разочаровывающий процесс, запись анимации персонажей. Чтобы сэкономить время и энергию на не очень трудоемком способе, мы используем импровизированный захват движения (MoCap), который мы используем для записи грубых анимационных основ. Я говорю "грубый", потому что среди недостатков этого типа mocap является его точность на важных костях, таких как ключицы или запястья. Мы используем не полноценный mocap, а более дешёвый вариант, построенный на двух датчиках Kinect (2-го поколения). Эти датчики используют камеру глубины, и поскольку они стоят друг против друга, то они "видят", как мужчина или женщина двигаются на сцене с некоторой точностью. Этот метод анимации имеет одно преимущество, вам не нужно никакой специальной одежды или маркеров, так что любой может попасть на сцену и начать запись. Благодаря этой технологии мы можем взять любого человека в компании и поставить его перед камерами, чтобы оживить модели персонажей.

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

Итак, наша готовая модель с анимацией теперь готова к запуску в игру. Чтобы редактор "увидел" нашу модель, нам нужно правильно определить её в текстовом файле. В этом файле как анимированные, так и статичные модели имеют ссылку на модель, на её LOD и возможные анимацию и коллизию.

Когда мы успешно определили модель, то мы можем наконец увидеть её в редакторе. Редактор - это наш собственный инструмент, в котором карт-дизайнеры строят карту, и где наши графические дизайнеры проверяют свои собственные модели. Если что-то не так, мы настраиваем модель или анимацию в 3D-программах, таких как Maya или Blender, и реэкспортируем её. Поскольку уже есть определение, то мы можем просто обновить модель в редакторе, чтобы сразу увидеть её изменения. Это примерно похоже на обновление страницы сайта в браузере. Модели и анимации создаются в Autodesk Maya, а текстуры в Adobe Photoshop. Для создания карты нормалей мы должны импортировать модель в программу Marmoset Toolbag, которая служит для "выпекания" деталей из модели с высоким разрешением в модель с низким разрешением. Весь процесс сложнее, чем то, что я написал здесь, но тогда бы этот пост был бы ещё длиннее и больше.