Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

GPUParticlesCollisionHeightField3D

继承: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object

影响 GPUParticles3D 节点的实时高度图形状 3D 粒子碰撞形状。

描述

影响 GPUParticles3D 节点的实时高度图形状的 3D 粒子碰撞形状。

高度图形状允许有效地表示凸面和凹面对象与单个“地板”(例如地形)的碰撞。它不如 GPUParticlesCollisionSDF3D 灵活,但不需要烘焙步骤。

也可以在移动时、相机移动时、甚至连续时,实时重新生成 GPUParticlesCollisionHeightField3D。这对雨雪等天气效果、以及具有高度动态几何体的游戏来说,GPUParticlesCollisionHeightField3D 是一个不错的选择。但是,该类有限制,因为高度图无法表示悬垂(例如室内或洞穴)。

注意:GPUParticles3D 的处理材质上,ParticleProcessMaterial.collision_mode 必须为 true,才能使碰撞生效。

注意:粒子碰撞只影响 GPUParticles3D,不影响 CPUParticles3D

属性

bool

follow_camera_enabled

false

Resolution

resolution

2

Vector3

size

Vector3(2, 2, 2)

UpdateMode

update_mode

0


枚举

enum Resolution:

Resolution RESOLUTION_256 = 0

生成 256×256 的高度图。适用于小规模场景,或没有远景粒子的较大场景。

Resolution RESOLUTION_512 = 1

生成 512×512 的高度图。适用于中等规模的场景,或没有远景粒子的较大场景。

Resolution RESOLUTION_1024 = 2

生成 1024×1024 的高度图。适用于具有远景粒子的大型场景。

Resolution RESOLUTION_2048 = 3

生成 2048×2048 的高度图。适用于具有远景粒子的非常大的场景。

Resolution RESOLUTION_4096 = 4

生成 4096×4096 的高度图。适用于具有远景粒子的巨大场景。

Resolution RESOLUTION_8192 = 5

生成 8192×8192 的高度图。适用于具有远景粒子的巨大场景。

Resolution RESOLUTION_MAX = 6

代表 Resolution 枚举的大小。


enum UpdateMode:

UpdateMode UPDATE_MODE_WHEN_MOVED = 0

仅在 GPUParticlesCollisionHeightField3D 节点移动时,或者当 follow_camera_enabledtrue 且相机移动时,更新高度图。可以通过向任意方向稍微移动 GPUParticlesCollisionHeightField3D 或者调用 RenderingServer.particles_collision_height_field_update 来强制更新。

UpdateMode UPDATE_MODE_ALWAYS = 1

每帧更新高度图。这具有显著的性能成本。只有当粒子可以碰撞的几何体在游戏过程中发生显著变化时,才应使用该更新选项。


属性说明

bool follow_camera_enabled = false

  • void set_follow_camera_enabled ( bool value )

  • bool is_follow_camera_enabled ( )

如果为 true,则 GPUParticlesCollisionHeightField3D 将在全局空间中跟随当前相机。GPUParticlesCollisionHeightField3D 不需要是该 Camera3D 节点的子节点也能工作。

跟随相机会有性能成本,因为它会在相机移动时强制更新高度图。如果 follow_camera_enabledtrue,请考虑降低 resolution 以提高性能。


Resolution resolution = 2

更高的分辨率可以更准确地表示大场景中的小细节,但会降低性能。如果 update_modeUPDATE_MODE_ALWAYS,请考虑使用可能的最低分辨率。


Vector3 size = Vector3(2, 2, 2)

碰撞高度图的 3D 单位大小。为了提高高度图质量,size 应被设置得尽可能小,同时覆盖需要的场景部分。


UpdateMode update_mode = 0

生成的高度图的更新策略。