Geometry collection fields and collision group

Hello, I noticed a couple of odd geometry collection behaviors.

1. Fields with maximum resolution seem to only affect the same particles as fields with minimum resolution. GetRelevantParticleHandles() returns the extra particles when resolution is set to maxium, but then FillExecutionDatas() in BuildFieldSamplePoints() discards samples from particles that are disabled and have a disabled parent. I think I remember this working differently in the past, could be wrong, but either way it seems from GetRelevantParticleHandles() like the intention of maximum resolution is to enable a field to affect all particles within a geometry collection.

2. Internal parents do not collide with geometry collections that have nonzero collision group.

Steps to Reproduce
The problems from the description are reproduced in the attached project:

1. Map 1_FieldResolution. The falling GC first passes through a max res field that sets collision group to 1, then through a strain field that breaks it completely. It should pass through the static GC, which has collision group 2, but it doesn’t because the falling GC’s leaves’ collision group did not change. If you remove the strain field, the falling GC falls through the static GC.

2. Map 2_InternalCollisionGroup. A strain field breaks the falling GC into two leaves and an internal parent with four children. The internal parent falls through the static GC, which has collision group 1. It should collide, since the leaves in the internal parent all have collision group 0.

Hello [mention removed]​

Thank you for reaching out and reporting these issues.

Also, thank you for the well-crafted repro projects.

I’ll investigate a bit and get back to you.

Regarding your comment, “I think I remember this working differently in the past”, do you have an idea of which version this should be the case? It could help me narrow down the search.

All the best,

[mention removed]​

Hi [mention removed]​, thanks for taking a look. I don’t know exactly, but I was probably last investigating this in one of the 5.4 releases. At the time I concluded that minimum resolution applies to enabled particles and their immediate children, while maximum resolution applies to the children’s children etc. That also seems consistent with the comments on EFieldResolutionType. But I’m not sure if I verified that experimentally, or just read the code.

Hello [mention removed]​

Just to let you know, I’m still investigating this.

GetRelevanteParticleHandles() does look like it should return all particles if ResolutionType == EFieldResolutionType::Field_Resolution_Maximum. Still, when checking with CVD, it’s easy to spot that the CollisionGroup has only changed for the root of the cluster. Level 1 of clustering does get changed to 1 once it breaks away from the root, but the leaves are never changed from 0.

I’ll keep you informed as I dig a bit more.

All the best,

[mention removed]​

Hello [mention removed]​

Thank you again for reaching out and reporting both issues.

Also, thank you for the repro project; it helped immensely.

I’ve tested, and, as you described, the behavior was different in previous engine versions, namely 5.1, 5.2, and 5.3.

It showed the same behavior on 5.0, 5.4, 5.5, and 5.6.

I’ve filed both issues as regressions so Epic can try to bisect.

I’ve made JIRA reports to be added to the Unreal issue tracker website (https://issues.unrealengine.com).

Epic will decide if the issues will be made publicly accessible, and the whole process can take a few days, so keep that in mind.

If/once they are made publicly available, you will be able to track the resolution by checking these links:

I’ll close the case, but feel free to reply if you have anything else to add.

All the best,

[mention removed]​