Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Decal
Успадковує: VisualInstance3D < Node3D < Node < Object
Node, яка продає текстуру на MeshInstance3D.
Опис
Decal використовується для проекту текстури на Mesh на сцені. Використовуйте пропозиції, щоб додати деталі до сцени, не впливаючи на основу Mesh. Вони часто використовуються, щоб додати погодні споруди, додати бруд або грязь на землю, або додати різноманітні пропси. Декалі можна переміщати в будь-який час, роблячи їх придатними для речей, таких як тіні бобові або лазерні точки зору.
Вони виготовляються з AABB і групи Texture2D, вказавши Color, нормальний, ORM (універсальна оклюзія, грубість, металік), і емісія. Декаль продаються в межах їх AABB, тому змінюючи спрямованість Декаль впливає на напрямок, в якому вони продаються. За промовчанням, пропозиції продаються вниз (тобто від позитиву Y до негативного Y).
Texture2D, пов'язані з Decal, автоматично зберігаються в текстурі атласу, який використовується для малювання декалі, так що всі декалі можуть бути зроблені одночасно. Godot використовує кластерні декалі, що означає, що вони зберігаються в кластерних даних і намальовані при намальовуванні сітки, вони не намальовані як після обробки.
Примітка: Опитування не може впливати на прозорість основного матеріалу, незалежно від його режиму прозорості (альфа-змішувач, альфа-ссісар, альфа-холе, передчасний прохід). Це означає напівпрозорі або прозорі ділянки матеріалу залишаються непрозорими або прозорими, навіть якщо на них наноситься непрозора декаль.
Примітка: Ознаки підтримуються лише в методах переадресації + та мобільних рендерингів, не сумісності. При використанні методу мобільного рендерингу можна відобразити лише 8 декалі. Припустимо, щоб відобразити більше 8 декальцій на одному сітчастому ресурсі призведе до декалі, що мерехтять і виходиться в якості камери.
Примітка: При використанні методу мобільного рендерингу, декалі будуть тільки коректно впливати на сітки, видимість AABB взаємозаражує з AABB. При використанні шейдера для деформування сітки таким чином, що робить його поза її AABB, GeometryInstance3D.extra_cull_margin необхідно збільшити на сітці. В іншому випадку на сітці не видно декаль.
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Vector3 |
|
|
Texture2D |
||
Texture2D |
||
Texture2D |
||
Texture2D |
||
|
Методи
Texture2D |
get_texture(type: DecalTexture) const |
void |
set_texture(type: DecalTexture, texture: Texture2D) |
Переліки
enum DecalTexture: 🔗
DecalTexture TEXTURE_ALBEDO = 0
Texture2D, що відповідає texture_albedo.
DecalTexture TEXTURE_NORMAL = 1
Texture2D, що відповідає texture_normal.
DecalTexture TEXTURE_ORM = 2
Texture2D, що відповідає texture_orm.
DecalTexture TEXTURE_EMISSION = 3
Texture2D, що відповідає texture_emission.
DecalTexture TEXTURE_MAX = 4
Макс. розмір DecalTexture enum.
Описи властивостей
Підходить альбедо Color декаль з альбедо Color базової сітки. Це можна встановити до 0.0 для створення декаль, який тільки впливає на нормальну або ORM. У цьому випадку текстура альбедо все ще потрібна як його альфа-канал буде визначати, де нормаль і ORM буде передаватися. Дивись також modulate.
Визначає, що VisualInstance3D.layers цей декаль буде проектуватися. За замовчуванням, пропозиції впливають на всі шари. Це використовується так, що ви можете вказати, які види об'єктів отримують Декаль і які не є. Це особливо корисно для того, щоб динамічні об'єкти не випадково отримували Декаль, призначений для місцевості під ними.
float distance_fade_begin = 40.0 🔗
Відстань від камери, при якому Декаль починає відторгуватися (в 3D-пакетах).
bool distance_fade_enabled = false 🔗
Якщо true, декаль плавно згорнеться, коли далеко від активних Camera3D, починаючи з відстань_fade_begin. Декаль з'явиться над відстань_fade_begin + відстань_fade_довжина, після чого він буде культивований і не відправлений на шейкер на всіх. Використовуйте це, щоб зменшити кількість Активних Декальцій на сцені та підвищити продуктивність.
float distance_fade_length = 10.0 🔗
Відстань від якого відхиляється декаль (в 3D одиниці). Декаль стає повільним більш прозорим над цією дистанцією і повністю непомітним на кінці. Більшість значень призводить до плавлення виходу з ладу, який більш підходить, коли камера рухається швидко.
Мультиплікатор енергії для текстури емісії. Це зробить декаль випромінювати світло на більш високій або меншій інтенсивності, незалежно від кольору альбедо. Дивись також modulate.
Налаштовує криву, над якою декаль буде вигорнути, як поверхня отримує далі від центру AABB. Тільки позитивні значення дійсні (негативні значення будуть зафіксовані до 0.0). Дивись також upper_fade.
Color modulate = Color(1, 1, 1, 1) 🔗
Змінює Color Декаль шляхом розмноження альбедо і емісійних кольорів з цим значенням. alpha компонент враховується тільки при розмноженні альбедо кольору, а не кольору емісії. Дивись також emission_energy і albedo_mix для зміни емісії та інтенсивності альбедо незалежно від одного.
Відкриває декаль, якщо кут між Декаль AABB і цільовою поверхнею стає занадто великим. Значення 0 проектів Декаль незалежно від кута, значення 1 обмежує Декаль на поверхні, які майже перпендикулярні.
Примітка: Встановлення normal_fade до значення більше, ніж 0.0 має невелику вартість виконання через додані нормальні обчислення кута.
Vector3 size = Vector3(2, 2, 2) 🔗
void set_size(value: Vector3)
Vector3 get_size()
Задає розмір AABB, який буде використовуватися міткою. Всі розміри повинні бути встановлені на значення більше нуля (якщо це не так, вони будуть затиснуті до 0.001). AABB змінюється від -розмір/2 до розмір/2.
Примітка: Щоб покращити ефективність відсіювання міток з "твердою поверхнею", встановіть для них upper_fade і lower_fade значення 0.0 і встановіть Y-компонент size якомога нижчим. Це зменшить розмір AABB міток, не впливаючи на їхній зовнішній вигляд.
Texture2D texture_albedo 🔗
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D з основою Color мітки. Для того, щоб наклейку було видно, необхідно встановити або цей параметр, або texture_emission. Використовуйте альфа-канал як маску, щоб плавно змішати краї наклейки з основним об'єктом.
Примітка: На відміну від BaseMaterial3D, режим фільтрації якого можна налаштувати для кожного матеріалу, режим фільтрації для текстур Decal задається глобально за допомогою ProjectSettings.rendering/textures/decals/filter.
Texture2D texture_emission 🔗
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D з випромінюванням Color мітки. Для того, щоб наклейку було видно, потрібно встановити або цей параметр, або texture_albedo. Використовуйте альфа-канал як маску, щоб плавно змішати краї наклейки з основним об'єктом.
Примітка: На відміну від BaseMaterial3D, режим фільтрації якого можна налаштувати для кожного матеріалу, режим фільтрації для текстур Decal задається глобально за допомогою ProjectSettings.rendering/textures/decals/filter.
Texture2D texture_normal 🔗
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D з попіксельною картою нормалей для наклейки. Використовуйте його, щоб додати додаткову деталізацію до етикеток.
Примітка: На відміну від BaseMaterial3D, режим фільтрації якого можна налаштувати для кожного окремого матеріалу, режим фільтрації для текстур Decal задається глобально за допомогою ProjectSettings.rendering/textures/decals/filter.
Примітка: Встановлення лише цієї текстури не призведе до створення видимої наклейки, оскільки також має бути встановлено texture_albedo. Щоб створити лише звичайну наліпку, завантажте альбедо-текстуру до texture_albedo і встановіть albedo_mix на 0.0. Альфа-канал альбедо-текстури буде використано для визначення місця перевизначення карти нормалей базової поверхні (та її інтенсивності).
Texture2D texture_orm 🔗
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D storing ambient occlusion, roughness, and metallic for the decal. Use this to add extra detail to decals.
Note: Unlike BaseMaterial3D whose filter mode can be adjusted on a per-material basis, the filter mode for Decal textures is set globally with ProjectSettings.rendering/textures/decals/filter.
Note: Setting this texture alone will not result in a visible decal, as texture_albedo must also be set. To create an ORM-only decal, load an albedo texture into texture_albedo and set albedo_mix to 0.0. The albedo texture's alpha channel will be used to determine where the underlying surface's ORM map should be overridden (and its intensity).
Note: Due to technical limitations, modifying the underlying surface's roughness using texture_orm does not affect screen-space reflections (Environment.ssr_enabled), reflections from VoxelGI, and reflections from SDFGI (Environment.sdfgi_enabled). Only reflections from ReflectionProbes are affected.
Задає криву, за якою мітка буде зникати по мірі віддалення поверхні від центру AABB. Допустимі лише додатні значення (від'ємні значення будуть затиснуті до 0.0). Дивіться також lower_fade.
Описи методів
Texture2D get_texture(type: DecalTexture) const 🔗
Повертає Texture2D, пов'язаний з вказаною DecalTexture. Це зручний спосіб, в більшості випадків ви повинні отримати доступ до текстури безпосередньо.
Наприклад, замість albedo_tex = $Decal.get_texture(Decal.TEXTURE_ALBEDO), використання albedo_tex = $Decal.texture_albedo.
Один випадок, де це краще, ніж доступ до текстури безпосередньо, коли ви хочете скопіювати текстуру одного Декала до іншого. Наприклад:
for i in Decal. TEXTURE_MAX:
$NewDecal.set_texture(i, $СтарийDecal.get_texture(i))
for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)
GetNode<Decal>("NewDecal").SetTexture(i, GetNode<Decal>("OldDecal").GetTexture(i));
Про нас
void set_texture(type: DecalTexture, texture: Texture2D) 🔗
Налаштовує Texture2D, пов'язану з вказаною DecalTexture. Це зручний спосіб, в більшості випадків ви повинні отримати доступ до текстури безпосередньо.
Наприклад, замість $ Декаль.set_texture(Decal.TEXTURE_ALBEDO, albedo_tex), використання $Decal.texture_albedo = albedo_tex.
Один випадок, де це краще, ніж доступ до текстури безпосередньо, коли ви хочете скопіювати текстуру одного Декала до іншого. Наприклад:
for i in Deca. TEXTURE_MAX:
$NewDecal.set_texture(i, $СтарийDecal.get_texture(i))
for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)
GetNode<Decal>("NewDecal").SetTexture(i, GetNode<Decal>("OldDecal").GetTexture(i));
Про нас