GeometryInstance3D

Успадковує: VisualInstance3D < Node3D < Node < Object

Успадковано від: CPUParticles3D, CSGShape3D, GPUParticles3D, Label3D, MeshInstance3D, MultiMeshInstance3D, SpriteBase3D

Базовий вузол для візуальних екземплярів геометрії.

Опис

Базовий вузол для візуальних екземплярів геометрії. Відповідає деякі загальні функціональні можливості, такі як видимість та нестандартні матеріали.

Посібники

Властивості

ShadowCastingSetting

cast_shadow

1

AABB

custom_aabb

AABB(0, 0, 0, 0, 0, 0)

float

extra_cull_margin

0.0

LightmapScale

gi_lightmap_scale

0

float

gi_lightmap_texel_scale

1.0

GIMode

gi_mode

1

bool

ignore_occlusion_culling

false

float

lod_bias

1.0

Material

material_overlay

Material

material_override

float

transparency

0.0

float

visibility_range_begin

0.0

float

visibility_range_begin_margin

0.0

float

visibility_range_end

0.0

float

visibility_range_end_margin

0.0

VisibilityRangeFadeMode

visibility_range_fade_mode

0

Методи

Variant

get_instance_shader_parameter(name: StringName) const

void

set_instance_shader_parameter(name: StringName, value: Variant)


Переліки

enum ShadowCastingSetting: 🔗

ShadowCastingSetting SHADOW_CASTING_SETTING_OFF = 0

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

ShadowCastingSetting SHADOW_CASTING_SETTING_ON = 1

Увімкнені тіні з усіх видимих граней в GeometryInstance3D.

Враховуючи, що обличчя не будуть враховуватися, коли тіньне лиття.

ShadowCastingSetting SHADOW_CASTING_SETTING_DOUBLE_SIDED = 2

Увімкнені тіні з усіх видимих граней в GeometryInstance3D.

Не враховуйте, щоб всі обличчя будуть враховані при тіні.

ShadowCastingSetting SHADOW_CASTING_SETTING_SHADOWS_ONLY = 3

Покажуть лише тіні, які відкинули цей об'єкт.

Іншими словами, фактична сіточка не буде видно, тільки тіні, які відлиті з сітки будуть.


enum GIMode: 🔗

GIMode GI_MODE_DISABLED = 0

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

GIMode GI_MODE_STATIC = 1

Запечена глобальна система освітлення. Використовуйте для статичних об'єктів, які сприяють глобальному освітленню (наприклад, геометрія рівня). Цей режим GI ефективний при використанні VoxelGI, SDFGI і LightmapGI.

GIMode GI_MODE_DYNAMIC = 2

Динамічний глобальний режим освітлення. Використовуйте для динамічних об'єктів, які сприяють глобальному освітленню. Цей GI режим ефективний при використанні VoxelGI, але він має більш високу продуктивність, ніж GI_MODE_STATIC. При використанні інших методів GI, це буде діяти так само, як GI_MODE_DISABLED. При використанні LightmapGI об'єкт отримає непряме освітлення за допомогою Lightmap зон замість використання запечених текстур Lightmap.


enum LightmapScale: 🔗

LightmapScale LIGHTMAP_SCALE_1X = 0

Застаріло: Use gi_lightmap_texel_scale instead.

Стандартна щільність текселя для освітлення LightmapGI.

LightmapScale LIGHTMAP_SCALE_2X = 1

Застаріло: Use gi_lightmap_texel_scale instead.

Multiplies texel щільність на 2 × для освітлення LightmapGI. Для забезпечення консистенції в щільності текселя використовуйте це при обшивці сітки фактором від 1,5 до 3.0.

LightmapScale LIGHTMAP_SCALE_4X = 2

Застаріло: Use gi_lightmap_texel_scale instead.

Multiplies texel щільність від 4 × для освітлення LightmapGI. Для забезпечення консистенції в щільності текселя використовуйте це при обшивці сітки фактором між 3.0 і 6.0.

LightmapScale LIGHTMAP_SCALE_8X = 3

Застаріло: Use gi_lightmap_texel_scale instead.

Multiplies texel щільність від 8 × для освітлення LightmapGI. Для забезпечення консистенції в густині текселя використовуйте це при обшивці сітки за фактором більше 6,0.

LightmapScale LIGHTMAP_SCALE_MAX = 4

Застаріло: Use gi_lightmap_texel_scale instead.

Представляє розмір LightmapScale enum.


enum VisibilityRangeFadeMode: 🔗

VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DISABLED = 0

Не попадати себе, ані її видимість залежностей, гістерез буде використовуватися замість. Це найшвидший підхід до керівництва LOD, але це може призвести до помітних переходів LOD в залежності від того, як авторуються сітки LOD. Див. visibility_range_begin і Node3D.visibility_parent для отримання додаткової інформації.

VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_SELF = 1

При досягненні лімітів власної видимості. Це повільніше, ніж VISIBILITY_RANGE_FADE_DISABLED, але це може забезпечити плавні переходи. Діапазон загартування визначається visibility_range_begin_margin і visibility_range_end_margin.

Примітка: Тільки підтримується при використанні методу Forward+. При використанні методу мобільного або сумісного рендерингу, цей режим діє як VISIBILITY_RANGE_FADE_DISABLED, але з гістерезом вимкнено.

VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DEPENDENCIES = 2

Відповідає свою видимість залежностей (див. Node3D.visibility_parent) при досягненні лімітів власної видимості. Це повільніше, ніж VISIBILITY_RANGE_FADE_DISABLED, але це може забезпечити плавні переходи. Діапазон загартування визначається visibility_range_begin_margin і visibility_range_end_margin.

Примітка: Тільки підтримується при використанні методу Forward+. При використанні методу мобільного або сумісного рендерингу, цей режим діє як VISIBILITY_RANGE_FADE_DISABLED, але з гістерезом вимкнено.


Описи властивостей

ShadowCastingSetting cast_shadow = 1 🔗

Вибраний прапорець відкидання тіні.


AABB custom_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗

  • void set_custom_aabb(value: AABB)

  • AABB get_custom_aabb()

Надіславши межі цієї вершини за допомогою користувацького. Це може бути використана, щоб уникнути дорогих AABB рекалькуляції, що відбувається, коли скелет використовується з MeshInstance3D або мати точний контроль над MeshInstance3D з обмеженим ящиком. Для використання за замовчуванням AABB, встановленого значення до AABB з усіма полями, встановленими до 0.0. Щоб уникнути фрусу культування, встановити custom_aabb до дуже великого AABB, який охоплює весь світ гри, таких як AABB(-10000, -10000, -10000, 20000, 20000). Вимкніть всі форми культового (в тому числі оклюзійного культування), зателефонуйте RenderingServer.instance_set_ignore_culling() на GeometryInstance3D RID.


float extra_cull_margin = 0.0 🔗

  • void set_extra_cull_margin(value: float)

  • float get_extra_cull_margin()

Додаткова відстань, додана до GeometryInstance3D, що межує з коробкою (AABB) для збільшення її зчеплення.


LightmapScale gi_lightmap_scale = 0 🔗

Застаріло: Use gi_lightmap_texel_scale instead.

Щільність текселів, яка використовується для відображення світла в LightmapGI.


float gi_lightmap_texel_scale = 1.0 🔗

  • void set_lightmap_texel_scale(value: float)

  • float get_lightmap_texel_scale()

Щільність текселів, яка використовується для відображення світла в LightmapGI. Вищі значення масштабу забезпечують вищу роздільну здатність на карті освітлення, що може призвести до більш чітких тіней для джерел світла, які мають як пряме, так і непряме світло. Однак більші значення масштабу також збільшать простір, який займає сітка в текстурі карти освітлення, що збільшує вимоги до пам’яті, зберігання та часу випічки. Використовуючи одну сітку в різних масштабах, подумайте про коригування цього значення, щоб підтримувати однакову щільність текселів карти освітлення в усіх сітках.

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


GIMode gi_mode = 1 🔗

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

Примітка: Режим випікання світла також впливає на глобальне освітлення. Див. Light3D.light_bake_mode.


bool ignore_occlusion_culling = false 🔗

  • void set_ignore_occlusion_culling(value: bool)

  • bool is_ignoring_occlusion_culling()

Якщо true, вимкнено оклюзійне скло для цього екземпляра. Корисно для гізмосу, які повинні бути передані навіть при оклюзії, які використовують.

Примітка: ignore_occlusion_culling не впливає на фрустке культування (що відбувається, коли об'єкт не виділяє кут камери). Щоб уникнути фрусу культового, встановити custom_aabb до дуже великого AABB, який охоплює весь світ гри, таких як AABB(-10000, -10000, -10000, 20000, 20000).


float lod_bias = 1.0 🔗

  • void set_lod_bias(value: float)

  • float get_lod_bias()

Зміни, як швидко переходи сітки до нижнього рівня деталей. Значення 0 змусить сіточку на найнижчий рівень деталь, значення 1 буде використовувати параметри за замовчуванням, а більші значення будуть тримати сіточку в більш високому рівні деталей на далеких відстанях.

Корисне тестування рівня докладних переходів в редакторі.


Material material_overlay 🔗

Матеріал накладка для всієї геометрії.

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


Material material_override 🔗

Матеріал перенаречений на всю геометрію.

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


float transparency = 0.0 🔗

  • void set_transparency(value: float)

  • float get_transparency()

Прозорість наноситься на всю геометрію (як мультиплікатор існуючої прозорості матеріалів). 0.0 повністю непрозора, а 1.0 повністю прозора. Цінності більше, ніж 0.0 (виключно) змусять матеріал геометрії, щоб пройти через прозорий трубопровод, який повільніше рендериться і може експонувати питання, що стосуються неправильної прозорості. Однак, на відміну від використання прозорого матеріалу, налаштування пам'ятна прозорість до значення більше, ніж 0.0 (exclusive) буде не вимкнено Shadow рендеринг.

У просторих шейдерах 1.0 - прозорість `` встановлюється як значення за замовчуванням ``ALPHA вбудований.

Примітка: пам'ятна прозорість затискається між 0.0 і 1.0, тому ця властивість не може бути використана, щоб зробити прозорі матеріали більш опачними, ніж вони спочатку.

Примітка: Тільки підтримується при використанні методу рендерингу Forward+. При використанні методу мобільного або сумісного рендерингу transparency ігнорується і вважається завжди 0.0.


float visibility_range_begin = 0.0 🔗

  • void set_visibility_range_begin(value: float)

  • float get_visibility_range_begin()

Початкова відстань, з якої буде видно GeometryInstance3D, також враховуючи visibility_range_begin_margin. Значення за замовчуванням 0 використовується для вимкнення перевірки діапазону.


float visibility_range_begin_margin = 0.0 🔗

  • void set_visibility_range_begin_margin(value: float)

  • float get_visibility_range_begin_margin()

Маргін для visibility_range_begin поріг. ГеометріяInstance3 D буде змінювати свій стан видимості, коли він переходить або під visibility_range_begin поріг цієї суми.

Якщо visibility_range_fade_mode є VISIBILITY_RANGE_FADE_DISABLED, це діє як дистанція гістерезу. Якщо visibility_range_fade_mode є VISIBILITY_RANGE_FADE_SELF або VISIBILITY_RANGE_FADE_DEPENDENCIES, це діє як відстань fade переходу і повинна бути встановлена до значення більше, ніж 0.0 для ефекту бути помітним.


float visibility_range_end = 0.0 🔗

  • void set_visibility_range_end(value: float)

  • float get_visibility_range_end()

Відстань, з якої буде приховано GeometryInstance3D, також враховуючи visibility_range_end_margin. Значення за замовчуванням 0 використовується для вимкнення перевірки діапазону.


float visibility_range_end_margin = 0.0 🔗

  • void set_visibility_range_end_margin(value: float)

  • float get_visibility_range_end_margin()

Маргін для visibility_range_end поріг. ГеометріяInstance3 D буде змінювати стан видимості, коли він переходить або під поріг visibility_range_end.

Якщо visibility_range_fade_mode є VISIBILITY_RANGE_FADE_DISABLED, це діє як дистанція гістерезу. Якщо visibility_range_fade_mode є VISIBILITY_RANGE_FADE_SELF або VISIBILITY_RANGE_FADE_DEPENDENCIES, це діє як відстань fade переходу і повинна бути встановлена до значення більше, ніж 0.0 для ефекту бути помітним.


VisibilityRangeFadeMode visibility_range_fade_mode = 0 🔗

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


Описи методів

Variant get_instance_shader_parameter(name: StringName) const 🔗

Отримайте значення параметра шейдера, встановленого на цьому екземплярі.


void set_instance_shader_parameter(name: StringName, value: Variant) 🔗

Встановіть значення шейдерної уніформи лише для цього екземпляра (per-instance uniform). Дивіться також ShaderMaterial.set_shader_parameter(), щоб призначити однорідність для всіх екземплярів, використовуючи той самий ShaderMaterial.

Примітка. Щоб уніформу шейдера можна було призначати окремо для кожного екземпляра, її має визначати instance uniform ..., а не uniform ... у коді шейдера.

Примітка: name чутлива до регістру та має точно відповідати назві уніформи в коді (а не назві, написаній великими літерами в інспекторі).

Примітка: Уніформи шейдерів для кожного екземпляра доступні лише для шейдерів Spatial і CanvasItem, але не для шейдерів Fog, Sky або Particles.