Как 3D-модели создаются в видеоиграх?

15

Как 3D модели в играх создаются и отображаются? Это весь код? Нарисовано на бумаге, затем на программном обеспечении для 3D-графики, затем ... что?

Конечно, игровые программисты не будут определять каждую вершину каждой фигуры (/ объекта), которую они хотят нарисовать, все в коде (будь то в Direct3D или OpenGL.) Итак, есть ли у игровых дизайнеров инструменты для использования, такие как Maya или что-то вроде запатентованного программного обеспечения для 3D-графики; они «рисуют» модель в этом программном обеспечении, экспортируют ее в любой формат, а затем программисты анализируют ее с помощью кода и автоматически вводят декодированные / проанализированные необработанные вершины объекта / модели?

Я много гуглил, но не смог найти чего-то убедительного, чтобы объяснить, как работает этот аспект профессиональных видеоигр.

MMag
источник
2
Вот довольно реалистичная документация по художественному процессу: salvationprophecy.com/forum/viewtopic.php?f=4&t=413
Blue Wizard
Хм ... это можно считать слишком широким, чтобы на него можно было ответить, или не конструктивным. Но в то же время звучит разумно спросить кого-то, кто никогда не подходил к gamedev и хочет начать обучение, и на него можно было бы дать хороший ответ. Так что, не уверен, если это должно быть закрыто или нет.
Лоран Кувиду
1
Обычно люди делают модели называют художников , а не дизайнеры : характер художника, окружение художника, аниматора ... Геймдизайнер больше о проектировании фактической игры, ее правила и т.д.
Лоран Couvidou

Ответы:

16

Во всех играх, над которыми я работал, конвейер создания активов выглядит примерно так:

  1. концепт-художник (для уровней / фонов / моделей уровней) или персонаж-художник (для моделей) будут создавать эскизы для персонажей / уровней / и т. д. Как правило, креативному директору / ведущему художнику предоставляется несколько вариантов, чтобы решить, какой из них им больше нравится.
  2. Концепция / характер персонажа, который был одобрен, предоставляется моделиру для использования в качестве ссылки. Иногда дополнительный профиль / фронт в искусстве делается художником персонажа, чтобы обеспечить более чистую рамку или ссылку для процесса моделирования. Я видел многих моделистов с концептуальным искусством, застрявшим в 3d max / maya / etc, в качестве прямой ссылки.
  3. Разработчики моделей обычно генерируют базовые текстуры и для модели, обычно с правильными материалами шейдера для среды выполнения. шейдеры используются для рендеринга модели в игре и могут иметь особые требования к текстуре / uv / etc, которые должны быть предоставлены разработчиком модели или назначенным художником текстуры.
  4. Работа дизайнера уровней будет состоять в том, чтобы собрать воедино ресурсы, чтобы «построить» сам уровень.

    Это необычно для всего уровня быть построенным как единый кусок геометрии. Большинство уровней построены из частей или разделов. (например: печально известный использовал набор шестиугольных «плиток» http://www.gamasutra.com/php-bin/news_index.php?story=118581 и skyrim (и многие другие) используют подход в стиле lego, чтобы собрать воедино уровни http : //www.gamasutra.com/blogs/JoelBurgess/20130501/191514/ )

    Обычно в этом процессе задействован редактор уровней с некоторым описанием, хотя во многих играх 3d-моделисты используются как «редакторы уровней» для создания экземпляров ранее созданных ресурсов.

  5. После того, как все это сделано, ресурсы обычно обрабатываются с помощью набора инструментов, который превращает дружественные к 3D Modeler файлы в готовые к игре данные, которые можно загружать непосредственно в среду выполнения.

    Наборы инструментов (бит, который берет необработанные ресурсы и превращает их в готовые к игре данные) часто являются одними из самых сложных частей разработки в разработке игр. Им нужно общаться со многими различными приложениями, понимать множество различных форматов файлов, а также понимать, как преобразовывать данные в более эффективный и мгновенно используемый формат. Обычно цепочки инструментов выполняют предварительные проходы освещения, сварку вершин, генерацию LOD и так далее. Зачастую сборка всего набора данных для большой игры ААА занимает очень много времени, часто более 8 часов для полной перестройки. Таким образом, наборы инструментов, как правило, также содержат распределенную обработку для распределения нагрузки на все ПК во всей студии.

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

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

  6. Как только все на самом деле загружается в память. Игра отправит вещи, которые видны для Renderer, которые затем будут взаимодействовать с API, используемым для рисования вещей на экране.

Программисты могут (и делают) генерировать информацию о вершинах вручную. Обычно это называется «рендеринг в непосредственном режиме». Это не очень эффективно, и используется только в ситуациях, когда невозможно использовать предварительно сгенерированные данные или данные вершин, управляемые шейдером. Например: рендеринг пользовательского интерфейса, полноэкранные четырехугольники.

Обычно 99% объектов на экране представляют собой предварительно сгенерированную информацию о вершинах, отображаемую в режиме «Сохранено», когда шейдеры выполняют любые необходимые манипуляции. Например: анимация скинов

Мэтт Д
источник
7

Вот простой ответ: они делают все это в приложениях 3D-графики, таких как Maya или 3DS Max. Сначала они занимаются концептуальным искусством (на бумаге), в соответствии с ними они создают модели, текстуры (в Photoshop или что-то в этом роде). Простые анимации также выполняются в программном обеспечении целиком, более сложные анимации выполняются с помощью захвата движения и затем отображаются на вашей модели. Для анимации вы обычно используете скелетную анимацию.

Все эти данные сохраняются в файлах.

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

zacharmarz
источник
1
Я думаю, что нужно некоторое программирование, чтобы плавно трансформировать одну анимацию в другую, поэтому, когда вы получаете выстрел в середине прыжка, это не выглядит странно
Thomas
3
@Tommas, Смешайте деревья. Я думаю. Но это как «твининг» системы, которые встроены как расширение в игровой движок. Не обязательно создан в 3D моделях. Они в основном захватывают данные анимации и интерполируют между ними магические силы.
Сидар
Да. Конечно. Вам нужно загрузить, разобрать и как-то представить модель. Также как-то нарисовать его на экране. Так что определенно - вы должны смешивать анимацию. Вы обычно также используете некоторую обратную кинематику, но это более конкретные проблемы.
zacharmarz
2
Если бы только смешанные деревья и анимация превращались так просто, как «анимация движения». Существует множество дорогостоящих промежуточных решений высокого класса, предназначенных только для решения этой конкретной области проблем.
Шон Мидлдич
4

Программисты на самом деле могут определить каждую вершину индивидуально, если они хотят. Это, конечно, никогда не происходит, если они не делают какую-то базовую демонстрацию куба. Обычно то, что сохраняется в файлах модели, - это нечто вроде списка вершин, которое программист может легко и просто подключить к своему коду для рисования модели. Очевидно, в этом есть нечто большее, но в основном модельные форматы дают косвенные «инструкции» о том, как нарисовать определенную модель.

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

Я никогда не был человеком, который на самом деле написал этот код, поэтому, возможно, некоторые детали моего объяснения не верны.

Katana314
источник
2

Я работал сам, чтобы попытаться собрать игру. Я могу дать вам простой список программ, которые я использую.

Моделирование: 3D Coat, modo

Такелаж: модо

Текстуры: GIMP, Inkscape

Игровой движок: Unity

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

Кале З. Раглиус
источник
2
-1 Предоставление списка использованных приложений не описывает процесс. Этот вопрос не о конкретном программном обеспечении, а о том, как они сделаны, а не только о том, с чем они сделаны.
MichaelHouse