BlenderTools
BlenderTools copied to clipboard
Send to Unreal - Animations featuring custom property keys (morph target animations) fail to import to Unreal
Hello!
First off, thank you for making this amazing tool. It has been endlessly helpful in resolving a myriad of issues. I cannot praise it enough and have recommended its usage to my friends.
I have a particularly annoying issue to write down, as, I have not much to add here to help, but will add what I can.
I will add a more summarized version (inc. version numbers and error log) at the bottom of this post.
The issue: Sending an animation to a project for a skeleton asset, where the animation uses custom property fcurves for morph target/shape key animations just, does not work, for UE5. I do not know why.
Everything else works absolutely fine. peachy. Except pushing an animation that uses custom property keys to drive morph targets (export custom property fcurves) to a project freezes my blender and unreal up completely, until the RPC response timeout triggers and stops everything.
Unreal freezes utterly and requires a hard shutdown from task manager. Blender only comes back because of the timeout.
These are quite large animations, with like, fairly long durations (1500ish frames), baked animations (to make sure animations with complex constraints properly go into unreal) then many many keys beneath it for many properties (facial expressions, etc), but we're talking about 20 properties, max. They go in fine without the keys enabled. But enabling them? No way.
I have left my computer on overnight previously while in this frozen state to see if it's just really slow while exporting, with my export timeout value set ridiculously high, only to have no resolution to this issue.
To be clear, blender CAN export these animations, custom properties and all. Just not push them to Unreal 5.
Solutions attempted: It works fine with Unreal 4.27, but I want to move into the future, use all the cool stuff UE5 has, it's awesome. So, persisting:
-
Use old versions of Send to Unreal? Nope. Want to use UE5. Earliest version that uses UE5 also did not work. Same error. Again, UE4 works fine, but want to move on.
-
Recreating skeletons of all variety (A few chains long, humanoids, humanoids with multiple limbs) then using very simple short animations with just a few morph targets, then exporting the animation to project with custom property fcurves. Failure.
-
Something wrong with paths? RPC servers and pushing to project works okay following testing with meshes and non-custom property animations. Nothing to indicate problem with that. Paths 100% good.
-
Changing naming conventions, potentially the root bones are at issue, or maybe the morph target names? Nope, all good there, custom property names match the targets, and changing root bone name does nothing. No good. Worth a try.
-
Grooms being enabled or disabled. Nothing. Toggling import UI? Nothing either. Unreal freezes on clicking import. No change.
-
Export animation to folder using add-on THEN import animation to project seperately. No good; curves for morph targets do not import with the animation. Attempting to import exported json graph for curves does not import. Unreal fails to read it. Think that's meant to go in together with the animation anyway? In any case, not sure how that's meant to work, but despite my research, couldnt figure it out. Failure.
-
Fuck it, windows system reset with a clean install, then downloaded Unreal 5.2.1, then downloaded a standalone version of Blender 3.5.1, then downloaded the add-on, to attempt to fix this issue, retrying with aforementioned meshes. No success.
-
Recently tested 2.4.2. No change. Same problem.
And that's it. I wish I could give you more than this but I've been bashing my head looking for some kind of solution everywhere. I hope you might be able to help. Sorry for the trouble.
Steps to Reproduce the Problem: Send any animation with export custom property fcurves enabled to Unreal 5. Error log from just after clicking push to project (animations enabled only, pushed to a skeleton already imported): FBX export starting... 'C:\Users\jamie\AppData\Local\Temp\blender\send2ue\data\AnimSequence\Anim07_Guy_08.fbx' export finished in 90.5781 sec. Traceback (most recent call last): File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\factory.py", line 221, in run_function_remotely return remote_function(*args) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1122, in call return self.__send(self.__name, args) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1464, in __request response = self.__transport.request( File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1166, in request return self.single_request(host, handler, request_body, verbose) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1182, in single_request return self.parse_response(resp) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1354, in parse_response return u.close() File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\client.py", line 55, in close raise exception(exception_message) TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds.
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\operators.py", line 71, in modal raise error File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\operators.py", line 61, in modal function(*args, **kwargs) File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset UnrealRemoteCalls.import_animation_fcurves( File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\factory.py", line 248, in wrapper return rpc_factory.run_function_remotely(function, args) File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\factory.py", line 226, in run_function_remotely raise exception.class(stack_trace).with_traceback(call_traceback) File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset UnrealRemoteCalls.import_animation_fcurves( TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds. File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\unreal.py", line 1548 Error: Python: Traceback (most recent call last): File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\factory.py", line 221, in run_function_remotely return remote_function(*args) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1122, in call return self.__send(self.__name, args) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1464, in __request response = self.__transport.request( File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1166, in request return self.single_request(host, handler, request_body, verbose) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1182, in single_request return self.parse_response(resp) File "D:\Program Files\Blender\blender-3.5.1-windows-x64\3.5\python\lib\xmlrpc\client.py", line 1354, in parse_response return u.close() File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\client.py", line 55, in close raise exception(exception_message) TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds.
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\operators.py", line 71, in modal raise error File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\operators.py", line 61, in modal function(*args, **kwargs) File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset UnrealRemoteCalls.import_animation_fcurves( File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\factory.py", line 248, in wrapper return rpc_factory.run_function_remotely(function, args) File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\rpc\factory.py", line 226, in run_function_remotely raise exception.class(stack_trace).with_traceback(call_traceback) File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset UnrealRemoteCalls.import_animation_fcurves( TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds. File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.5\scripts\addons\send2ue\dependencies\unreal.py", line 1548
OS: Windows 10 Addon Version: Send to Unreal 2.4.1 and 2.4.2 Blender Version: Blender 3.5.1 standalone + 3.6.4 Unreal Version: Unreal 5.2.1
Any help, from yourselves, or anyone that happens to read this and see something I missed, would be appreciated. Thank you.
Hi @Ignorum, sorry to hear you are having issues. I tried to reproduce the issue using the test files used in the test suite.
I am using:
blender 3.6.4
Unreal 5.3
send2ue 2.4.2
And the example using custom properties to drive morph targets from the docs still is working for me.
Don't know what the difference is between what your doing, but I assume the number of keys could possibly be the issue, I just haven't tried it on that many keys yet.
Here is the file I just tried. Just need to run send to unreal and it should be set up to send over the animated custom properties. morph_target_driven_by_costum_property.zip
Maybe you can test this/modify it and see if you can make a file that reproduces the issue you are seeing. Thanks!
Hey @jamesbaber1, thank you for responding so quickly! I know you must be busy and I appreciate the fast response.
Thanks for this file here! I've been testing it, but unfortunately I keep getting the same issue. Here's what happened.
Testing: Tested using: Blender 3.6.4 Send to Unreal 2.4.2 Unreal 5.2
I made a fresh test third-person template project to work with, and hit send to project in blender.
Something puzzling; It works fine. When there's just one property being animated it seems to be completely okay. So I deleted the meshes and anim from the project files to keep testing.
I added some new shape keys and custom property keys myself, added drivers, imported the model to incorporate the new morph targets in the mesh (fine as usual), then tried sending the animation again.
Same issue; freezing. Extended the timeout limit to see if it just needed time, but after 15 minutes, it seems to just be stuck.
Tried adding just one set of keys at a time and reimporting to see if that'd work, but not only did it not work, that would also be a huge timesink if it did, hahah.
Files: Here is my edited blend file with the animation that failed to send, maybe it might work for you? morph_target_driven_by_costum_property_EDIT.zip
I've also included a mesh and skeleton that I made a while ago that has a basic animation that fails to import like the above, just if it helps at all. AlienModel.zip
Again, thanks for the fast response. Error log from testing (seems the same error as before but maybe your eyes will see differently):
FBX export starting... 'C:\\Users\\jamie\\AppData\\Local\\Temp\\blender\\send2ue\\data\\AnimSequence\\third_person_walk_01.fbx'
export finished in 0.7812 sec.
Traceback (most recent call last):
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\factory.py", line 221, in run_function_remotely
return remote_function(*args)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1122, in __call__
return self.__send(self.__name, args)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1464, in __request
response = self.__transport.request(
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1166, in request
return self.single_request(host, handler, request_body, verbose)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1182, in single_request
return self.parse_response(resp)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1354, in parse_response
return u.close()
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\client.py", line 55, in close
raise exception(exception_message)
TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\operators.py", line 71, in modal
raise error
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\operators.py", line 61, in modal
function(*args, **kwargs)
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset
UnrealRemoteCalls.import_animation_fcurves(
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\factory.py", line 248, in wrapper
return rpc_factory.run_function_remotely(function, args)
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\factory.py", line 226, in run_function_remotely
raise exception.__class__(stack_trace).with_traceback(call_traceback)
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset
UnrealRemoteCalls.import_animation_fcurves(
TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds. File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\unreal.py", line 1578
Error: Python: Traceback (most recent call last):
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\factory.py", line 221, in run_function_remotely
return remote_function(*args)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1122, in __call__
return self.__send(self.__name, args)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1464, in __request
response = self.__transport.request(
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1166, in request
return self.single_request(host, handler, request_body, verbose)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1182, in single_request
return self.parse_response(resp)
File "C:\Users\jamie\Documents\Projects\MiscProjectRelated\Blender 3.6.4 standalone\3.6\python\lib\xmlrpc\client.py", line 1354, in parse_response
return u.close()
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\client.py", line 55, in close
raise exception(exception_message)
TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\operators.py", line 71, in modal
raise error
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\operators.py", line 61, in modal
function(*args, **kwargs)
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset
UnrealRemoteCalls.import_animation_fcurves(
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\factory.py", line 248, in wrapper
return rpc_factory.run_function_remotely(function, args)
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\rpc\factory.py", line 226, in run_function_remotely
raise exception.__class__(stack_trace).with_traceback(call_traceback)
File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\core\ingest.py", line 30, in import_asset
UnrealRemoteCalls.import_animation_fcurves(
TimeoutError: The call "import_animation_fcurves" timed out because it hit the timeout limit of 60 seconds. File "C:\Users\jamie\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\send2ue\dependencies\unreal.py", line 1578