GPUParticlesCollisionHeightField3D
继承: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object
影响 GPUParticles3D 节点的实时高度图形状 3D 粒子碰撞形状。
描述
影响 GPUParticles3D 节点的实时高度图形状的 3D 粒子碰撞形状。
高度图形状允许有效地表示凸面和凹面对象与单个“地板”(例如地形)的碰撞。它不如 GPUParticlesCollisionSDF3D 灵活,但不需要烘焙步骤。
也可以在移动时、相机移动时、甚至连续时,实时重新生成 GPUParticlesCollisionHeightField3D。这对雨雪等天气效果、以及具有高度动态几何体的游戏来说,GPUParticlesCollisionHeightField3D 是一个不错的选择。但是,该类有限制,因为高度图无法表示悬垂(例如室内或洞穴)。
注意:在 GPUParticles3D 的处理材质上,ParticleProcessMaterial.collision_mode 必须为 true
,才能使碰撞生效。
注意:粒子碰撞只影响 GPUParticles3D,不影响 CPUParticles3D。
属性
| ||
| ||
| ||
|
枚举
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_enabled 为 true
且相机移动时,更新高度图。可以通过向任意方向稍微移动 GPUParticlesCollisionHeightField3D 或者调用 RenderingServer.particles_collision_height_field_update 来强制更新。
UpdateMode UPDATE_MODE_ALWAYS = 1
每帧更新高度图。这具有显著的性能成本。只有当粒子可以碰撞的几何体在游戏过程中发生显著变化时,才应使用该更新选项。
属性说明
bool follow_camera_enabled = false
🔗
如果为 true
,则 GPUParticlesCollisionHeightField3D 将在全局空间中跟随当前相机。GPUParticlesCollisionHeightField3D 不需要是该 Camera3D 节点的子节点也能工作。
跟随相机会有性能成本,因为它会在相机移动时强制更新高度图。如果 follow_camera_enabled 为 true
,请考虑降低 resolution 以提高性能。
Resolution resolution = 2
🔗
void set_resolution(value: Resolution)
Resolution get_resolution()
更高的分辨率可以更准确地表示大场景中的小细节,但会降低性能。如果 update_mode 为 UPDATE_MODE_ALWAYS,请考虑使用可能的最低分辨率。
Vector3 size = Vector3(2, 2, 2)
🔗
碰撞高度图的 3D 单位大小。为了提高高度图质量,size 应被设置得尽可能小,同时覆盖需要的场景部分。
UpdateMode update_mode = 0
🔗
void set_update_mode(value: UpdateMode)
UpdateMode get_update_mode()
生成的高度图的更新策略。