Как 3D модели в играх создаются и отображаются? Это весь код? Нарисовано на бумаге, затем на программном обеспечении для 3D-графики, затем ... что?
Конечно, игровые программисты не будут определять каждую вершину каждой фигуры (/ объекта), которую они хотят нарисовать, все в коде (будь то в Direct3D или OpenGL.) Итак, есть ли у игровых дизайнеров инструменты для использования, такие как Maya или что-то вроде запатентованного программного обеспечения для 3D-графики; они «рисуют» модель в этом программном обеспечении, экспортируют ее в любой формат, а затем программисты анализируют ее с помощью кода и автоматически вводят декодированные / проанализированные необработанные вершины объекта / модели?
Я много гуглил, но не смог найти чего-то убедительного, чтобы объяснить, как работает этот аспект профессиональных видеоигр.
Ответы:
Во всех играх, над которыми я работал, конвейер создания активов выглядит примерно так:
Работа дизайнера уровней будет состоять в том, чтобы собрать воедино ресурсы, чтобы «построить» сам уровень.
Это необычно для всего уровня быть построенным как единый кусок геометрии. Большинство уровней построены из частей или разделов. (например: печально известный использовал набор шестиугольных «плиток» http://www.gamasutra.com/php-bin/news_index.php?story=118581 и skyrim (и многие другие) используют подход в стиле lego, чтобы собрать воедино уровни http : //www.gamasutra.com/blogs/JoelBurgess/20130501/191514/ )
Обычно в этом процессе задействован редактор уровней с некоторым описанием, хотя во многих играх 3d-моделисты используются как «редакторы уровней» для создания экземпляров ранее созданных ресурсов.
После того, как все это сделано, ресурсы обычно обрабатываются с помощью набора инструментов, который превращает дружественные к 3D Modeler файлы в готовые к игре данные, которые можно загружать непосредственно в среду выполнения.
Наборы инструментов (бит, который берет необработанные ресурсы и превращает их в готовые к игре данные) часто являются одними из самых сложных частей разработки в разработке игр. Им нужно общаться со многими различными приложениями, понимать множество различных форматов файлов, а также понимать, как преобразовывать данные в более эффективный и мгновенно используемый формат. Обычно цепочки инструментов выполняют предварительные проходы освещения, сварку вершин, генерацию LOD и так далее. Зачастую сборка всего набора данных для большой игры ААА занимает очень много времени, часто более 8 часов для полной перестройки. Таким образом, наборы инструментов, как правило, также содержат распределенную обработку для распределения нагрузки на все ПК во всей студии.
Выполнения является сама игра. Исполняемый файл, который работает на вашем компьютере или консоли. Внутри среды выполнения будет система, называемая диспетчером ресурсов. Задачей менеджера ресурсов является загрузка ресурсов, запрашиваемых другими системами в игре.
Например: когда вы указываете загрузку игры на уровень, метаданные уровня предоставят менеджеру ресурсов список ресурсов, которые необходимо загрузить для отображения уровня. Аналогично, каждый актив будет содержать список любых текстур, материалов или дополнительных активов, которые необходимо загрузить.
Как только все на самом деле загружается в память. Игра отправит вещи, которые видны для Renderer, которые затем будут взаимодействовать с API, используемым для рисования вещей на экране.
Программисты могут (и делают) генерировать информацию о вершинах вручную. Обычно это называется «рендеринг в непосредственном режиме». Это не очень эффективно, и используется только в ситуациях, когда невозможно использовать предварительно сгенерированные данные или данные вершин, управляемые шейдером. Например: рендеринг пользовательского интерфейса, полноэкранные четырехугольники.
Обычно 99% объектов на экране представляют собой предварительно сгенерированную информацию о вершинах, отображаемую в режиме «Сохранено», когда шейдеры выполняют любые необходимые манипуляции. Например: анимация скинов
источник
Вот простой ответ: они делают все это в приложениях 3D-графики, таких как Maya или 3DS Max. Сначала они занимаются концептуальным искусством (на бумаге), в соответствии с ними они создают модели, текстуры (в Photoshop или что-то в этом роде). Простые анимации также выполняются в программном обеспечении целиком, более сложные анимации выполняются с помощью захвата движения и затем отображаются на вашей модели. Для анимации вы обычно используете скелетную анимацию.
Все эти данные сохраняются в файлах.
Когда ваша игра запускается, она анализирует все эти файлы и загружает модели, текстуры, анимацию. И когда это необходимо, он отображает их.
источник
Программисты на самом деле могут определить каждую вершину индивидуально, если они хотят. Это, конечно, никогда не происходит, если они не делают какую-то базовую демонстрацию куба. Обычно то, что сохраняется в файлах модели, - это нечто вроде списка вершин, которое программист может легко и просто подключить к своему коду для рисования модели. Очевидно, в этом есть нечто большее, но в основном модельные форматы дают косвенные «инструкции» о том, как нарисовать определенную модель.
Во многих случаях и для многих форматов файлов модели сторона кодирования была сделана для вас. Есть даже некоторые текстовые форматы моделей с сопровождающим кодом для рисования, которые довольно легко позволяют программисту-аниматору следить за тем, как модель переводится в код.
Я никогда не был человеком, который на самом деле написал этот код, поэтому, возможно, некоторые детали моего объяснения не верны.
источник
Я работал сам, чтобы попытаться собрать игру. Я могу дать вам простой список программ, которые я использую.
Моделирование: 3D Coat, modo
Такелаж: модо
Текстуры: GIMP, Inkscape
Игровой движок: Unity
Очевидно, это небольшой список приложений, но для меня они работают и доступны для любителей и независимых разработчиков.
источник