Я помню, как смотрел предварительно отрендеренный трейлер Tomb Raider, и хотел, чтобы эта графика была в самой игре.
Почему такая большая разница между трейлером и реальной игрой? Я понимаю, что игра - это совершенно другая концепция, она имеет другой конвейер, она должна проходить через различные виды взаимодействия с игроками и т. Д. Я хочу знать, что такое игры, которые делают их рендеринг таким трудным по сравнению с анимационными фильмами.
До сих пор я знал, что создание игры и анимационного фильма разделяют некоторую базовую нагрузку, например, создание 3d-моделей, рендеринг их (только в игре это происходит вживую). Анимированные фильмы просматриваются очень долго, и мы видим только предварительно отрендеренные сцены. Это все, что я знаю, поэтому я надеюсь, что вы ответите с этой точки зрения!
А как насчет рендеринга анимационных фильмов, который часами и часами делает их такими красивыми, в то время как рендеринг в игре менее красив (с общей точки зрения)?
Ответы:
Вы уже упомянули один из центральных моментов: время .
В процессе рендеринга анимации с высокой точностью воспроизведения используются несколько различных подходов и алгоритмов (все обычно объединяются под термином «Глобальное освещение» ), причем трассировка лучей является одной из наиболее распространенных (другие включают, например, Radiosity и Ambient Occlusion ).
Трассировка лучей включает в себя моделирование (обычно большого) количества световых лучей, проходящих через сцену, и вычисление их путей, их отражений и преломлений при попадании на объекты с различными материалами. В свою очередь, разные материалы имеют разные физические свойства, которые приводят к специфическим реакциям на лучи (например, количество света, отражающегося от одного объекта, выше для блестящих объектов по сравнению с глянцевым).
Еще один момент - это физика : моделирование тысяч линий волос физически правильным образом отнимает много времени. Вот почему в старых играх волосы часто аппроксимируются очень грубой сеткой, которая затем текстурируется, чтобы создать впечатление о волосах, возможно, с некоторыми дополнительными движущимися объектами, чтобы сделать их более реалистичными.
Также следует учитывать: память и пропускная способность . Чем выше качество текстуры, применяемой к объекту в сцене, тем больше памяти вам нужно загрузить и использовать в игре. Но система должна не только иметь достаточно памяти для хранения данных, но и передавать эти данные, используя всю доступную пропускную способность. Поскольку память и пропускная способность ограничены, есть максимум, чего можно достичь.
Игры часто немного обманывают, используя только текстуры высокого разрешения для ближних объектов, и используют изображения с более низким разрешением для удаленных объектов (термин: MipMapping ), тем самым уменьшая необходимую пропускную способность, поскольку нужно выбирать меньше текселей, что, в свою очередь, увеличивает производительность (см. раздел о MipMapping в Руководстве по программированию Apple OpenGLES).
Точно так же игры также часто используют разные сетки для объектов, в зависимости от того, насколько далеко они находятся, а удаленные объекты менее детализированы (термин: LoD = уровень детализации ).
Вывод: в графике в реальном времени (такой как игры и симуляции) этот детальный и сложный процесс рендеринга, конечно, не будет работать для создания плавных / плавных сцен. Для достижения этого плавного эффекта анимации / движения для человеческого глаза вам нужно как минимум 20 визуализированных кадров в секунду. С другой стороны, рендеринг одного кадра (!) В анимационном фильме может легко занять от нескольких часов до нескольких дней, в зависимости от многих факторов, таких как количество используемых лучей в трассировке лучей или количество выборок для Ambient Окклюзия (см. Эти страницы Pixar 1 / страница Pixar 2 для снимков экрана 16 и 256 образцов), а также желаемое разрешение фильма (больше пикселей = больше информации для вычисления). Также см. Эту статьюо процессе создания анимационного фильма Pixar's Monsters University , который дает некоторые интересные идеи, а также упоминает 29 часов времени рендеринга на кадр.
В целом: чем выше точность / реалистичность, которая должна быть достигнута, тем больше итераций / отказов / выборок обычно требуется, что в свою очередь требует больше ресурсов (как времени, так и / или вычислительной мощности / памяти). Чтобы визуализировать разницу, просмотрите итоговый рендер на основе количества отскоков для расчета преломления в этом примере: Алмазные отскоки от Keyshot
Но, конечно, качество приложений реального времени постоянно увеличивается по двум причинам:
Разработаны и реализованы более умные методы / формулы, которые способны создавать довольно фотореалистичные эффекты без необходимости трассировки лучей. Это часто включает в себя приближения и иногда предварительно рассчитанные данные. Некоторые примеры:
источник
Помимо временного фактора, стоит отметить, что в фильме художник полностью контролирует то, что зритель будет и не будет смотреть.
В типичной сцене фильма камера не будет тратить много времени на то, чтобы указывать на потолок или указывать в темный угол комнаты, или нацеливать на чью-то лодыжку, поэтому бюджет полигонов и текстур для этих элементов будет довольно низким.
Если вся сцена происходит с одной точки зрения, виртуальный набор (как настоящий набор фильмов) не должен включать части, которые находятся за камерой. В большинстве игр игрок может свободно смотреть где угодно и когда угодно. Это означает, что качественный бюджет может быть сфокусирован на том, что действительно видели. (Некоторые игры от третьего лица, например, серия God Of War, используют камеру с ограниченным доступом; их изображения, как правило, заметно лучше, чем у более бесплатных игр с камерой).
источник
Вы предполагаете, что разница заключается просто в рендере - в анимационном фильме также есть возможность для редактирования после факта. Они могут иметь комбинированные эффекты, которых было бы трудно достичь в оригинальном движке, или они могут немного подправить вещи (например, удалить или повторить каждый 10-й кадр, чтобы ускорить / замедлить анимацию).
Если у вас есть шанс, найдите один из DVD 'Roughnecks: The Starship Trooper Chronicles', так как в них есть треки комментариев от редактора и аниматоров о трюках, которые они должны были сделать, когда начали отставать от графика доставки - такие вещи, как перерабатывать кадры, но переворачивать ось, чтобы это было не так очевидно, коррекция цвета, маскировка вещей, которые им не нравились, добавление взрывов и т. д.
источник
Вы вроде уже ответили на свой вопрос. Обычно анимационные фильмы имеют более высокий уровень детализации, что приводит к длительному времени рендеринга для каждого отдельного кадра.
С другой стороны, в играх не так много деталей, потому что сцена должна воспроизводиться 30 или более раз в секунду. Именно поэтому разработчики стараются использовать как можно больше ресурсов (текстур, моделей и т. Д.), Потому что рендеринг одного и того же объекта в двух позициях происходит намного быстрее, чем если бы все было уникальным. Они также должны следить за тем, чтобы не использовать слишком много полигонов в своих моделях, и вместо этого стараются создать впечатление глубины, используя освещение, текстуры, рельефное отображение и другие методы.
У фильмов нет этой проблемы; они делают сцену так, как они хотят, и используют столько деталей и подробных текстур, моделей и геометрии, сколько необходимо для достижения сцены, которую они ищут.
Можно утверждать, что игры наверстывают упущенное. Если вы посмотрите на некоторые из самых красивых игр в последнее время, они не так далеки от качества фильмов, как раньше. Конечно, вы всегда сможете втиснуть больше деталей в предварительно визуализированную сцену, чем в игру, но я думаю, что разница не будет столь заметной через несколько лет.
источник
В других ответах подробно рассматриваются сырые графические проблемы, но не упоминается важная часть реализма игр по сравнению с фильмами и трейлерами: анимация и движения камеры .
В фильме или трейлере каждое движение людей и камер может быть тщательно скоординировано, чтобы показать только нужные эмоции на данный момент, и их никогда не нужно повторять. В видеоиграх игра должна быть способна мгновенно реагировать на движения игрока и должна повторно использовать небольшой пул стандартных анимаций, чтобы заполнить неограниченное количество часов игрового времени, которое возможно.
Примеры этого из рассматриваемого трейлера : когда терапевт кивает и дает «неплохую» улыбку , и когда Лара сжимает подлокотник, трясет ногой или с трепетом смотрит на пещеру. Эти мелочи (или их отсутствие, и «пластиковые» персонажи) влияют на воспринимаемый реализм гораздо больше, чем незначительные улучшения графики.
В отличие от других графических отличий, это не та проблема, которую потенциально можно решить, используя больше вычислительной мощности: это принципиальная разница между миром, который написан на скриптах, и миром, который реагирует на каждое ваше действие. В связи с этим, я ожидаю, что реалистичность современных трейлеров превзойдет весь игровой процесс в обозримом будущем.
источник
В дополнение к другим замечательным ответам, которые уже были опубликованы, стоит отметить, что для достижения быстрого времени обработки, необходимого для игр, разработчики игр должны испечь многие из своих визуальных эффектов в виде простых текстур. Это означает, что нужно быть очень осторожным, чтобы избежать эффекта, который плохо выпекается.
Одним из важных эффектов, который трудно испечь для видеоигр, является Subsurface Scattering (SSS) . К сожалению, этот эффект действительно важен для создания реалистичной кожи человека. Вот почему многие «реалистичные» персонажи видеоигр выглядят пластичными.
Один из способов, с помощью которого разработчики могут избежать этой проблемы, - это намеренно сделать персонажей ярко окрашенными, чтобы отвлечь их от пластического вида, или добавив множество теней и текстурных деталей к лицу (например, бороды и т. Д.), Чтобы разбить большие, непрерывные участки кожа.
источник
Чтобы ответить на один из вопросов, заданных ФП в комментарии:
Этот вопрос сложнее, чем кажется. Я думаю, что хорошее эмпирическое правило - это следующее уравнение (которое я, кстати, составил):
По сути, это означает, что для моделей с относительно небольшим количеством специальных материалов (т.е. без зеркала, под поверхностью и т. Д.) Время вычислений будет большим, определяемым количеством полигонов. Это обычно имеет место для очень простой графики видеоигры.
На практике, однако, в новых играх высокого класса и особенно в фильмах виновником является «обычно» трассировка лучей. Почему? Ну по двум причинам. Сначала я приведу математическую причину, а затем в конце свое мнение об истинной причине.
Мати причина:
Обновление: это математическое объяснение может быть не совсем точным. Пожалуйста, смотрите объяснение CrazyCasta в комментариях для более подробной информации.
Предположим, у вас есть 1000 полигонов и 3 источника света. Наименьшее количество следов лучей, которое вам нужно выполнить, составляет 3 * 1000.
Если мы чрезмерно упростим ситуацию и предположим, что 1 луч трассировки = 1 расчет (грубая недооценка), то нам потребуется 3000 вычислений.
Но теперь давайте предположим, что вы хотите иметь отражения тоже.
Настройки по умолчанию для отражений в бесплатной программе Blender :
Для этих настроек мы можем предположить, что в лучшем случае это сверхпростое отражение удвоит вычислительную стоимость вашей модели.
Но, как я сказал ранее, этот пример очень упрощен, и вы можете найти очень много эффектов (помимо тех, что я уже упоминал), которые будут снимать ваше время рендеринга через крышу.
Случай и точка: попробуйте визуализировать отражения с помощью
gloss=1
(по умолчанию в Blender), затем уменьшите глянец до 0,01 и сравните два времени рендеринга. Вы найдете, что тот с 0,01 глянец будет намного медленнее, но сложность модели не изменилась вообще.Моя качественная, но более реалистичная причина:
Увеличение сложности сетки только улучшит качество модели до определенного уровня. Пройдя пару миллионов граней, на самом деле не так уж много, что может помочь добавление новых граней. Я даже пойду так далеко, что скажу, что если вы используете сглаживание, вы сможете получить всего лишь пару сотен граней для большинства общих целей.
Но вещи, которые почти всегда имеют значение - это освещение, материальные эффекты и трассировка лучей. Вот почему фильмы, как правило, используют их в попытке приблизиться к красивым сложностям реального мира.
Отличный способ почувствовать все это - взглянуть на список актеров в конце новейшей полнометражной анимации Диснея. Вы, вероятно, будете удивлены тем, сколько у них людей со светом и текстурой.
источник
:)
Стоит добавить, что анимация фильма обычно делает много визуальных хитростей, чтобы сделать воспринимаемое движение более плавным.
Аниматоры могут, например, использовать традиционные методы ручной анимации, которые обычно не используются при рендеринге в реальном времени, такие как размытие, кратность или деформация, чтобы создать более плавное изображение, несмотря на более низкую частоту кадров, чем фильмы (были во всяком случае, до недавнего времени). ) отображается в. В частности, использование мазков и мультипликаторов осложняется использованием сеток - вам нужно создавать деформации сетки для такого рода искажений сетки, и я не думаю, что я видел это в любых трехмерных видеоиграх.
Кадры с быстро движущимися объектами, проходящими через них, могут отображаться с другой частотой кадров, а затем снова объединяться, чтобы создать размытость при движении по сцене. Motion Blur является довольно распространенной техникой в 3D графике в реальном времени в наши дни. Эффект обычно не в том высоком качестве, которое получит анимационный дом с десятками процессоров (см. Ответы «время» выше) в значительной степени из-за того, что для фальсификации размытия движения действительно требуется несколько этапов постобработки на слой, и большое количество промежуточных кадров должно быть действительно плавным.
Выполнение такого рода визуальных хитростей для повышения воспринимаемого качества с помощью графики в реальном времени требует ограничения выходной частоты кадров значительно ниже максимально доступных промежуточных кадров с фоновым рендерингом, а затем создания композиции для получения окончательного кадра. Вероятно, существует несколько мнений о том, стоит ли небольшого увеличения визуальной точности при использовании таких методов, как потеря фрейм-бюджета, особенно если это будет чрезвычайно трудно сделать правильно.
Чтобы ответить на один аспект вашего вопроса:
Ремесленники, в основном. Художники в реальном времени не имеют возможности точно настроить каждый кадр или создать одноразовые трюки, чтобы улучшить общий вид сцены или реакции, не только из-за временных ограничений (как в процессе разработки, так и в рендеринге), но и потому, что практических ограничений. Как отмечается в комментарии об интерактивности, игрок, вероятно, не будет делать одно и то же каждый раз, но фильм будет проигрываться одинаково каждый раз.
Это означает, что художник видеоигр имеет совершенно иной набор приоритетов, когда он касается качества модели и конечного качества рендера, чем художник фильма. Оба требуют огромного количества навыков, но каждый требует различных методов. Я ожидаю, что эти методы будут все больше сходиться по мере того, как аппаратное обеспечение рендеринга на потребительском уровне будет продолжать развиваться, и в ваших SIGGRAPH и ваших GDC продолжают появляться математические гении.
источник
Один анимационный фильм может занять много лет, чтобы воспроизвести на одном зверьке машины. Так как он предварительно визуализирован, не имеет значения, сколько дорогостоящих эффектов, таких как отражения света, тени и т. Д., Мы добавляем в сцену. Эти фильмы обычно обрабатываются фермами рендеринга, где тысячи компьютеров связаны друг с другом, работая над одной и той же работой.
Причина, по которой мы не можем добиться такого же качества в режиме реального времени, заключается в том, что машине нужно визуализировать текущий кадр примерно за 16 мс, чтобы достичь FPS 60. Один кадр для анимационного фильма может занять несколько часов для рендеринга на одном ПК.
В игре, помимо графики, происходит масса других вещей. В каждом кадре есть тонны расчетов. Проще говоря, анимационный фильм не должен рассчитывать урон, нанесенный игроку от ракетной установки, вы просто анимируете гибы и полигоны рендерится.
К счастью, на этой планете ходят гениальные люди. Помимо более качественных ПК, которые могут рендерить больше полигонов и более крупные текстуры, есть несколько изобретательных изобретений, таких как карты нормалей, которые могут очень дешево анимировать свет / тень на плоском полигоне, делая скучный 3D-объект необычайно детализированным.
Некоторые из этих дорогих эффектов, которые делают фильмы, имеют дополнительную вспышку.
Проще говоря, нам нужно придумать «дешевые» приемы, чтобы игра выглядела хорошо. Но человеческий глаз трудно обмануть.
источник