GPUParticlesCollisionSDF3D
继承: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object
影响 GPUParticles3D 节点的烘焙的带符号距离场 3D 粒子碰撞形状。
描述
影响 GPUParticles3D 节点的烘焙的带符号距离场 3D 粒子碰撞形状。
有符号的距离场(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 ( int layer_number ) const | |
void | set_bake_mask_value ( int layer_number, bool value ) |
枚举
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 枚举的大小。
属性说明
int bake_mask = 4294967295
烘焙粒子碰撞 SDF 时要考虑的可视层。只有其 VisualInstance3D.layers 与该 bake_mask 匹配的 MeshInstance3D,才会被包含在生成的粒子碰撞 SDF 中。默认情况下,粒子碰撞 SDF 烘焙会考虑所有对象。
Resolution resolution = 2
void set_resolution ( Resolution value )
Resolution get_resolution ( )
用于有符号距离场 texture 的烘焙分辨率。必须再次烘焙纹理,才能使 resolution 属性的更改生效。更高的分辨率具有更高的性能成本,并且需要更多的时间来烘焙。更高的分辨率还会产生更大的烘焙纹理,从而增加 VRAM 和存储的空间需求。要提高性能并减少烘焙时间,请为表示碰撞的对象使用尽可能低的分辨率。
Vector3 size = Vector3(2, 2, 2)
碰撞 SDF 的大小,单位为 3D 单位。为了提高 SDF 质量,应在能覆盖需要的场景部分的同时,将 size 设置得尽可能小。
Texture3D texture
代表有符号距离场的 3D 纹理。
float thickness = 1.0
碰撞形状的厚度。与其他粒子碰撞器不同,GPUParticlesCollisionSDF3D 实际上内部是空心的。可以增加 thickness,以防止粒子在高速运动、或者当 GPUParticlesCollisionSDF3D 移动时,穿过碰撞形状。
方法说明
bool get_bake_mask_value ( int layer_number ) const
返回是否启用了 bake_mask 的指定层,该层由给定的一个介于 1 和 32 之间的 layer_number
指定。
void set_bake_mask_value ( int layer_number, bool value )
基于 value
,启用或禁用 bake_mask 中的指定层,该层由给定的一个介于 1 和 32 之间的 layer_number
指定。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.