Об’єми – Volumes¶
Рендеринг об’єму може використовуватися для рендерення ефектів, таких як вогонь, дим, імла, поглинання у склі та багатьох інших, що не можуть бути представлені тільки самими сітями поверхонь.
Для укладання об’єму ви створюєте сіть, що визначає межі, всередині яких цей об’єм існує. У дереві матеріалу ви зазвичай вилучаєте вузли поверхонь Surface та натомість під’єднуєте вузли об’ємів Volume для визначення відтінювання всередині цього об’єму. Для ефектів, таких як поглинання у склі, ви можете використовувати обидва, шейдер поверхонь та шейдер об’ємів. Світ може також використовувати шейдер об’ємів для створення ефектів, таких як імла.
Відтінювання – Shading¶
Принциповий Об’єм – Principled Volume¶
Principled Volume – «Принциповий Об’єм» – це фізично базований шейдер об’ємів, що може використовуватися для створення широкого діапазону матеріалів об’єму. Він підтримує розсіювання, поглинання та емісію в одному, легкому для використання, вузлі. Вогонь може бути рендерено за допомогою емісії чорного тіла – blackbody emission.
Компоненти Об’єму – Volume Components¶
Для більшого керування компоненти відтінювання об’єму можуть вручну комбінуватися у власний уклад шейдера.
- Volume Absorption – «Поглинання Об’ємом» буде поглинати частину світла, як воно проходитиме через об’єм. Це може використовуватися для відтінення, наприклад, чорного диму або забарвлених скляних об’єктів, чи для змішування з вузлом Volume Scatter. Цей вузол подібний до вузла Transparent BSDF у тому, що він блокує частину світла та дозволяє іншому світлу проходити прямо крізь.
- Volume Scatter – «Розсіювання Об’ємом» дозволяє світлу розсіюватися в інших напрямках, як воно потраплятиме на частинки в об’ємі. Анізотропія – anisotropy визначає, в якому напрямку світло більш ймовірно буде розсіюватися. Значення 0 буде давати рівномірне розсіювання у всіх напрямках (дещо подібно як вузол Diffuse BSDF), від’ємні значення дозволяють світлу розсіюватися здебільшого назад, а додатні значення дозволяють світлу розсіюватися здебільшого уперед. Це може використовуватися для відтінення білого диму або хмар, наприклад.
- Emission – «Емісія» буде емітувати світло з об’єму, наприклад, для вогню.
Атрибути – Attributes¶
При рендерингу диму та вогню атрибути об’єму використовуються для визначення форми та відтінювання об’єму. Шейдер Principled Volume буде використовувати їх стандартно, тоді як кастомні шейдери об’ємів можуть використовувати вузол «Атрибут» – Attribute для отримання таких атрибутів, як щільність, колір та температура.
Щільність – Density¶
Усі шейдери об’ємів мають увід щільності Density. Щільність визначає, наскільки світло буде взаємодіяти з об’ємом, поглинаючись або розсіюючись, та наскільки воно проходитиме прямо крізь об’єм. Для ефектів, таких як дим, ви маєте визначити поле Density для вказування, де в об’ємі є дим і скільки (щільність більша за 0) та де дим відсутній (щільність дорівнює 0).
Об’єми у реальному житті складаються з частинок, вища щільність означає місця, де є більше частинок на одиницю об’єму. Більше частинок означає, що є вищий шанс для світла зіткнутися з частинкою та поглинутися чи розсіятися, а не пройти прямо крізь об’єм.
Об’єми Сітей – Mesh Volumes¶
Сіті, використовувані для рендера об’єму, повинні бути закритими та розгортними – manifold. Це означає, що у сіті повинні бути відсутні отвори. Кожне ребро повинно бути з’єднане точно з двома гранями, так щоб не було жодних отворів та Т-подібних граней, де три або більше граней з’єднані з ребром.
Нормалі повинні вказувати назовні поверхні для коректних результатів. Ці нормалі використовуються для визначення того, чи промінь проходить чи виходить з об’єму і, якщо вони вказують у неправильному напрямку або у сіті є отвір, то рендерер буде не здатний вирішити, що є всередині, а що є назовні об’єму.
Ці правила такі ж, як для коректного рендерингу заломлення світла склом.
Об’єм Світу – World Volume¶
Шейдер об’ємів може застосовуватися для всього світу, заповнюючи простір повністю.
Наразі це найбільш корисно для нічних сцен та інших темних сцен, оскільки шейдер поверхонь світу або сонцеві освітлювачі не даватимуть жодного ефекту, якщо використовується шейдер об’ємів. Це через припущення, що фон світу є безкінечно віддаленим, котре є достатньо точним для Сонця, наприклад. Проте, для моделювальних ефектів, таких як туман або розсіювання атмосферою, це не є добрим припущенням, що цей об’єм заповнює увесь простір, оскільки більшість відстані між Сонцем і Землею займає порожній космос. Для таких ефектів краще створювати об’єкт об’єму, що оточує сцену. Розмір такого об’єкта буде визначати, наскільки світло буде розсіюватися чи поглинатися.
Багато Розсіювання – Multiple Scattering¶
Ефекти реального світу, такі як розсіювання у хмарах або підповерхневе розсіювання вимагають багато відскоків розсіювання. Проте, безупереджений рендеринг таких ефектів може бути шумним, а тому стандартно ця кількість відскоків є нульовою для Cycles, і жодна підтримка не доступна для Eevee. Ефект, що ви отримуєте при рендерингу з нульовою кількістю відскоків для об’єму, відомий як «одиничне розсіювання» – «single scattering», а ефект з більшою кількістю відскоків називається «багато розсіювання» – «multiple scattering».
Для рендерингу матеріалів, як шкіра або молоко, що вимагають багато розсіювання, шейдер підповерхневого розсіювання Subsurface Scattering є більш ефективним та легшим для керування. Зокрема, метод «випадкового ходу» – random walk може точно рендерити такі матеріали.
Для матеріалів, таких як хмари або дим, що не мають добре визначеної поверхні, вимагається рендеринг об’єму. Вони виглядають найкраще з багатьма відскоками розсіювання, але на практиці, можливо, доведеться лімітувати кількість цих відскоків для підтримання часу рендерингу у прийнятних межах.