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...
GPUParticles3D
Успадковує: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Випромінювач частинок 3D.
Опис
3D частинний вузол використовується для створення різних систем частинок і ефектів. GPUParticles3D містить випромінювач, який генерує певну кількість частинок при даній швидкості.
Використовуйте process_material, щоб додати ParticleProcessMaterial для налаштування зовнішнього вигляду частинок та поведінки. Крім того, ви можете додати ShaderMaterial, який буде застосовуватися до всіх частинок.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
Skin |
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
NodePath |
|
|
|
||
|
||
|
||
ParticlesTransformAlignAxis |
||
ParticlesTransformAlignCustomSrc |
||
|
||
|
Методи
capture_aabb() const |
|
void |
convert_from_particles(particles: Node) |
void |
emit_particle(xform: Transform3D, velocity: Vector3, color: Color, custom: Color, flags: int) |
get_draw_pass_mesh(pass: int) const |
|
void |
request_particles_process(process_time: float, process_time_residual: float = 0.0) |
void |
|
void |
set_draw_pass_mesh(pass: int, mesh: Mesh) |
Сигнали
finished() 🔗
Випромінюється, коли всі активні частинки закінчили обробку. Щоб негайно перезапустити цикл викидів, викличте restart().
Цей сигнал ніколи не випромінюється, коли one_shot вимкнено, оскільки частинки випромінюються та обробляються постійно.
Примітка: Для випромінювачів one_shot, через те, що частинки обчислюються графічним процесором, може бути короткий період після отримання сигналу, протягом якого налаштування emitting на true не перезапустить цикл випромінювання. Цю затримку можна уникнути шляхом виклику restart().
Переліки
enum DrawOrder: 🔗
DrawOrder DRAW_ORDER_INDEX = 0
Терміни нараховуються в порядку, передбаченому.
DrawOrder DRAW_ORDER_LIFETIME = 1
Терміни нараховуються в порядку денного життя. Іншими словами, частинка з найвищим терміном придатна на фронті.
DrawOrder DRAW_ORDER_REVERSE_LIFETIME = 2
Терміни нараховуються у зворотному порядку решти життя. Іншими словами, частинка з найнижчим терміном наноситься на передній.
DrawOrder DRAW_ORDER_VIEW_DEPTH = 3
Терміни натягуються для глибини.
enum EmitFlags: 🔗
EmitFlags EMIT_FLAG_POSITION = 1
На вказаному положенні стартує частинка.
EmitFlags EMIT_FLAG_ROTATION_SCALE = 2
Частка починається з вказаного обертання і ваги.
EmitFlags EMIT_FLAG_VELOCITY = 4
Частинка починається з вказаного вектора швидкості, який визначає напрямок викидів і швидкість.
EmitFlags EMIT_FLAG_COLOR = 8
Стіч починається з вказаного кольору.
EmitFlags EMIT_FLAG_CUSTOM = 16
Наклад починається з вказаних CUSTOM даних.
enum TransformAlign: 🔗
TransformAlign TRANSFORM_ALIGN_DISABLED = 0
Do not align particle transforms relative to the camera or velocity.
TransformAlign TRANSFORM_ALIGN_Z_BILLBOARD = 1
Align each particle's Z axis to face the camera.
TransformAlign TRANSFORM_ALIGN_Y_TO_VELOCITY = 2
Align each particle's Y axis to the velocity vector.
TransformAlign TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY = 3
Align each particle's Z axis to face the camera and Y axis to the velocity vector.
TransformAlign TRANSFORM_ALIGN_LOCAL_BILLBOARD = 4
Align each particle's Z axis to face the camera, while preserving a given axis (X or Y).
Константи
MAX_DRAW_PASSES = 4 🔗
Підтримується максимальна кількість витяжок.
Описи властивостей
Кількість частинок для випромінювання в одному циклі випромінювання. Ефективна швидкість емісії (amount * amount_ratio) / життя частинки на секунду. Більші значення підвищать вимоги до GPU, навіть якщо не всі частинки видимі в обумовлений час або якщо знизився кількість пам'яті.
Примітка: Зміна цього значення призведе до перезавантаження системи частинок. Щоб уникнути цього, змініть amount_ratio замість.
Співвідношення частинок, які насправді повинні бути введеними. Якщо встановити значення нижче 1.0, це буде встановлено кількість вживаних частинок протягом усього життя amount * кількість_ratio. На відміну від зміни amount, зміни amount_ratio при випромінюванні не впливає вже наявні частинки і не викликає системи частинок для перезавантаження. amount_ratio може бути використана для створення ефектів, які роблять число вживаних частинок варіюватися з часом.
Примітка: Зменшення amount_ratio не має допомоги продуктивності, так як ресурси повинні бути виділені і оброблені для всього amount частинок незалежно від amount_ratio. Якщо ви не маєте намір змінити кількість частинок, які випромінюються, тоді як частинки випромінюють, переконайтеся, що кількість_ratio встановлюється до 1 і змініть amount до вашої кришки замість.
float collision_base_size = 0.01 🔗
Діаметр основи зіткнення частинок в метрах. Якщо з'являються частинки, щоб мити в грунт, коли з'єднання, збільшити це значення. Якщо частинки з'являються до плавлення при співвідношенні, знижують це значення. Тільки ефективний, якщо ParticleProcessMaterial.collision_mode є ParticleProcessMaterial.COLLISION_RIGID або ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT.
Примітки: завжди мають сферичну форму зіткнення.
Порядок малювання частинок.
Примітка: DRAW_ORDER_INDEX – єдиний параметр, який підтримує вектори руху для ефектів, таких як TAA. Рекомендується використовувати цей порядок малювання, якщо частинки непрозорі, щоб виправити артефакти ореолу.
Mesh, що намальовується для першого розіграшу.
Mesh, що намальовується на другий прохід.
Mesh, що намальовується на третій прохід.
Mesh, що намальовується на четвертий прохід.
Кількість проходжень при рендерингу частинок.
Skin draw_skin 🔗
void set_skin(value: Skin)
Skin get_skin()
There is currently no description for this property. Please help us by contributing one!
Якщо true, частинки вдаються. пам'ятне випромінювання може бути використаний для запуску та припинення частинок з випромінювання. Однак, якщо one_shot є true налаштування emitting до true не перезапустити цикл викидів, якщо всі активні частинки закінчилися обробки. Використовуйте finished сигнал, який буде повідомлено один раз, коли всі активні обробки частинок.
Примітка: Для one_shot випромінювачів, через частинки, що комп'ютерні на GPU, може бути короткий період після отримання сигналу finished, під час якого налаштування цього true не буде перезапустити цикл емісії.
Підказка: Якщо ваш one_shot випромінювач повинен негайно перезапустити частинки після отримання сигналу, розгляньте виклик restart() замість налаштування emitting.
Часовий співвідношення між комісією. Якщо 0, частинки безперервно випускаються. Якщо 1, всі частинки одночасно продаються.
Швидкість рами частинок фіксується до значення. Наприклад, зміна значення до 2 призведе до зменшення частинок на 2 кадри на другий. Зверніть увагу, що це не уповільнює моделювання самої системи частинок.
Якщо true, результати розрахунку дробової дельти, яка має ефект відображення гладких частинок.
Причини всіх частинок в цій вершині, щоб міжполятися до кінця їх життя.
Примітка: Це тільки працює при використанні ParticleProcessMaterial. Необхідно вручну втілювати шейкери на замовлення.
Вмикає інтерполяцію частинок, що робить рух частинок плавнішим, коли їхній fixed_fps нижчий за частоту оновлення екрана.
Кількість часу кожної частинки буде існувати (в секундах). Ефективна швидкість емісії `` (amount * amount_ratio) / термін служби`` частинки на секунду.
Якщо true, частинки використовують координаційний простір материнської вершини (відомі як локальні координати). Це спричинить частинки для переміщення і обертання вздовж вузла GPUParticles3D (і його батьки), коли він переміщається або обертається. Якщо false, частинки використовують глобальні координати; вони не рухаються або обертаються вздовж вузла GPUParticles3D (і його батьки), коли він переміщається або обертається.
Якщо true, буде випромінено лише кількість частинок, що дорівнює amount.
Час для попередньої обробки частинок перед початком анімації. Дозволяє запускати анімацію через деякий час після початку випромінювання частинок.
Примітка: Це може бути дуже дорогим, якщо встановлено велике число, оскільки це вимагає запуску шейдера частинок кількість разів, що дорівнює fixed_fps (або 30, якщо fixed_fps дорівнює 0) за кожну секунду. У крайніх випадках це може навіть призвести до збою GPU через обсяг роботи, виконаної в одному кадрі.
Material для обробки частинок. Може бути ParticleProcessMaterial або ShaderMaterial.
Співвідношення випадковості випромінювання.
Встановлює випадкове початкове число, яке використовується системою частинок. Ефективно, лише якщо use_fixed_seed має значення true.
Співвідношення швидкості масштабування. Значення 0 можна використовувати для паузи частинок.
NodePath sub_emitter = NodePath("") 🔗
void set_sub_emitter(value: NodePath)
NodePath get_sub_emitter()
Шлях до іншої GPUParticles3D вершина, яка буде використовуватися як підеміттер (див. ParticleProcessMaterial.sub_emitter_mode). Для досягнення ефектів, таких як феєрверки, іскри на зіткненні, бульбашки, що тиснуть на краплі води, і багато іншого.
Примітка: Коли sub_emitter встановлюється, ціль GPUParticles3D вузол більше не буде випромінювати частинки самостійно.
Якщо true, що дозволяє причіпам частинок за допомогою системи обробки сітки. Призначений для роботи з RibbonTrailMesh і TubeTrailMesh.
Note: BaseMaterial3D.use_particle_trails також повинен бути включений на матеріалі сітки. В іншому випадку налаштування trail_enabled до true не буде ефектно.
Note: На відміну від GPUParticles2D, кількість розділів причепів і підрозділів встановлюється в RibbonTrailMesh або TubeTrailMesh властивості.
Кількість часу слід представляти частинку (в секундах). true.
TransformAlign transform_align = 0 🔗
void set_transform_align(value: TransformAlign)
TransformAlign get_transform_align()
The alignment of particles. Use this for billboarding and aligning to velocity.
ParticlesTransformAlignAxis transform_align_axis 🔗
void set_transform_align_axis(value: ParticlesTransformAlignAxis)
ParticlesTransformAlignAxis get_transform_align_axis()
When using transform align local billboard, which axis to use for the billboarding. Supports only X or Y.
ParticlesTransformAlignCustomSrc transform_align_channel_filter 🔗
void set_transform_align_channel_filter(value: ParticlesTransformAlignCustomSrc)
ParticlesTransformAlignCustomSrc get_transform_align_channel_filter()
In the case of billboarded particles, which custom channel to read from to calculate their angle.
Якщо true, частинки використовуватимуть той самий сімпл для кожної симуляції, використовуючи сімпл, визначений у seed. Це корисно у ситуаціях, коли візуальний результат має бути однаковим у всіх відтвореннях, наприклад, при використанні режиму Movie Maker.
AABB visibility_aabb = AABB(-4, -4, -4, 8, 8, 8) 🔗
AABB, що визначає область вершини, який повинен бути видимим на екрані для системи частинок, щоб бути активним. GeometryInstance3D.extra_cull_margin додається на кожному з осей AABB. У цій зоні відбуваються лише зіткнення частинок і залучення.
Вирощувати коробку, якщо частинки раптово з'являються / з'являються, коли вершина надходить / виводить екран. AABB може бути вирощений за допомогою коду або з Пачастини → Generate AABB.
Примітка: visibility_aabb передається GeometryInstance3D.custom_aabb, якщо ця властивість встановлена до невидимого значення.
Описи методів
Повертає вісь вирівнюючу коробку, яка містить всі частинки, які активні в поточній рамі.
void convert_from_particles(particles: Node) 🔗
Налаштовує властивості цього вузла, щоб відповідати даній CPUParticles3D вершини.
void emit_particle(xform: Transform3D, velocity: Vector3, color: Color, custom: Color, flags: int) 🔗
Випромінює одну частинку. Чи застосовуються xform, velocity, color і custom, залежить від значення flags. Див. EmitFlags.
За замовчуванням ParticleProcessMaterial перезапише color і використає вміст custom як (rotation, age, animation, lifetime).
Примітка: emit_particle() підтримується лише методами візуалізації Forward+ і Mobile, а не Compatibility.
Mesh get_draw_pass_mesh(pass: int) const 🔗
Повертає Mesh, що намальований за індексом pass.
void request_particles_process(process_time: float, process_time_residual: float = 0.0) 🔗
Requests the particles to process for extra process time during a single frame.
process_time defines the time that the particles will process while emitting is on. process_time_residual defines the time that particles will process with emitting turned off for the simulation. When combined with speed_scale set to 0.0, this is useful to be able to seek a particle system timeline.
void restart(keep_seed: bool = false) 🔗
Перезапускає цикл викиду частинок, очищаючи існуючі частинки. Щоб уникнути зникнення частинок із вікна перегляду, дочекайтеся сигналу finished перед викликом.
Примітка: Сигнал finished випромінюють лише випромінювачі one_shot.
Якщо keep_seed має значення true, поточне випадкове початкове число буде збережено. Корисно для пошуку та відтворення.
void set_draw_pass_mesh(pass: int, mesh: Mesh) 🔗
Встановлює Mesh, що мальований в індексі pass.