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.

MultiMesh

Успадковує: Resource < RefCounted < Object

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

Опис

MultiMesh забезпечує знезараження сітки низького рівня. Нанесення тисяч вузлів MeshInstance3D може бути повільним, так як кожен об'єкт подається на GPU, після чого проводиться індивідуально.

MultiMesh набагато швидше, оскільки це може малювати тисячі екземплярів з одним викликом, що призводить до меншого API накладної.

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

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

Примітка: A MultiMesh є єдиним об'єктом, тому в той же самий максимальний світильник для обмеження об'єкта. Це означає, що один раз максимальні світильники споживають один або кілька екземплярів, інші екземпляри MultiMesh будуть ** не** отримувати будь-яке освітлення.

Примітка: Бленд Шапес ігнорується, якщо використовується в мультимеш.

Посібники

Властивості

PackedFloat32Array

buffer

PackedFloat32Array()

PackedColorArray

color_array

AABB

custom_aabb

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

PackedColorArray

custom_data_array

int

instance_count

0

Mesh

mesh

PhysicsInterpolationQuality

physics_interpolation_quality

0

PackedVector2Array

transform_2d_array

PackedVector3Array

transform_array

TransformFormat

transform_format

0

bool

use_colors

false

bool

use_custom_data

false

int

visible_instance_count

-1

Методи

AABB

get_aabb() const

Color

get_instance_color(instance: int) const

Color

get_instance_custom_data(instance: int) const

Transform3D

get_instance_transform(instance: int) const

Transform2D

get_instance_transform_2d(instance: int) const

void

reset_instance_physics_interpolation(instance: int)

void

reset_instances_physics_interpolation()

void

set_buffer_interpolated(buffer_curr: PackedFloat32Array, buffer_prev: PackedFloat32Array)

void

set_instance_color(instance: int, color: Color)

void

set_instance_custom_data(instance: int, custom_data: Color)

void

set_instance_transform(instance: int, transform: Transform3D)

void

set_instance_transform_2d(instance: int, transform: Transform2D)


Переліки

enum TransformFormat: 🔗

TransformFormat TRANSFORM_2D = 0

Використовуйте це при використанні 2D трансформаторів.

TransformFormat TRANSFORM_3D = 1

Використовуйте це при використанні трансформаторів 3D.


enum PhysicsInterpolationQuality: 🔗

PhysicsInterpolationQuality INTERP_QUALITY_FAST = 0

Завжди інтерполюйте з використанням Basis lerping, який у деяких ситуаціях може спричиняти артефакти викривлення.

PhysicsInterpolationQuality INTERP_QUALITY_HIGH = 1

Спробуйте виконати інтерполяцію за допомогою Basis slerping (сферична лінійна інтерполяція), де це можливо, інакше поверніться до lerping.


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

PackedFloat32Array buffer = PackedFloat32Array() 🔗

  • void set_buffer(value: PackedFloat32Array)

  • PackedFloat32Array get_buffer()

There is currently no description for this property. Please help us by contributing one!

Note: The returned array is copied and any changes to it will not update the original property value. See PackedFloat32Array for more details.


PackedColorArray color_array 🔗

Застаріло: Accessing this property is very slow. Use set_instance_color() and get_instance_color() instead.

Арра, що містить кожну Color, яка використовується всіма екземплярами цієї сітки.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedColorArray for more details.


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

  • void set_custom_aabb(value: AABB)

  • AABB get_custom_aabb()

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


PackedColorArray custom_data_array 🔗

Застаріло: Accessing this property is very slow. Use set_instance_custom_data() and get_instance_custom_data() instead.

Арра, що містить кожний на замовлення значення даних, що використовується всіма екземплярами цієї сітки, як PackedColorArray.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedColorArray for more details.


int instance_count = 0 🔗

  • void set_instance_count(value: int)

  • int get_instance_count()

Кількість екземплярів, які будуть намальовані. Це очищає і (re)розміри буферів. Налаштування форматів даних або прапорів після

За замовчуванням, всі екземпляри витягуються, але ви можете обмежити це з visible_instance_count.


Mesh mesh 🔗

  • void set_mesh(value: Mesh)

  • Mesh get_mesh()

Mesh ресурс для інстанції.

Перегляд окремих екземплярів можна змінити за допомогою set_instance_color() та _instance_custom_data().


PhysicsInterpolationQuality physics_interpolation_quality = 0 🔗

Виберіть метод інтерполяції, що сприяє швидкості чи якості.

Використовуючи низькі показники фізики (зазвичай нижче 20) або високі показники обертання об’єкта, ви можете отримати кращі результати завдяки високій якості.

**Примітка. ** Швидка якість не означає низьку якість. За винятком особливих випадків, згаданих вище, якість має бути порівнянна з високою якістю.


PackedVector2Array transform_2d_array 🔗

Застаріло: Accessing this property is very slow. Use set_instance_transform_2d() and get_instance_transform_2d() instead.

Array, що містить кожний Transform2D значення, що використовується всіма екземплярами цієї сітки, як PackedVector2Array. Кожен трансформатор ділиться на 3 Vector2 значення, що відповідають трансформам x, y, і origin.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector2Array for more details.


PackedVector3Array transform_array 🔗

Застаріло: Accessing this property is very slow. Use set_instance_transform() and get_instance_transform() instead.

Array, що містить кожний Transform3D значення, що використовується усіма екземплярами цієї сітки, як PackedVector3Array. Кожен трансформатор ділиться на 4 Vector3 значення, що відповідають значенням трансформатора x, y, z, і origin.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector3Array for more details.


TransformFormat transform_format = 0 🔗

Формат перетворення, що використовується для перетворення сітки, або 2D або 3D.


bool use_colors = false 🔗

  • void set_use_colors(value: bool)

  • bool is_using_colors()

Якщо true, то MultiMesh буде використовувати кольорові дані (див. _instance_color()). 0 або менше. Це означає, що потрібно викликати цей метод перед встановленням кількості екземплярів або тимчасово скидати його на 0.


bool use_custom_data = false 🔗

  • void set_use_custom_data(value: bool)

  • bool is_using_custom_data()

Якщо true, то MultiMesh використовуватиме користувацькі дані (див. _instance_custom_data()). 0 або менше. Це означає, що потрібно викликати цей метод перед встановленням кількості екземплярів або тимчасово скидати його на 0.


int visible_instance_count = -1 🔗

  • void set_visible_instance_count(value: int)

  • int get_visible_instance_count()

Знімає кількість екземплярів, намальованих, -1 виводить всі екземпляри. Зміна розмірів буферів.


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

AABB get_aabb() const 🔗

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


Color get_instance_color(instance: int) const 🔗

Прискорює колірну множицю.


Color get_instance_custom_data(instance: int) const 🔗

Повернути спеціальні дані, які були встановлені для конкретного екземпляра.


Transform3D get_instance_transform(instance: int) const 🔗

Повернення Transform3D конкретного екземпляра.


Transform2D get_instance_transform_2d(instance: int) const 🔗

Повернення Transform2D конкретного екземпляра.


void reset_instance_physics_interpolation(instance: int) 🔗

Під час використання фізичної інтерполяції ця функція дозволяє запобігти інтерполяції на екземплярі в поточному фізичному тику.

Це дозволяє миттєво переміщувати екземпляри, і зазвичай його слід використовувати під час початкового розміщення екземпляра, наприклад кулі, щоб запобігти графічним збоям.


void reset_instances_physics_interpolation() 🔗

Під час використання фізичної інтерполяції ця функція дозволяє запобігти інтерполяції для всіх екземплярів у поточному такті фізики.

Це дозволяє миттєво переміщувати всі екземпляри, і зазвичай її слід використовувати під час початкового розміщення екземплярів, щоб запобігти графічним збоям.


void set_buffer_interpolated(buffer_curr: PackedFloat32Array, buffer_prev: PackedFloat32Array) 🔗

Альтернатива встановленню властивості buffer, яку можна використовувати з фізичною інтерполяцією. Цей метод використовує два масиви та може встановити дані для поточного та попереднього тику за один раз. Програма візуалізації автоматично інтерполює дані в кожному кадрі.

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

Коли порядок екземплярів узгоджений, простіший варіант налаштування buffer все ще може використовуватися з інтерполяцією.


void set_instance_color(instance: int, color: Color) 🔗

Налаштовує колір конкретного екземпляра multiplying наявні вершини кольору сітки. Це дозволяє різним кольором настоюватися в екземплярі.

Примітка: Кожен компонент зберігається в 32 бітах в методах переадресації + та мобільного рендерингу, але упаковується в 16 біт в методі сумісності.

Для кольору, щоб прийняти ефект, переконайтеся, що use_colors є true на MultiMesh і BaseMaterial3D.vertex_color_use_as_albedo true на матеріалі. Якщо ви хочете встановити абсолютний колір замість настоянки, переконайтеся, що матеріал альбедо колір встановлюється на чистий білий (Color(1, 1, 1)).


void set_instance_custom_data(instance: int, custom_data: Color) 🔗

Налаштовує спеціальні дані для конкретного екземпляра. Custom_data типу Color містить 4 плаваючі номери.

Примітка: Кожен номер зберігається в 32 бітах в методах переадресації + та мобільного рендерингу, але упаковується в 16 біт в методі сумісності.

Для спеціальних даних, які використовуються, переконайтеся, що use_custom_data true.

Цей користувальницький екземпляр даних має бути вручну доступним у користувальницьких шейкерах за допомогою INSTANCE_CUSTOM.


void set_instance_transform(instance: int, transform: Transform3D) 🔗

Налаштовує Transform3D для конкретного екземпляра.


void set_instance_transform_2d(instance: int, transform: Transform2D) 🔗

Налаштовує Transform2D для конкретного екземпляра.