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...
MultiMesh
Успадковує: Resource < RefCounted < Object
Забезпечує високопродуктивний малюнок сітки кілька разів за допомогою інсталяції GPU.
Опис
MultiMesh забезпечує знезараження сітки низького рівня. Нанесення тисяч вузлів MeshInstance3D може бути повільним, так як кожен об'єкт подається на GPU, після чого проводиться індивідуально.
MultiMesh набагато швидше, оскільки це може малювати тисячі екземплярів з одним викликом, що призводить до меншого API накладної.
Як недолік, якщо екземпляри занадто далеко один від одного, продуктивність може бути зменшена, оскільки кожен окремий екземпляр завжди буде рендером (і просторово індексований як один, для усього об'єкта).
Оскільки екземпляри можуть мати будь-яку поведінку, AABB, яка використовується для видимості, повинна бути надана користувачем.
Примітка: A MultiMesh є єдиним об'єктом, тому в той же самий максимальний світильник для обмеження об'єкта. Це означає, що один раз максимальні світильники споживають один або кілька екземплярів, інші екземпляри MultiMesh будуть ** не** отримувати будь-яке освітлення.
Примітка: Бленд Шапес ігнорується, якщо використовується в мультимеш.
Посібники
Властивості
PackedFloat32Array |
|
|
PackedColorArray |
||
|
||
PackedColorArray |
||
|
||
|
||
PackedVector2Array |
||
PackedVector3Array |
||
|
||
|
||
|
||
|
Методи
get_aabb() const |
|
get_instance_color(instance: int) const |
|
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 |
|
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) 🔗
Призначений для користувача 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.
Кількість екземплярів, які будуть намальовані. Це очищає і (re)розміри буферів. Налаштування форматів даних або прапорів після
За замовчуванням, всі екземпляри витягуються, але ви можете обмежити це з visible_instance_count.
Mesh ресурс для інстанції.
Перегляд окремих екземплярів можна змінити за допомогою set_instance_color() та _instance_custom_data().
PhysicsInterpolationQuality physics_interpolation_quality = 0 🔗
void set_physics_interpolation_quality(value: PhysicsInterpolationQuality)
PhysicsInterpolationQuality get_physics_interpolation_quality()
Виберіть метод інтерполяції, що сприяє швидкості чи якості.
Використовуючи низькі показники фізики (зазвичай нижче 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 🔗
void set_transform_format(value: TransformFormat)
TransformFormat get_transform_format()
Формат перетворення, що використовується для перетворення сітки, або 2D або 3D.
Якщо true, то MultiMesh буде використовувати кольорові дані (див. _instance_color()). 0 або менше. Це означає, що потрібно викликати цей метод перед встановленням кількості екземплярів або тимчасово скидати його на 0.
bool use_custom_data = false 🔗
Якщо true, то MultiMesh використовуватиме користувацькі дані (див. _instance_custom_data()). 0 або менше. Це означає, що потрібно викликати цей метод перед встановленням кількості екземплярів або тимчасово скидати його на 0.
int visible_instance_count = -1 🔗
Знімає кількість екземплярів, намальованих, -1 виводить всі екземпляри. Зміна розмірів буферів.
Описи методів
Повертає видимість вісь вирівнюється замика в локальному просторі.
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 для конкретного екземпляра.