Разница между рендерингом в OpenGL и 3D-анимации


16

С OpenGL и так далее я могу рендерить некоторые довольно удивительно выглядящие вещи в режиме «реального времени» 60 FPS. Однако, если я попытаюсь снять видео с той же самой сценой, скажем, в Maya или 3ds Max, потребуется гораздо больше времени для рендеринга, даже если это то же разрешение и FPS.

Почему эти два типа рендеринга требуют разных периодов времени для одного и того же результата?

Примечание. Да, я понимаю, что программное обеспечение для 3D-анимации может создавать изображения, превосходящие по качеству то, что можно сделать в режиме реального времени. Но для этого вопроса я имею в виду сцену равной сложности.


1
Короткий ответ: OpenGL использует ярлыки.
user253751

Ответы:


9

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

Это должно быть быстро, чтобы мы могли испытать это как в реальном времени.

Поэтому алгоритм делает несколько простых шагов.

  • проверить, находится ли определенная часть сцены на мой взгляд

    Отбор Frustum

  • проверить, находится ли перед ним что-то, что может потребоваться визуализировать позже, используя буфер глубины

    Буфер глубины

  • заказать объекты, которые мы нашли, чтобы нарисовать

  • нарисовать их , проецируя их на экран
  • закрасить их на основе текстур / шейдеров / источников света / ...

С другой стороны, программное обеспечение для рендеринга (Blender / Max / Maya / ...), скорее всего, использует какую-то трассировку лучей.

Это включает в себя много математики для достижения более высокой степени реализма. В основном это работает так же:

  • создать камеру и плоскость изображения перед ней
  • снимать один луч (или несколько пробных лучей) через каждый пиксель
  • проверьте, попадает ли луч в сцену
  • последний удар - это тот, который будет окончательно прорисован в пикселе (например, буфер глубины)
  • рассчитать свет для данной точки Легкий расчет

....

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

Вместо того, чтобы проверять, попала ли точка, большинство raytracer теперь начинает вычислять:

  • количество света, через которое проникает поверхность
  • сколько света отражается
  • бросать новые лучи из точки попадания в сцену, пока она не может попасть в источник света

Существует масса техник с различной степенью реализма, которые можно использовать для расчета света определенной точки в сцене.

TL; DR Суть заключается в том, что raytracer в основном старается быть физически точным, когда речь идет о освещении, и поэтому ему приходится выполнять гораздо больше вычислений на пиксель (иногда снимать тысячи лучей), а с другой стороны, игры получают свою скорость с помощью Рисование больших кусков экрана с более простыми легкими вычислениями и множеством шейдерных трюков, которые позволяют ему выглядеть реалистично.


7

Вы сравниваете яблоки с апельсинами

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

Нет никаких причин, по которым вы не можете получить графику в реальном времени, которая очень хороша из программ для моделирования, таких как Maya или 3DS Max. Результаты, которые соответствуют многим играм. У них есть шейдеры области просмотра, как в играх. Существует также опция рендеринга в окне просмотра, которая позволяет кадрировать кадры на диск так быстро, как это позволяет (я делал рендеры Full HD со скоростью 30 кадров в секунду от Maya). Все, что вам нужно сделать, это прекратить использование предоставленного программного обеспечения raytracers.

Хотя есть некоторые отличия. Основное отличие состоит в том, что вы, как пользователь, не оптимизируете вещи так сильно, как разработчики игр (оптимизация использует все приемы, описанные в книге). Во-вторых, ваши анимационные примитивы работают на процессоре, потому что вам нужна гибкость. В играх можно позволить себе делать оптимизации. В общем, вы платите за отсутствие команды программистов рядом с вами.

Многие вещи на самом деле, возможно, были предварительно вычислены, поэтому они не намного быстрее, просто лучше организованы. Запекание вашего непрямого освещения будет бить не запеченные результаты каждый день.

Почему трассировщики лучей медленнее?

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

  1. Передача данных на диск, не только фреймы, но и все данные. Нечто, что могло бы сразу сломать скорость большинства игр.

  2. Работа на общем оборудовании. GPU намного быстрее для определенных вещей, когда вы оптимизируете для GPU. Но это не работает для всех нагрузок, на самом деле процессор Intel быстрее вычисляет в целом, чем графический процессор. Графический процессор просто массивно параллелен, а процессор - нет. Архитектура выигрывает, если вы можете оставаться в GPU и минимизировать передачу и оптимизировать для архитектуры GPU.

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

TL; DR Разница в основном в оптимизации (читай много хитростей) и доступных внешних ресурсах.

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

* См. Http://www.graphics.cornell.edu/~bjw/mca.pdf.


2
Извините, но это неправильно. OpenGL и DirectX используют приближения, которые по своей природе быстрее, чем точная трассировка лучей. Весь смысл ускоренной трехмерной графики заключается в наличии алгоритмов, которые балансируют между реалистичностью и скоростью, и выглядят достаточно хорошими для большинства практических целей: игр, САПР и т. Д.
IMil

2
@IMil OpenGL может использоваться для трассировки лучей. Это быстрее, потому что он оптимизирован для рассматриваемого оборудования. Но Майя НЕ ДОЛЖНА трассировать лучи. Maya и Max могут использовать openGL и directX столько же, сколько ваша игра. Окно просмотра Mayas (и 3ds) - opengl или directX (на ваш выбор). Тот факт, что ваш процессор работает медленнее при определенных нагрузках параллельной обработки, это совсем другое. Так что ответ стоит. Стандартные настройки Maya не более реалистичны, чем стандартная сканлайн.
Джуджаа

5

Предварительный просмотр в реальном времени

Работая в области VFX в отрасли, если вы говорите о предварительном просмотре в реальном времени, а не о производственном рендеринге, то Maya и 3DS Max обычно также используют OpenGL (или, возможно, DirectX - почти то же самое).

Одним из основных концептуальных отличий между анимационным программным обеспечением VFX и играми является уровень допущений, которые они могут сделать. Например, в программном обеспечении VFX художник нередко загружает одну бесшовную сетку символов, которая охватывает сотни тысяч и миллионы полигонов. Игры имеют тенденцию оптимизировать большинство для большой сцены, состоящей из множества простых, оптимизированных сеток (тысячи треугольников каждый).

Рендеринг продукции и отслеживание пути

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

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

содержание

Возвращаясь к этому вопросу, предположения о содержании программного обеспечения VFX и игры сильно различаются. Основной задачей программного обеспечения VFX является создание любого возможного вида контента (по крайней мере, это идеал, хотя практически он зачастую совсем не близок). Игры ориентированы на контент с гораздо более сложными предположениями (все модели должны быть в диапазоне тысяч треугольников, карты нормалей должны применяться к фальшивым деталям, у нас не должно быть 13 миллиардов частиц, персонажи на самом деле не анимированы мышцами буровые и натяжные карты и т. д.).

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

Игры Делай это лучше

Это может быть своего рода противоречивым мнением, но игровая индустрия гораздо более прибыльная индустрия, чем программное обеспечение VFX. Их бюджеты на одну игру могут составлять сотни миллионов долларов, и они могут позволить себе выпускать движки следующего поколения каждые несколько лет. Их исследования и разработки впечатляют, и сотни и сотни игр выпускаются постоянно.

Программное обеспечение VFX и CAD, с другой стороны, далеко не так выгодно. Исследователи, работающие в академических кругах, часто привлекают к исследованиям и разработкам многие отрасли, часто внедряющие методы, опубликованные много лет назад, как будто это что-то новое. Таким образом, программное обеспечение VFX, даже поставляемое такими крупными компаниями, как AutoDesk, часто бывает не таким «современным», как новейшие игровые движки AAA.

Они также имеют гораздо более длительное наследство. Например, Maya - это 17-летний продукт. Он был много отремонтирован, но его основная архитектура все та же. Это может быть аналогично попытке взять Quake 2 и постоянно обновлять и обновлять его вплоть до 2015 года. Усилия могут быть большими, но, вероятно, не будут соответствовать Unreal Engine 4.

TL; DR

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


Это также вопрос времени. Даже если вы можете выполнить рендеринг, скажем, со скоростью 60 кадров в секунду и получить приемлемые результаты, редко удастся оптимизировать его. Скажем, это занимает 3 минуты на кадр и у вас есть 200 кадров для рендеринга. Вы можете получить 60 кадров в секунду, наняв шейдера и оптимизировав, но тогда это займет как минимум день или два вашего времени. Но 200 кадров за 3 минуты занимают всего 10 часов, поэтому вы экономите эту стоимость. На практике дешевле покупать больше оборудования и не беспокоиться об этом. Игры просто не могут принять этот подход.
joojaa

@joojaa Это также немного сложнее. Простое создание действительно хороших шейдеров в реальном времени для Maya может занять год или около того, по крайней мере, даже у опытного разработчика шейдеров (с меньшими преимуществами), потому что гибкость узловой системы там нацелена на производственный рендеринг. Для преобразования этих универсальных шейдерных узлов в систему затенения в реальном времени, которая фиксирует весь спектр эффектов UE 4, потребуется обратный инжиниринг и новый тип техники генерации кода GLSL / HLSL (например, система метапрограммирования). , например
Dragon Energy

Шейдерный движок @joojaa UE 4 непосредственно нацелен на сильно приближенное мышление PBR (очень маленькое подмножество PBR-шейдеров Disney). Они разработали даже свою материальную систему для быстрой цели в реальном времени, вместо того, чтобы начинать с чего-то вроде материальной системы Майи, которая совсем не предназначена (предназначена для трассировки лучей). Даже если бы самый яркий из UE 4 работал на VP 2.0, им пришлось бы работать день и ночь, возможно, годами, чтобы достичь тех же результатов, что и дизайн, не предназначенный для подобных вещей.
Энергия дракона

но это единовременная плата, даже если у вас есть такой конвейер в приложении VFX, каждая сцена может нуждаться в такой дополнительной оптимизации. Нет никаких причин, по которым пользователь Maya не может выполнить рендеринг в UDK, например, на той же платформе разработчика шейдеров.
Джуджаа

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.