How are we expected to create Metahuman Collections and Character Instances? We’re trying to avoid the legacy pipelines and opt to use the modern pipeline instead. We can see that there are assets but we can’t make them. Are these expected to happen on assembly in the creator? We can’t find any documentation and reading the code is causing some confusion between the modern and legacy pipelines so we’d appreciate some insight.
Update: I manually assigned the modern pipeline to one of the legacy options in Project Settings and a collection and instance now generate. However, attempting to open the CharacterInstance makes the engine crash.
Update 2: Opening the instance is possible but very unstable, crashes on getting the face and body meshes in the subsystem. I’m trying to use the instance/collection actor factory but it doesn’t appear. I might need to successfully open the instance for the factory to work?
Update 3: The Instance is constantly generating redirectors that cause crashes to occur, and the face mesh won’t load its materials correctly with instanced materials. There seems to be mistakes in the code. My current thoughts are this is not ready to be used and the legacy are intended for use.
[Attachment Removed]
Hi Austin,
Although the code for MetaHuman Collections and Instance assets did ship in Unreal Engine 5.6/5.7, it was intentionally hidden from users as it does not yet represent usable user facing capabilities. So, for the moment, you are not expected to create them.
The assets and modern pipeline are part of some ongoing development work that will be exposed as experimental in a future engine version, as part of the continued evolution of MetaHuman capabilities.
While the existing MetaHuman Creator pipelines are labelled as ‘legacy’ we expect them to be supported for the foreseeable future - at least until any outcomes from the modern pipeline work have been more established in product use cases. You’re seeing what might be described as pre-emptive naming on our part!
We’re curious how you stumbled across these - are there capabilities that you’re looking for that aren’t currently provided by the existing pipelines?
Thanks,
Mark.
[Attachment Removed]
> that definitely shot me in the foot the past few days.
I’m sorry for this
I hope it hasn’t sent you too far down the wrong rabbit hole.
> I’m trying to understand the functionality of the legacy pipelines.
These pipelines are used when you assemble a MetaHuman Character in Unreal Engine. The assembly process is responsible for taking the internal representation of the character (in the MetaHuman Character asset) and creating a network of new assets (AnimBP, Skelmesh, etc) that can be used to put the character in a level. A MetaHuman Character can be assembled into a few different forms depending on the use case, mainly Cinematic and Optimized.
At the moment, the pipelines are not easily configured by a developer and are instead only exposed through the interface in editor (and Python API endpoint). Unfortunately these pipelines do not directly support runtime character creation and assembly.
We are exploring how we might open this up over time, enabling a developer to customize the assembly graph and give more control over the final network of assets that is created. I suspect it is likely the start of this repositioning that you are seeing in the code however we can’t commit to any particular timeline for progress towards this at this stage.
Mark.
[Attachment Removed]
Hey Mark,
Okay that makes sense, that definitely shot me in the foot the past few days. We’re in pre-production and since there’s no docs I’ve just been reading the source code to learn and understand what your workflow is. I’m new to MetaHumans. I assumed that the legacy pipelines were for prior versions and that the `Default Character Pipelines Class` specified in the project settings is what should be used from naming. So I sifted through code and that’s how I stumbled on collections and instances.
It sounds like if it’s not even in experimental then we can’t rely on this anytime soon. I’ll do a deep dive into the legacy pipeline and will update here or make other posts if needed.
[Attachment Removed]
I actually do have another question for you Mark. I’m trying to understand the functionality of the legacy pipelines. However, the modern pipeline functionality shares the same derived classes and they bleed into each other. This makes it hard for me to discern what is or isn’t possible with legacy. Is there some way I can discern between the two?
Examples:
I’m assuming I can’t utilize `UMetahumanPipeline::AssembleItem`? But it appears the overrides are in use. Hard to tell.
[Image Removed]I can’t use `UMetaHumanCharacterPipeline` to assemble Character Instances.
[Image Removed]`UMetaHumanDefaultPipelineBase::AssembleCollection` can’t be used?
[Image Removed]
Overall I’m struggling to find what I need to know and cut out the noise about unusable parts of the codebase. I am specifically interested in how the legacy pipeline supports runtime assembly for runtime character creation, wardrobe items, customization, etc. If you have any details (specific function calls/types?) on that it would help a lot.
[Attachment Removed]
Just to add to what Mark said, the only workflow for assembling MetaHumans that’s supported at the moment is to use the Assemble button in the MetaHuman Character editor, which gives you all the assets and an actor blueprint on disk.
We’re working towards supporting runtime assembly and the code you see is the foundations we’re laying for this. Sorry if the comments are misleading. As Mark says, they describe the future state we’re aiming to reach, rather than the current state of things.
[Attachment Removed]