Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Standard Material 3D and ORM Material 3D

Вступ

StandardMaterial3D and ORMMaterial3D (Occlusion, Roughness, Metallic) are default 3D materials that aim to provide most of the features artists look for in a material, without the need for writing shader code. However, they can be converted to shader code if additional functionality is needed.

This tutorial explains the parameters present in both materials.

There are 4 ways to add these materials to an object. A material can be added in the Material property of the mesh. It can be added in the Material property of the node using the mesh (such as a MeshInstance3D node), the Material Override property of the node using the mesh, and the Material Overlay.

../../_images/add_material.webp

Якщо ви додали матеріял до геометричної сіті, то кожного разу, коли ви використовуватимете цю геометрію, вона матиме той матеріял. Якщо додасте матеріял до самого вузла, то лише той вузол і матиме обраний матеріял. Він також використовуватиметься замість матеріялу тої геометрії, що додана до вузла. А якщо ж ви додасте метеріял до властивості Material Override вузла, то він також використовуватиметься лише тим вузлом. Матеріял відображатиметься як замість матеріялу самого вузла, так і замість матеріялу геометрії використаної цим вузлом.

Властивість Material Overlay відтворить матеріал поверх поточного, який використовується сіткою. Як приклад, це можна використати для створення ефекту прозорого щита на сітці.

BaseMaterial 3D settings

StandardMaterial3D has many settings that determine the look of a material. All of these are under the BaseMaterial3D category

../../_images/spatial_material1.png

ORM materials are almost exactly the same with one difference. Instead of separate settings and textures for occlusion, roughness, and metallic, there is a single ORM texture. The different color channels of that texture are used for each parameter. Programs such as Substance Painter and Armor Paint will give you the option to export in this format, for these two programs it's with the export preset for unreal engine, which also uses ORM textures.

Transparency

By default, materials in Godot are opaque. This is fast to render, but it means the material can't be seen through even if you use a transparent texture in the Albedo > Texture property (or set Albedo > Color to a transparent color).

To be able to see through a material, the material needs to be made transparent. Godot offers several transparency modes:

  • Disabled: Material is opaque. This is the fastest to render, with all rendering features supported.

  • Alpha: Material is transparent. Semi-transparent areas are drawn with blending. This is slow to render, but it allows for partial transparency (also known as translucency). Materials using alpha blending also can't cast shadows, and are not visible in screen-space reflections.

    • Alpha is a good fit for particle effects and VFX.

  • Alpha Scissor: Material is transparent. Semi-transparent areas whose opacity is below Alpha Scissor Threshold are not drawn (above this opacity, these are drawn as opaque). This is faster to render than Alpha and doesn't exhibit transparency sorting issues. The downside is that this results in "all or nothing" transparency, with no intermediate values possible. Materials using alpha scissor can cast shadows.

    • Alpha Scissor is ideal for foliage and fences, since these have hard edges and require correct sorting to look good.

  • Alpha Hash: Material is transparent. Semi-transparent areas are drawn using dithering. This is also "all or nothing" transparency, but dithering helps represent partially opaque areas with limited precision depending on viewport resolution. Materials using alpha hash can cast shadows.

    • Alpha Hash is suited for realistic-looking hair, although stylized hair may work better with alpha scissor.

  • Depth Pre-Pass: This renders the object's fully opaque pixels via the opaque pipeline first, then renders the rest with alpha blending. This allows transparency sorting to be mostly correct (albeit not fully so, as partially transparent regions may still exhibit incorrect sorting). Materials using depth prepass can cast shadows.

Примітка

Godot will automatically force the material to be transparent with alpha blending if any of these conditions is met:

  • Setting the transparency mode to Alpha (as described here).

  • Setting a blend mode other than the default Mix

  • Enabling Refraction, Proximity Fade, or Distance Fade.

Comparison between alpha blending (left) and alpha scissor (right) transparency:

../../_images/spatial_material12.png

Попередження

Alpha-blended transparency has several limitations:

  • Alpha-blended materials are significantly slower to render, especially if they overlap.

  • Alpha-blended materials may exhibit sorting issues when transparent surfaces overlap each other. This means that surfaces may render in the incorrect order, with surfaces in the back appearing to be in front of those which are actually closer to the camera.

  • Alpha-blended materials don't cast shadows, although they can receive shadows.

  • Alpha-blended materials don't appear in any reflections (other than reflection probes).

  • Screen-space reflections and sharp SDFGI reflections don't appear on alpha-blended materials. When SDFGI is enabled, rough reflections are used as a fallback regardless of material roughness.

Before using the Alpha transparency mode, always consider whether another transparency mode is more suited for your needs.

Alpha Antialiasing

Примітка

This property is only visible when the transparency mode is Alpha Scissor or Alpha Hash.

While alpha scissor and alpha hash materials are faster to render than alpha-blended materials, they exhibit hard edges between opaque and transparent regions. While it's possible to use post-processing-based antialiasing techniques such as FXAA and TAA, this is not always desired as these techniques tend to make the final result look blurrier or exhibit ghosting artifacts.

There are 3 alpha antialiasing modes available:

  • Disabled: No alpha antialiasing. Edges of transparent materials will appear aliased unless a post-processing-based antialiasing solution is used.

  • Alpha Edge Blend: Results in a smooth transition between opaque and transparent areas. Also known as "alpha to coverage".

  • Alpha Edge Clip: Results in a sharp, but still antialiased transition between opaque and transparent areas. Also known as "alpha to coverage + alpha to one".

When the alpha antialiasing mode is set to Alpha Edge Blend or Alpha Edge Clip, a new Alpha Antialiasing Edge property becomes visible below in the inspector. This property controls the threshold below which pixels should be made transparent. While you've already defined an alpha scissor threshold (when using Alpha Scissor only), this additional threshold is used to smoothly transition between opaque and transparent pixels. Alpha Antialiasing Edge must always be set to a value that is strictly below the alpha scissor threshold. The default of 0.3 is a sensible value with an alpha scissor of threshold of 0.5, but remember to adjust this alpha antialiasing edge when modifying the alpha scissor threshold.

If you find the antialiasing effect not effective enough, try increasing Alpha Antialiasing Edge while making sure it's below Alpha Scissor Threshold (if the material uses alpha scissor). On the other hand, if you notice the texture's appearance visibly changing as the camera moves closer to the material, try decreasing Alpha Antialiasing Edge.

Важливо

For best results, MSAA 3D should be set to at least 2× in the Project Settings when using alpha antialiasing. This is because this feature relies on alpha to coverage, which is a feature provided by MSAA.

Without MSAA, a fixed dithering pattern is applied on the material's edges, which isn't very effective at smoothing out edges (although it can still help a little).

Режим змішування

Регулює змішування матеріялу. Пам'ятайте, що прозорі об'єкти будуть такими лише в режимі Mix.

  • Mix — режим змішування за замовчуванням, альфа канал регулює видимість об'єкта.

  • Add: The final color of the object is added to the color of the screen, nice for flares or some fire-like effects.

  • Sub: The final color of the object is subtracted from the color of the screen.

  • Mul: The final color of the object is multiplied with the color of the screen.

../../_images/spatial_material8.png

Режим вибракування

Визначає, яка сторона об'єкта не малюється, при рендері задньої сторони:

  • Back: Задня частина об'єкта вибраковується, коли її не видно (за замовчуванням).

  • Front: Передня частина об'єкта вибраковується, коли її не видно.

  • Disabled: Використовується для двосторонніх об'єктів (вибракування не виконується).

Примітка

За замовчуванням у Blender вимкнено відсіювання задньої поверхні для матеріалів і експортуватиме матеріали відповідно до того, як вони відображаються в Blender. Це означає, що для матеріалів у Godot буде встановлено режим відбирання ** Disabled**. Це може знизити продуктивність, оскільки зворотні грані будуть відтворюватися, навіть якщо їх перекривають інші грані. Щоб вирішити цю проблему, увімкніть ** Backface Culling** на вкладці Materials в Blender, а потім знову експортуйте сцену до gITF.

Режим малювання глибини

Вказує, коли має відбутися відтворення глибини.

  • **Opaque Only (за замовчуванням):**Глибина малюється тільки для непрозорих об'єктів.

  • Always: Глибина малюється і для непрозорих, і для прозорих, об'єктів.

  • Never: No depth draw takes place (do not confuse this with the No Depth Test option below).

  • Depth Pre-Pass: Для об'єктів з прозорістю спочатку робиться прохід по непрозорих деталях, вже потім поверх них опрацьовується прозорість. Використовуйте цей варіант для прозорої трави, або листя дерев.

../../_images/material_depth_draw.png

Без перевірки глибини

Щоб ближні об'єкти показувались поверх дальніх об'єктів, проводиться перевірка глибини. Якщо її вимкнути, то об'єкти можуть з'являтись поверх всього іншого (або за ним).

Є сенс це робити, для того щоб намалювати якісь позначки у просторі поверх об'єктів. Функція чудово працює в парі із параметром матеріялу Render Priority (Порядок Відображення) про який написано нижче.

../../_images/spatial_material3.png

Затінювання

Shading mode

Завдяки попередній підготовці глибини (depth pre-pass) обрахування освітлення кожного пікселя в Godot приблизно однакове по складності. Освітлення обчислюється для кожного пікселя окремо.

А раз ці важкі обчислення можуть знизити продуктивність роботи програми, у випадках на зразок відмальовки декількох шарів прозорості (таке часто трапляється із системами частинок), то тоді вам може бути варто обрати повершинне освітлення.

До того ж, на слабших мобільних пристроях, повершинне освітлення допоможе підвищити продуктивність роботи вашої програми.

../../_images/spatial_material2.png

Пам'ятайте, що коли увімкнене повершинне освітлення, лише напрямлені джерела світла можуть створювати тіні (це зроблено з питань ефективности).

Однак у деяких випадках ви можете захотіти показати лише альбедо (колір), а решту ігнорувати. Для цього ви можете встановити режим затінення на unshaded

../../_images/spatial_material26.png

Режим розсіювання

Визначає алгоритм, за яким обчислюється взаємодія поверхні зі світлом, яке падає на неї. Стандартний — Burley. Є також й інші варіанти:

  • Burley — стандартний режим, фізично коректне відображення розроблене у компанії Disney.

  • Lambert — не враховує шершавість матеріялу.

  • Lambert Wrap — розширює метод Lambert, так щоб він покривав більше 90 градусів поверхні, при збільшенні шершавости. Чудово працює з волоссям та якщо потрібно швидко симулювати підповерхневе розсіювання. Цей метод зберігає „енергію світла“.

  • Oren Nayar — враховує мікроскопічні деталі на поверхні об'єкта (вони визначаються через шершавість). Підходить для речовин на зразок глини чи деяких видів тканини.

  • Toon: Provides a hard cut for lighting, with smoothing affected by roughness. It is recommended you disable sky contribution from your environment's ambient light settings or disable ambient light in the StandardMaterial3D to achieve a better effect.

../../_images/spatial_material6.png

Режим віддзеркалення

Визначає, яким чином відображати відблиск світла на поверхні об'єкта.

  • SchlickGGX: The most common blob used by PBR 3D engines nowadays.

  • Blinn — зараз більше не використовується, але колись був дуже поширеним.

  • Phong — так само, як і попередній.

  • Toon — створює чітку пляму в мультяшному стилі. Її розмір залежить від параметра шершавости.

  • Disabled — іноді ніяких плям взагалі не потрібно. Геть!

../../_images/spatial_material7.png

Вимкнути розсіяне світло

Об'єкт більше не освітлюється навколишнім світлом.

Disable Fog

Makes the object unaffected by depth-based or volumetric fog. This is useful for particles or other additively blended materials that would otherwise show the shape of the mesh (even in places where it would be invisible without the fog).

Вершина

This setting allows choosing what is done by default to vertex colors that come from your 3D modeling application. By default, they are ignored.

../../_images/spatial_material4.png

Use as Albedo (Використати як колір поверхні)

Якщо обрана ця опція: колір вершин буде кольором поверхні.

Is sRGB (Сприймати як sGRB)

Most 3D modeling software will likely export vertex colors as sRGB, so toggling this option on will help them look correct.

Альбедо

Albedo - основний колір матеріалу, на якому працюють всі інші налаштування. Якщо встановлено значення Unshaded, то це єдиний видимий колір. У попередніх версіях Godot цей канал називався Diffuse. Зміна назви відбулася в основному тому, що в PBR (фізично вірний рендеринг) цей колір впливає на набагато більше обчислень, ніж просто дифузний шлях освітлення.

Колір Альбедо і текстуру можна використовувати разом, бо вони множаться.

Alpha channel в кольорі альбедо і текстурі також використовується для прозорості об'єкта. Якщо ви використовуєте колір, або текстуру, з альфа-каналом, переконайтеся, що ви ввімкнули прозорість, або альфа-ножиці, щоб вона працювала.

Метал

Godot використовує модель металу замість конкуруючих моделей через простоту. Цей параметр визначає, наскільки рефлексивним є матеріал. Чим більша рефлексія, тим менше дифузне/навколишнє світло впливає на матеріал і тим більше світла відбивається. Ця модель називається "енергозберігаючою".

Параметр Specular є загальною величиною рефлексії (на відміну від Metallic, він не є енергозберігаючим, тому залиште його на 0.5 і не чіпайте, якщо вам цього не потрібно).

Мінімальна внутрішня рефлексія 0.04, тому неможливо зробити матеріал абсолютно нерефлекторним, як і в реальному житті.

../../_images/spatial_material13.png

Шорсткість

Roughness (Шорсткість) впливає на дзеркальність. Значення 0 створює ідеальне дзеркало, в той час як значення 1 повністю розмиває відображення (імітуючи природню мікро-поверхню). Найбільш поширені види матеріалів можуть бути досягнуті при правильному поєднанні Metallic і Roughness.

../../_images/spatial_material14.png

Випромінювання

Emission specifies how much light is emitted by the material (keep in mind this does not include light surrounding geometry unless VoxelGI or SDFGI are used). This value is added to the resulting final image and is not affected by other lighting in the scene.

../../_images/spatial_material15.png

Карта нормалей

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

../../_images/spatial_material16.png

Примітка

Godot вимагає карти нормалей, які використовують координати X+, Y- та Z+ (так званий OpenGL стиль). Якщо ж ви імпортували матеріал, призначений для використання з іншим редактором (таким як DirectX), можливо, вам доведеться переробити карти нормалей так, щоб їх вісь Y перевернулась.

Більше інформації про карти нормалей (включаючи таблицю порядків координат для популярних редакторів) можна знайти тут.

Обідок

Деякі тканини мають невелике мікро-хутро, яке змушує світло розкидатися навколо нього. Godot реалізує це параметром Rim. На відміну від інших реалізацій освітлення обідка, які просто використовують емісійний канал, цей фактично враховує світло (нема світла немає обідка). Це робить ефект правдоподібнішим.

../../_images/spatial_material17.png

Розмір обідка залежить від шорсткості, і є спеціальний параметр, щоб вказати, як він має бути пофарбований. Якщо відтінок Tint є 0, для обідка використовується колір світла. Якщо відтінок Tint є 1, то використовується альбедо матеріалу. Використання проміжних значень, як правило, працює найкраще.

Очистити

Параметр Clearcoat використовується для додавання вторинного проходу прозорого покриття в матеріалі. Часто зустрічається в автомобільній фарбі та іграшках. На практиці це маленька дзеркальна пляма, додана поверх існуючого матеріалу.

../../_images/clearcoat_comparison.png

Анізотропія

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

../../_images/spatial_material18.png

Навколишня оклюзія

Можна вказати запечену карту оклюзії навколишнього середовища. Ця карта впливає на те, скільки навколишнього світла досягає кожної поверхні об'єкта (за замовчуванням вона не впливає на пряме світло). Хоча можна використовувати Екранно-Просторову Навколишню Оклюзію (Screen-Space Ambient Occlusion (SSAO)) для створення навколишньої оклюзії, ніщо не перевершує якість добре запеченої карти оклюзії. Рекомендується, за можливості, запікати навколишню оклюзію.

../../_images/spatial_material19.png

Height

Встановлення карти глибини на матеріалі задає рух променів, щоб імітувати належне зміщення порожнин уздовж напрямку огляду. Це не реальна додана геометрія, а ілюзія глибини. Вона може не працювати на складних об'єктах, але виробляє реалістичний ефект глибини для текстур. Для досягнення найкращих результатів глибина Depth повинна використовуватися разом із картою нормалей.

../../_images/spatial_material20.png

Підповерхневе розсіювання

Цей ефект імітує світло, яке проникає в поверхню об'єкта, розсіюється, а потім виходить. Корисно для створення реалістичної шкіри, мармуру, кольорових рідин і т. д.

../../_images/spatial_material21.png

Back Lighting

Контролює, скільки світла від освітленої сторони (видимої світлу) переноситься на темну сторону (протилежну світлу). Добре підходить для тонких предметів, таких як листя рослин, трава, людські вуха і т. д.

Заломлення

When refraction is enabled, Godot attempts to fetch information from behind the object being rendered. This allows distorting the transparency in a way similar to refraction in real life.

Remember to use a transparent albedo texture (or reduce the albedo color's alpha channel) to make refraction visible, as refraction relies on transparency to have a visible effect.

A normal map can optionally be specified in the Refraction Texture property to allow distorting the refraction's direction on a per-pixel basis.

../../_images/spatial_material23.png

Примітка

Refraction is implemented as a screen-space effect and forces the material to be transparent. This makes the effect relatively fast, but this results in some limitations:

  • Transparency sorting issues may occur.

  • The refractive material cannot refract onto itself, or onto other transparent materials. A refractive material behind another transparent material will be invisible.

  • Off-screen objects cannot appear in the refraction. This is most noticeable with high refraction strength values.

  • Opaque materials in front of the refractive material will appear to have "refracted" edges, even though they shouldn't.

Подробиці

Godot дозволяє використовувати вторинні альбедо і карти нормалей для детальних текстур, які можуть бути змішані багатьма способами. Поєднуючи їх вторинним UV, або тристоронніми режимами, можна досягти багатьох цікавих текстур.

../../_images/spatial_material24.png

Існує кілька параметрів, які визначають спосіб використання деталей.

Mask: Маска деталей - це чорно-біле зображення, яке використовується для контролю місця накладання на текстурі. Біле - для текстур деталей, чорне - для звичайних текстур матеріалу, різні відтінки сірого - для часткового змішування текстур матеріалу та текстур деталей.

Blend Mode: чотири режими накладання контролюють, як текстури змішуються разом.

  • Mix: поєднує значення пікселів обох текстур. На чорному кольорі показує тільки текстуру матеріалу, на білому, тільки текстуру деталізації. Значення сірого створюють плавне накладання між ними.

  • Add: додає піксельні значення однієї текстури до іншої. На відміну від режиму змішування обидві текстури повністю змішуються на білих частинах маски, а не сірих. Оригінальна текстура в основному не змінюється на чорному кольорі

  • Sub: Віднімає значення пікселів однієї текстури з іншої. Друга текстура повністю віднімається на білих частинах маски з лише невеликим відніманням на чорних частинах, сірі частини є різними рівнями віднімання на основі точної текстури.

  • Mul: Множить номери каналів RGB для кожного пікселя від верхньої текстури зі значеннями для відповідного пікселя з нижньої текстури.

Albedo: Сюди ви вкладете текстуру альбедо, яку хочете змішати. Якщо в цьому гнізді нічого немає, він буде інтерпретуватися за замовчуванням як білий.

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

UV1 та UV2

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

Triplanar Mapping (Тристороннє накладання)

Тристороннє накладання підтримується як для UV1, так і для UV2. Це альтернативний спосіб визначення координат текстури, відомий також, як "Автотекстура". Вибраний по X, Y і Z зразок текстури поширюється за напрямком нормалі. Тристороннє накладання може виконуватися як у світовому просторі, так і в об'єктному.

На зображенні нижче ви можете побачити тристороннє накладання одного матеріалу на всі примітиви, завдяки чому текстура цегли має плавний перехід між ними.

../../_images/spatial_material25.png

World Triplanar (Триплощинна проєкція світового простору)

When using triplanar mapping, it is computed in object local space. This option makes it use world space instead.

Sampling

Фільтр

The filtering method for the textures used by the material. See this page for a full list of options and their description.

Повторення

if the textures used by the material repeat, and how they repeat. See this page for a full list of options and their description.

Тіні

Do Not Receive Shadows (Не отримувати тіні)

Тіні від інших об'єктів не будуть показані на цьому об'єкті.

Use Shadow to Opacity (Використовувати тінь як видимість)

Світло змінює альфа канал так щоби зробити видимою лише затінену частину об'єкта. Може знадобитись, якщо потрібно накласти тінь відео з камери в доповненій реальності.

Billboard

Режим розголосника

Вмикає режим розголосника для малювання матеріалів. Визначає, як об'єкт повертається до камери:

  • Disabled: Режим розголосника вимкнений.

  • Enabled: Billboard mode is enabled. The object's -Z axis will always face the camera's viewing plane.

  • Y-Billboard: The object's X axis will always be aligned with the camera's viewing plane.

  • Particle Billboard: Most suited for particle systems, because it allows specifying flipbook animation.

../../_images/spatial_material9.png

The Particles Anim section is only visible when the billboard mode is Particle Billboard.

Зберегти масштаб розголосника

Вмикає масштабування моделі в режимі розголосника.

Збільшити

Переміщує вершини об'єкта в напрямку, в якому вказують їх нормалі:

../../_images/spatial_material10.png

Зазвичай використовується для створення дешевих контурів. Додайте другий прохід матеріалу, зробіть його чорним і незалежним від тіней (галочка unshaded), задайте вибракування звороту (Cull Mode > Front), і додайте трохи Grow Amount:

../../_images/spatial_material11.png

Перетворення

Незмінний розмір

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

Розмір крапки

This option is only effective when the geometry rendered is made of points (generally it's made of triangles when imported from 3D modeling software). If so, then those points can be resized (see below).

Розмір крапки

Під час малювання крапок вкажіть розмір крапки в пікселях.

Перехід

Контролює, скільки світла від освітленої сторони (видимої світлу) переноситься на темну сторону (протилежну світлу). Добре підходить для тонких предметів, таких як листя рослин, трава, людські вуха і т. д.

../../_images/spatial_material22.png

Proximity and Distance Fade

Godot allows materials to fade by proximity to each other as well as depending on the distance from the viewer. Proximity fade is useful for effects such as soft particles or a mass of water with a smooth blending to the shores.

../../_images/spatial_material_proxfade.gif

Distance fade is useful for light shafts or indicators that are only present after a given distance.

Keep in mind enabling proximity fade or distance fade with Pixel Alpha mode enables alpha blending. Alpha blending is more GPU-intensive and can cause transparency sorting issues. Alpha blending also disables many material features such as the ability to cast shadows. To hide a character when they get too close to the camera, consider using Pixel Dither or better, Object Dither (which is even faster than Pixel Dither).

Material Settings

Пріоритет рендера

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

Next Pass

Sets the material to be used for the next pass. This renders the object again with a different material.