Як сучасні ігрові двигуни досягають реального відображення в режимі реального часу проти "повільного" відображення Блендера?


90

Я новачок і в гамедеві, і в "Блендері", і є щось, чого я не можу похитнути:

У Blender один рендер (навіть за допомогою більш досконалого ретранслятора циклів) може тривати до 45 секунд на моїй машині. Але очевидно, що в грі ви можете мати дивовижну графіку, і тому рендерінг, очевидно, відбувається постійно, кілька разів на секунду в режимі реального часу.

Тож мені також цікаво, що таке відключення, щодо того, наскільки здаються "повільними" візуалізації Блендера, порівняно з тим, як ігрові двигуни досягають рендерінгу (або майже в реальному часі).


3
Візуалізація в режимі реального часу сама по собі є величезною темою, про неї написано багато книг (у тому числі "Візуалізація в режимі реального часу"). А рендері на зразок Cycles працюють зовсім інакше, ніж 3D-рендері в ігрових двигунах - ви їх не можете реально порівняти
UnholySheep

42
@UnholySheep Звичайно, ви можете порівняти їх. Як ще хтось пояснить різницю, щоб відповісти на запитання?
user985366

2
@ 10Replies Але це питання не було б актуальним на цьому сайті.
GiantCowFilms

3
@ 10Replies: Хоча в ОП згадується Блендер, питання по суті зводиться до того, чому ігрові двигуни в реальному часі здаються, що 3D-сцени відображаються швидше, ніж приблизно фотореалістичні 3D-рендері (такі як Blender, але і багато інших). Зауважте, що це також питання, на яке було прийнято відповідь. Зважаючи на це, я погоджуюсь, що питання є більш тематичним тут щодо розвитку ігор , де можна задати питання про загальну технологію розробки ігор, а не про Blender , де питання більш характерні саме для Blender.
АБО Mapper

3
Я думаю, що секрет тут полягає в тому, що дивовижне не повинно бути точним. Існують швидкі наближення до математики, використовувані в 3D-рендерінгу, як InvSqrt
Дмитро Григор'єв

Відповіді:


115

Візуалізація в режимі реального часу, навіть сучасна візуалізація в режимі реального часу - це захоплення хитрощів, ярликів, хакерів та наближень.

Візьміть, наприклад, тіні.

У нас досі немає повністю точного та надійного механізму для відображення тіней у режимі реального часу від довільної кількості вогнів та довільно складних об'єктів. У нас є кілька варіантів техніки тіньового картографування, але всі вони страждають від добре відомих проблем із тіньовими картами і навіть "виправлення" для них - це лише сукупність робочих ситуацій та компромісів (як правило, якщо ви бачите терміни «зміщення глибини» або «зміщення полігону» у будь-чому, тоді це не є надійною технікою).

Інший приклад техніки, яку використовують рендері в реальному часі, - це перерахунок. Якщо щось (наприклад, освітлення) занадто повільно обчислювати в режимі реального часу (а це може залежати від системи освітлення, яку ви використовуєте), ми можемо попередньо обчислити його і зберегти, тоді ми можемо використовувати попередньо обчислені дані в реальному масштабі -час для підвищення продуктивності, що часто відбувається за рахунок динамічних ефектів. Це пряма пам'ять проти обчислення компромісу: пам'ять часто дешева і рясна, обчислення часто немає, тому ми спалюємо додаткову пам'ять в обмін на економію на обчисленні.

Офлайн-рендері та інструменти моделювання, з іншого боку, як правило, зосереджуються більше на правильності та якості. Крім того, оскільки вони працюють з динамічно мінливою геометрією (наприклад, моделлю, яку ви будуєте), вони повинні часто перераховувати речі, тоді як рендер у реальному часі буде працювати з остаточною версією, яка не має цієї вимоги.


14
Ще один момент, який слід зазначити, полягає в тому, що обсяг обчислень, використаних для генерування всіх даних, для яких гра буде потрібно для швидкого відображення перегляду області, може бути на порядок більше, ніж обсяг обчислень, який був би необхідний для візуалізації одного подання. Якщо візуалізація району займе одну секунду без попереднього обчислення, але деякі попередньо обчислені дані можуть скоротити її до 1/100 секунди, витратити 20 хвилин на попередній розрахунок може бути корисним, якщо перегляди знадобляться в грі в реальному часі, але якщо просто хочеться десятисекундного фільму з 24 кадрів в секунду, було б набагато швидше витратити чотири хвилини ...
supercat

9
... генеруючи 240 потрібних переглядів зі швидкістю один за секунду.
supercat

@supercat, і через це ваші рендери майже не мають суєти, і ви отримуєте великий контроль над процесом. Ви можете використовувати ігровий двигун для візуалізації ... якщо ви будете готові до прихильності щодо функцій. Але, як ви сказали, цього не варто.
joojaa

Одним з яскравих прикладів цього, який я можу згадати, є оригінальний двигун Quake (~ 1996), який зміг досягти відносно чудової 3D-графіки в реальному часі на дуже обмежених машинах, використовуючи комбінації надзвичайно трудомістких методів попереднього розрахунку. Дерева BSP та попередньо відображені освітлювальні ефекти були створені достроково; розробка рівня для цього двигуна зазвичай передбачає години (як правило, протягом ночі) очікування закінчення інструментів збирання карт. Компроміс був, по суті, скороченим часом рендерингу за рахунок часу авторства.
Джейсон C

(У оригінальному двигуні Doom [1993] були подібні перерахунки. Марафон, можливо , також є, але я не пам'ятаю, я пам'ятаю, як будувати рівні марафону, але не можу пригадати, в чому це було пов’язано.)
Джейсон C

109

Поточна відповідь зробила дуже хорошу роботу з пояснення загальних проблем, але я відчуваю, що вона пропускає важливу технічну деталь: "Цикли" двигуна Blender - це інший тип двигуна, який використовують у більшості ігор.

Зазвичай ігри виводяться шляхом повторення всіх полігонів сцени та малювання їх окремо. Це робиться шляхом «проектування» координат багатокутника через віртуальну камеру для отримання плоского зображення. Причина, яку цю техніку використовують для ігор, полягає в тому, що сучасне обладнання розроблено навколо цієї методики, і це можна зробити в режимі реального часу до відносно високого рівня деталізації. Нецікаво, це також техніка, яку застосовував попередній рендер Blender, перш ніж Blender Foundation відмовився від старого двигуна на користь двигуна Cycles.

Полігонна візуалізація

З іншого боку, цикли - це те, що відомо як двигун проміння. Замість того, щоб дивитись на багатокутники та виводити їх окремо, він викидає віртуальні промені світла на сцену (по одному на кожен піксель у підсумковому зображенні), відкидає цей промінь світла від декількох поверхонь, а потім використовує ці дані, щоб визначити, який колір пікселя має бути. Рейтрасінг - це дуже дорога обчислювальна техніка, яка робить її непрактичною для візуалізації в режимі реального часу, але вона використовується для візуалізації зображень та відео, оскільки забезпечує додатковий рівень деталізації та реалістичності.

Променева рендерінг


Будь ласка, зауважте, що мої короткі описи випромінювання та багатокутної передачі дуже скорочені заради стислості. Якщо ви хочете дізнатися більше про методи, я рекомендую вам знайти поглиблений підручник або книгу, як я підозрюю, що дуже багато людей написали кращі пояснення, ніж я міг би зібрати.

Також зауважте, що у 3D-рендерінгу існує різноманітна техніка, і деякі ігри насправді використовують варіанти ретрансляції для певних цілей.


3
+1 за дуже хороший момент; Я навмисно не ходив по кролячій дірці від випромінювання проти растеризації, тому це здорово мати це як доповнення.
Максим Мінімус

16
Ця відповідь стає більшою мірою різницею. Ігрові двигуни виконують растерізацію (вперед або відкладено), а автономні рендери (наприклад, Blender, Renderman тощо) виконують трасування променів. Два абсолютно різні підходи до нанесення зображення.
ssell

4
@ LeComteduMerde-fou Оскільки gamedev спрямований на розробників ігор, я вважав, що додаткове технічне пояснення буде корисним для більш технічно схильного читача.
Фарап

1
@ssell Правда, але справа не лише у відстеженні променів - навіть без відстеження променів, навіть при передачі GPU, візуалізація Blender зазвичай набагато детальніше та повільніше. Це в основному пов'язане з фокусом на правильності - кращою фільтрацією та роздільною здатністю текстур, антизгладжуванням, освітленням, тіньовим відображенням, точністю Z, квадроциклами, двонаправленими поверхнями, великими підрахунками багатокутника, виведенням з більшою роздільною здатністю, точним відображенням ударів , відсутність заздалегідь обчислених карт, морфінг, точна кінематика ... це довгий список функцій, через які ігрові двигуни бракують або підробляють свій шлях.
Луань

1
@ Чії я неправильно запам'ятав. Я думав про ART VPS , це було просто прискорення, а не в режимі реального часу.
Джейсон C
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.