Hello,
I was planning using the UMetaHumanPerformanceExportUtils::ExportAnimationSequence function to run an export of the MetaHuman performance into an Animation Sequence, but in this function there is no check if animation sequence already exists in Game Content based on package Path and it try to create a new one on each run (and error if the animation asset already exists)
It can be problematic with some pipeline to iterate on existing animation sequence with this function.
Is there some plan to support this workflow with this function; like checking if the package already exists and reuse existing assets to apply new animation data?
This export animation sequence is not a big function to reimplement, but things begin to be more complicated with RecordAnimationSequence function that is not public, maybe an alternative would be exposing this last one as public function?
if you have other suggestion to export animation from MetaHuman Performance i am also open to any feedback on this workflow.
Thank you!
Ronan
Hi Ronan,
Thank you for the question - I’m not aware of any specific changes in this area, however I can feed this back to the engineering team for their input.
Depending on the pipeline you are building, I wonder if automation using Python could help - there are some example scripts in the Content directory of the MetaHuman plugin. You would still need to check for the asset already existing, but perhaps this gives you more flexibility in the meantime?
Thanks,
Mark.
Hello Mark,
Thank you for the quick feedback.
I have checked the python script part of Content of MetaHuman plugin and it was definitively helping to bring me to the right direction to run performance pipeline.
I choose the c++ path because it was more convenient with our existing pipeline to browse audio source files and to generate audio performance animation based on them.
I have everything working fine on my side in c++ and running this in commandlet at the moment.
There is only the animation creation issue at every run of the commandlet, that I think, could be adjust if we want to avoid divergence from existing code in Unreal Engine.
Hi Ronan,
I had an opportunity to speak with the engineering team about this more last week.
The existing function of UMetaHumanPerformanceExportUtils::ExportAnimationSequence takes in UMetaHumanPerformanceExportAnimationSettings which contain AssetName and PackagePath. Within your script are you able to could check if the assets already exists; you can then either delete them prior to exporting, or, if you want to keep all the references, re-name the original one, create a new one and delete the old one.
While this means more for you to implement, it means you retain full control over the behaviour you need, before you call ExportAnimationSequence. Would that work for you?
Mark.
Hello Mark,
Thank you for the follow up on this topic.
the 2 scenarios you are suggesting will not work great if we begin to have some data table that reference this animation sequence for example.
I would also be more confident without having to play with redirector references and if we could just push this data in place of existing ones.
The workaround of having UMetaHumanPerformanceExportUtils::RecordAnimationSequence public is working well so far and i can only override the part for asset creation.
Ronan
Ah, I see.
In that case I can feed this back to the engineering team for consideration in the future.