This causes the ObjectId pass in MRQ to fail to distinguish between materials in the resulting Cryptomatte file.

It looks like FGeometryCacheSceneProxy doesn't implement CreateHitProxies so it's falling back to the default implementation:
HHitProxy* FPrimitiveSceneProxy::CreateHitProxies(UPrimitiveComponent* Component,TArray<TRefCountPtr<HHitProxy> >& OutHitProxies

Which isn't aware of component and material indexes. So FGeometryCacheSceneProxy needs to override this function and add multiple HHitProxy's to OutHitProxies, one per section per material.

Steps to Reproduce

1. Create a Alembic Cache (Geometry Cache) that has multiple materials in it.
2. In the Level Viewport go Show > Developer > Hit Proxies
3. Import the Alembic Cache as both a Skeletal Mesh and a Geometry Cache
4. Use a color picker to closely examine the colors shown by the Hit Proxy, the Skeletal Mesh will have one color per material (but may be very close in visual color, so color picking is needed to determine). The GeoCache will have the same value for everything.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to AnswerHub just mention UE-125251 in the post.

Login to Vote

ComponentTools - Editor - Datasmith
Affects Versions4.27
Target Fix4.27.2
CreatedSep 3, 2021
UpdatedSep 8, 2021