I have a custom metahuman in an empty scene. When trying to render Object ID, unreal crashes on “Assertion failed: VertexFactory && VertexFactory->IsInitialized()” under these circumstances:
I render only an Object ID pass with no Beauty.
I render Object ID together with Beauty (in multilayer exr) and I have a Sky light with Real Time Capture turned on.
It only happens with some metahumans and only when opening a new unreal instance so it’s quite difficult to debug.
Furthermore, when rendering only the Object ID, hair strands are always missing in the render.
Would you be able to provide the crash dump and console log so we can take a look at those, please?
You’ve mentioned that it only happens with some MetaHuman characters - do these characters share any common characteristics or customizations that might be relevant here (e.g. how have they been created etc)? Have you been able to replicate the problem with any of the preset MetaHuman characters?
I have attached the relevant crash and console logs. I was able to narrow down the issue to the translucent material used on the clothes of the character so I will continue my investigation from there. (Applied to a simple sphere, it renders fine though)
Right now, the bigger problem remains that the MH hair strands are missing from cryptomatte when rendered without the beauty in exr.
Hi, I managed to sort out the crash eventually but I’m still unable to render strands in a separate ObjectID pass (with no beauty) in .exr. Below is an example project, in the Content folder you can find “TestQueue” which has an exposed variable “Beauty?”. Toggling it on and off should give you the .exr renders to compare.
Hi, The issue is that the ObjectID pass uses the hitproxy rendering path. This path is not very well supported by strands rendering, and only works when the main rendering happen at the same time. The reason is that the strands interpolation/update happen only on the main rendering view, not on the proxy views.
Though, you can try to change /Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp line 4281 from:
if (Views.Num() > 0 && !ViewFamily.EngineShowFlags.HitProxies)to