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...
GPUParticlesCollisionSDF3D
繼承: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object
烘焙的有符號距離場 3D 粒子吸引器,影響 GPUParticles3D 節點。
說明
烘焙的有符號距離場 3D 粒子吸引器,影響 GPUParticles3D 節點。
有符號的距離場(SDF)允許有效地表示任何形狀的凸面和凹面物件的近似碰撞形狀。它比 GPUParticlesCollisionHeightField3D 更靈活,但需要一個烘焙步驟。
烘焙:可以通過在編輯器中選擇 GPUParticlesCollisionSDF3D 節點,然後點擊 3D 視口頂部的烘焙 SDF,來烘焙有符號的距離場紋理。size 內的任何可見 MeshInstance3D,無論它們的 GeometryInstance3D.gi_mode 如何,都將被考慮用於烘焙。
注意:烘焙 GPUParticlesCollisionSDF3D 的 texture 只能在編輯器中進行,因為沒有公開的烘焙方法可用於匯出的遊戲專案中。但是,在匯出的遊戲項目中,仍然可以將預先烘焙的 Texture3D 載入到 texture 屬性中。
注意:在 GPUParticles3D 的處理材質上,ParticleProcessMaterial.collision_mode 必須是 ParticleProcessMaterial.COLLISION_RIGID 或 ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT,才能使碰撞生效。
注意:粒子碰撞只影響 GPUParticles3D,不影響 CPUParticles3D。
屬性
|
||
|
||
|
||
|
方法
get_bake_mask_value(layer_number: int) const |
|
void |
set_bake_mask_value(layer_number: int, value: bool) |
列舉
enum Resolution: 🔗
Resolution RESOLUTION_16 = 0
烘焙 16×16×16 的有符號距離場。這是最快的選項,但也是最不精確的。
Resolution RESOLUTION_32 = 1
烘焙 32×32×32 的有符號距離場。
Resolution RESOLUTION_64 = 2
烘焙 64×64×64 的有符號距離場。
Resolution RESOLUTION_128 = 3
烘焙 128×128×128 的有符號距離場。
Resolution RESOLUTION_256 = 4
烘焙 256×256×256 的有符號距離場。
Resolution RESOLUTION_512 = 5
烘焙 512×512×512 的有符號距離場。這是最慢的選項,但也是最精確的。
Resolution RESOLUTION_MAX = 6
代表 Resolution 列舉的大小。
屬性說明
烘焙粒子碰撞 SDF 時要考慮的可視層。只有其 VisualInstance3D.layers 與該 bake_mask 配對的 MeshInstance3D,才會被包含在生成的粒子碰撞 SDF 中。預設情況下,粒子碰撞 SDF 烘焙會考慮所有物件。
Resolution resolution = 2 🔗
void set_resolution(value: Resolution)
Resolution get_resolution()
用於有符號距離場 texture 的烘焙解析度。必須再次烘焙紋理,才能使 resolution 屬性的更改生效。更高的解析度具有更高的性能成本,並且需要更多的時間來烘焙。更高的解析度還會產生更大的烘焙紋理,從而增加 VRAM 和儲存的空間需求。要提高性能並減少烘焙時間,請為表示碰撞的對象使用盡可能低的解析度。
Vector3 size = Vector3(2, 2, 2) 🔗
碰撞 SDF 的大小,單位為 3D 單位。為了提高 SDF 品質,應在能覆蓋需要的場景部分的同時,將 size 設定得盡可能小。
代表有符號距離場的 3D 紋理。
碰撞形狀的厚度。與其他粒子碰撞器不同,GPUParticlesCollisionSDF3D 實際上內部是空心的。可以增加 thickness,以防止粒子在高速運動、或者當 GPUParticlesCollisionSDF3D 移動時,穿過碰撞形狀。
方法說明
bool get_bake_mask_value(layer_number: int) const 🔗
返回是否啟用了 bake_mask 的指定層,該層由給定的一個介於 1 和 32 之間的 layer_number 指定。
void set_bake_mask_value(layer_number: int, value: bool) 🔗
基於 value,啟用或禁用 bake_mask 中的指定層,該層由給定的一個介於 1 和 32 之間的 layer_number 指定。