Рендер (Візуалізація) – це процес створення фінального зображення або послідовності із зображень на основі двомірних або тривимірних даних. Даний процес відбувається з використанням комп’ютерних програм та часто супроводжується важкими технічними обчисленнями, які лягають на потужності комп’ютера або на окремі його комплектуючі частини.
Процес рендеринга так чи інакше присутній в різних сферах професійної діяльності, будь то кіноіндустрія, індустрія відеоігор або ж відеоблогінг. Найчастіше, рендер є останнім або передостаннім етапом в роботі над проектом, після чого робота вважається завершеною або ж має потребу в невеликій постобробці. Також варто відзначити, що нерідко рендером називають не сам процес рендерингу, а скоріше вже завершений етап даного процесу або його підсумковий результат.
Етимологія слова «Рендер».
Слово Рендер (Рендеринг) – це англіцизм, який часто перекладається на українську мову як “Візуалізація”.
Що таке Рендеринг в 3D?
Найчастіше, коли ми говоримо про рендер, то маємо на увазі рендеринг у 3D графіці. Відразу варто відзначити, що насправді у 3D рендері немає трьох вимірів як таких, що ми часто можемо побачити в кінотеатрі одягнувши спеціальні окуляри. Приставка “3D” в назві скоріше говорить нам про спосіб створення рендеру, який і використовує 3-х мірні об’єкти, створені в комп’ютерних програмах для 3D моделювання. Простіше кажучи, в результаті ми все одно отримуємо 2D зображення або їх послідовність (відео) які створювалися (рендерилися) на основі 3-х мірної моделі або сцени.
Візуалізація – це один з найскладніших в технічному плані етапів у роботі з 3D графікою. Щоб пояснити цю операцію простою мовою, можна привести аналогію з роботами фотографів. Для того, щоб фотографія з’явилася у всій красі, фотографу потрібно пройти через деякі технічні етапи, наприклад, прояв плівки або друк на принтері. Приблизно такими ж технічними етапами і обтяжені 3d художники, які для створення підсумкового зображення проходять етап налаштування рендеру і сам процес рендерингу.
Побудова зображення.
Як вже говорилося раніше, рендеринг – це один з найскладніших технічних етапів, адже під час рендеринга, йдуть складні математичні обчислення, виконувані рушієм (движком) рендеру. На цьому етапі, рушій переводить математичні дані про сцену у фінальне 2D-зображення. Під час процесу, йде перетворення 3d-геометрії, текстур та світлових даних сцени, в об’єднану інформацію про кольорове значення кожного пікселя у 2D зображенні. Іншими словами, рушій на основі наявних у нього даних, прораховує те, яким кольором повинен бути забарвлений кожен піксель зображення для отримання комплексної, гарної та закінченої картинки.
Основні типи рендеринга:
У глобальному плані, є два основних типи рендеринга:
- Рендеринг у реальному часі (Real-Time Rendering);
- Попередній рендер (Pre-rendering);
Головними відмінностями яких є швидкість, з якою прораховується та фіналізується зображення, а також якість картинки.
Що таке Рендеринг в реальному часі (Real-Time Rendering)?
Візуалізація в реальному часі, широко використовується в ігровій та інтерактивній графіці, де зображення має прораховуватися з максимально великою швидкістю, та виводитися в завершеному вигляді на дисплей монітора моментально.
Оскільки ключовим фактором в такому типі рендеринга є інтерактивність з боку користувача, то зображення доводиться прораховувати без затримок та практично в реальному часі, оскільки неможливо точно передбачити поведінку гравця і те, як він буде взаємодіяти з ігровою або з інтерактивною сценою. Для того, щоб інтерактивна сцена або гра працювала плавно без ривків та повільності, 3D рушію доводиться рендерити зображення зі швидкістю не менше 20-25 кадрів в секунду. Якщо швидкість рендера буде нижче 20 кадрів, то користувач буде відчувати дискомфорт від сцени, спостерігаючи ривки та уповільнені рухи.
Велику роль у створенні плавного рендеру в іграх та інтерактивних сценах грає процес оптимізації. Для того, щоб добитися бажаної швидкості рендеру, розробники застосовують різні хитрощі для зниження навантаження на рендер рушій, намагаючись знизити вимушену кількість обчислень. Сюди входить зниження якості 3D моделей та текстур, а також запис деякої світлової та рельєфної інформації в заздалегідь запечені текстурні карти. Також варто відзначити, що основна частина навантаження при прорахунку рендеру в реальному часі, лягає на спеціалізоване графічне обладнання (відеокарту – GPU), що дозволяє знизити навантаження з центральний процесор (ЦП) та звільнити його обчислювальні потужності для інших завдань.
Що таке Попередній рендер (Пре-рендер, Pre-rendering)?
До попереднього Рендеру вдаються тоді, коли швидкість не стоїть у пріоритеті, і потреби в інтерактивності немає. Даний тип рендеру, найчастіше використовується в кіноіндустрії, в роботі з анімацією та складними візуальними ефектами, а також там, де потрібен фотореалізм і дуже висока якість картинки.
На відміну від Рендера в реальному часі, де основне навантаження припадало на графічні карти (GPU), у попередньому рендері навантаження лягає на центральний процесор (ЦП), а швидкість рендерингу залежить від кількості ядер, багатопотічності та продуктивності процесора.
Нерідко буває, що час рендеру одного кадру займає кілька годин або навіть кілька днів. В даному випадку, 3D художникам практично не потрібно вдаватися до оптимізації, і вони можуть використовувати 3D моделі найвищої якості, а також текстурні карти з дуже великою роздільною здатністю. У підсумку, картинка виходить значно краще і фотореалістичніше у порівнянні з рендером в реальному часі.
Програми (софт) для рендеринга.
Зараз, на ринку присутня велика кількість рендеринг рушіїв, які відрізняються між собою швидкістю, якістю картинки та простотою використання.
Як правило, рендер рушії є вбудованими у великі 3D програми для роботи з графікою та мають величезний потенціал. Серед найбільш популярних 3D програм (пакетів) є такий софт як:
- 3ds Max;
- Maya;
- Blender;
- Cinema 4D та інші.
Багато з цих 3D пакетів «з коробки» йдуть в комплекті з рендер рушіями. Наприклад, рендер-рушій Mental Ray присутній у пакеті 3Ds Max. Також, практично будь-який популярний рендер-рушій, можна підключити до більшості відомих 3d пакетів. Серед популярних рендер рушіїв є такі як:
- V-ray;
- Mental ray;
- Corona renderer та інші.
Хотілося б відзначити, що хоча процес рендерингу має дуже складні математичні обчислення, розробники програм для 3D-візуалізації, всіляко намагаються позбавити 3D-художників від роботи зі складною математикою, що лежить в основі рендер-програм. Вони намагаються надати умовно-прості для розуміння параметричні налаштування рендеру, також матеріальні та освітлювальні набори і бібліотеки.
Багато рендер-рушіїв здобули популярність у певних сферах роботи з 3Д графікою. Так, наприклад, “V-ray” має велику популярність у архітектурних візуалізаторів, через наявність великої кількості матеріалів для архітектурної візуалізації, та в цілому, хорошої якості рендера.
Методи візуалізації.
Більшість рендер рушіїв використовує три основні методи обчислення:
- Scanline (сканлайн);
- Raytrace (рейтрейс);
- Radiosity.
Кожен з них, має як свої переваги, так і недоліки, але всі три методи мають право на своє застосування в певних ситуаціях.
Що таке Scanline (сканлайн) рендеринг?
Сканлайн рендер – вибір тих, чий пріоритет полягає у швидкості, а не у якості. Саме внаслідок своєї швидкості, даний тип рендеру часто використовується у відеоіграх та інтерактивних сценах, а також у вьюпортах різних 3D пакетів. При наявності сучасного відеоадаптера, даний тип рендеру може видавати стабільну та плавну картинку в реальному часі з частотою від 30 кадрів в секунду і вище.
Алгоритм роботи Scanline:
Замість рендеринга «пікселя за пікселем», алгоритм функціонування «scanline» рендеру полягає в тому, що він визначає видиму поверхню у 3D графіку, і працюючи за принципом «ряд за рядом», спершу сортує потрібні для рендера полігони по вищій Y координаті, що належить даному полігону, після чого, кожен ряд зображення прораховується за рахунок перетину ряду з полігоном, який є найближчим до камери. Полігони, які більше не є видимими, видаляються при переході одного ряду до іншого.
Перевага даного алгоритму в тому, що відсутня необхідність передачі координат по кожній вершині з основної пам’яті в робочу, а транслюються координати тільки тих вершин, які потрапляють в зону видимості та прорахунку.
Що таке Raytrace (рейтрейс) рендеринг?
Цей тип рендеру, створений для тих, хто хоче отримати картинку з максимально якісним та деталізованим промальовуванням. Візуалізація саме цього типу, має дуже велику популярність у любителів фотореалізму, і варто відзначити що не спроста. Досить часто, за допомогою рейтрейс-рендеринга, ми можемо побачити приголомшливо реалістичні кадри природи та архітектури, які відрізнити від фотографії вдасться не кожному, до того ж, нерідко саме рейтрейс метод використовують в роботі над графікою у CG трейлерах або кіно.
На жаль, на догоду якості, даний алгоритм рендеринга є дуже повільним, і поки що не може використовуватися в ріал-тайм графіці.
Алгоритм роботи Raytrace:
Ідея Raytrace алгоритму полягає у тому, що для кожного пікселя на умовному екрані, від камери простежується один або кілька променів до найближчого тривимірного об’єкта. Потім промінь світла проходить певну кількість відскоків, в які може входити відбиття або заломлення в залежності від матеріалів сцени. Колір кожного пікселя обчислюється алгоритмічно на основі взаємодії світлового променя з об’єктами на його шляху.
Метод Raycasting.
Алгоритм працює на основі «кидання» променів як ніби з очей спостерігача, крізь кожен піксель екрану та знаходження найближчого об’єкта, який перегороджує шлях такого променю. Використавши властивості об’єкта, його матеріалу та освітлення сцени, ми отримуємо потрібний колір пікселя.
Нерідко буває, що «метод трасування променів» (raytrace) плутають з методом «кидання променів» (raycasting). Але насправді, «raycasting» (метод кидання променя) фактично є спрощеним «raytrace» методом, в якому відсутня подальша обробка відбитих або заломлених променів, а прораховується тільки перша поверхня на шляху променя.
Що таке Radiosity рендеринг?
Замість «методу трасування променів», в даному методі, обчислення працює незалежно від камери та є об’єктно-орієнтованим на відміну від методу «піксель за пікселем». Основна функція “radiosity” полягає в тому, щоб більш точно імітувати колір поверхні шляхом обліку непрямого освітлення (відскок розсіяного світла).
Перевагами «radiosity» є м’які градуйовані тіні та колірні відображення на об’єкті, що йдуть від сусідніх об’єктів з яскравим забарвленням.
Досить популярна практика використання методу Radiosity та Raytrace разом для досягнення максимально вражаючих та фотореалістичних рендерів.
Що таке Рендеринг відео?
Іноді, вираз «рендерити» використовують не тільки у роботі з комп’ютерною 3D графікою, але і при роботі з відеофайлами. Процес рендерингу відео починається тоді, коли користувач редактора відео закінчив роботу над відеофайлом, виставив всі потрібні йому параметри, звукові доріжки та візуальні ефекти. По суті, все що залишилося, це з’єднати все зроблене в один відеофайл. Цей процес можна порівняти з роботою програміста, коли він написав код, після чого, все що залишилося, це скомпілювати весь код в працюючу програму. Як і у 3D дизайнера, так і у користувача редактора відео, процес рендеринга йде автоматично та без участі користувача. Все що потрібно, це задати деякі параметри перед стартом.
Швидкість рендерингу відео залежить від тривалості та якості, яка потрібна на виході. В основному, більшість обчислень лягає на потужність центрального процесора, тому, від його продуктивності і залежить швидкість відеовізуалізації.