ParticleColliderSDFGPU¶
继承: ParticleColliderGPUBase < VisualRender < Item3D < Item < Object
烘焙有符号距离场3D粒子碰撞形状影响ParticlesGPU节点。
描述¶
烘焙有符号距离场3D粒子碰撞形状影响ParticlesGPU节点。
符号距离字段(SDF)允许有效地表示任何形状的凸和凹物体的近似碰撞形状。这比ParticleColliderHeightFieldGPU更灵活,但它需要烘烤步骤。
烘焙:可以通过选择编辑器中的ParticleColliderSDFGPU节点,然后单击3D视口顶部的烘焙SDF来烘焙带符号的距离场纹理。size内的任何可见MeshRenders都将被考虑用于烘焙,而不管它们的GeometryRender.gi_mode。
注意:烘焙ParticleColliderSDFGPU的texture只能在编辑器中进行,因为在导出的项目中没有公开的烘焙方法。但是,仍然可以在导出的项目中将预烘焙的Texture3D加载到其texture属性中。
注意:ParticleProcessMaterial.collision_mode必须是ParticleProcessMaterial.COLLISION_RIGID或ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT对ParticlesGPU的处理材质进行碰撞才能工作。
注意:粒子碰撞只影响ParticlesGPU,不影响ParticlesCPU。
属性¶
|
||
|
||
|
||
|
方法¶
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时要考虑的视觉层。只有VisualRender.layers与此bake_mask匹配的MeshRender才会包含在生成的粒子碰撞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纹理。
碰撞形状的厚度。与其他粒子碰撞器不同,ParticleColliderSDFGPU实际上内部是中空的。thickness可以增加,以防止粒子在高速下穿过碰撞形状,或者当ParticleColliderSDFGPU移动时。
方法说明¶
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。