As requested by I’m splitting this into a new report.
I’m attempting to import single frames from a longer animation that sweeps thru my aim positions. In this animation I have a key frame every 10 frames and these are the single frames I need to get placed into the AimOffset.
The UE4 fbx import setting for ‘Set Range,’ when set to a Start Frame of 30 and an End Frame of 30 - will import at least two frames. Or maybe actually 3 frames since the animation time slider, when stepping frame-by-frame, will show frame 0, 1, and 2.
Many of my imported ‘single’ frames show a ton of jitter when the animation plays and in the AimOffset that uses those animations. The 2 or 3 frame loop that results from the import has a bit of motion in it - exactly the reason I really need to get a single frame import working correctly.
Even if there is an internal need for an animation to have at least two frames - it sure would be nice if import was smart enough to realize that the single frame I specify should simply be duplicated, which would eliminate all the unintended motion.
Here is another kicker. All these import ranges result in the same frame count on the resulting animation: 30 to 30, 30 to 31, and 30 to 32. I feels so ignored right now. I guess inclusive / exclusive options might be handy but regardless, 1 is not equal to 2 is not equal to 3 - but this is how the import math is working out. The animation in this case is 30 fps.
The only solution I have available is not pretty. The Maya animation must be modified so that each intended pose is frozen for 2 or 3 frames. This is not just a maintenance headache while editing the animation in Maya but this also screws up the ability to use the Maya timeline to preview a rough estimate of what the AimOffset will look like.
Hi ,
Have you tried the approach outlined on the following docs page?: Creating an Aim Offset
Essentially you would import your 30 frame animation and make 9 copies (or the total amount of aim poses) in UE4. The first copy you delete all frames after zero. The second copy you would delete all frames that come before the second pose and directly after it, leaving only the second frame. You continue this pattern until you reach the last frame.
The result being that you create the nine frames (poses) for your aim offset by taking the original aimation and deleting all unneccessary frames for each pose.
Hi .
The documented process of deleting frames is a destructive process that must be redone each time I tweak the source FBX. This makes it very error prone and creates disincentive to clean up the poses when I spot problems.
60 poses so far. Imagine a correction at frame zero of the Maya animation that globally shifts the character posture or adds keys for a joint that I previously avoided for the additive AimOffset. I need to refresh every pose in UE4.
The documented method would easily burn 30-60 minutes for each iteration. No interns around here to offload busy work on. Since all my pose imports are done with Set Range - the ‘Reimport’ option for all is complete in 5 seconds. No contest.
Always including 3 frames in my Set Range gives me length consistency across all the imports. Making sure that the Maya animation is static on those three frames - is much less trouble than using the delete frame range technique.
I thank you for the pointer and I have a workable solution. But I am reporting a found defect in the Set Range on Import feature - trying to be a good citizen with some minor bug submissions.
Hi ,
Point taken. I’ll be happy to add a feature request, but before I do how about this as a solution:
- From your 3D graphic program export entire animation X amount of times depending on total needed for your aimoffset, naming each iteration a version number. (ie. Aim1, Aim2, Aim3)
- Import using each one setting the Animation Length to “Set Range” then selecting the key frame and the next frame (0,1 10,11 20,21 etc.)
- Open each of these “jittering” animations in persona and, in the skeleton tab, delete the second frame of each leaving just the base pose.
- Now use each pose to build your aim offset.
*Now when you need to “tweak” the animation you can still export just “Aim2,” for example, and import only frames 10-11, deleting frame 11 in persona. (The keyframes/base poses being on the “10’s” every time.)
I’ve tested this so it is possible and not extremely time consuming. Let me know if this works for you or why not. If not, again, I will enter a feature request on your behalf.
Hi ,
Setting my workflow aside for the moment. I don’t understand the reluctance I’m feeling regarding a reported issue with Set Range on FBX import.
The feature currently exists and is mostly functional. As I’ve reported on AnswerHub - the resulting animation is created from the wrong frame range if the source FBX is anything other than 30fps.
For the bug reported here - if the source FBX is 30 fps then there are annoying problems with resulting animation length when the requested length of the Set Range on import is < 3 frames long.
Back to workflow…
There is great value in being able to bulk ‘reimport’ an updated FBX that feeds into dozens of UE4 poses. For any iterative content creation process - eliminating manual steps that require error prone file naming / renaming, parameter selection (set range), frame deletion and so on - is extremely useful.
One export to do from Maya (regardless of my touching 1 or all 60 poses) and one FBX file to maintain on disk rather than 60. Less hassle to manage in source control, far less risk of creating file name errors on each single pose export that you propose, and a much simpler manual process to remember and get correct later in the development cycle when I haven’t done it months.
Once a pose is added to one or more AimOffsets, Blend Spaces, or BP - it becomes a referenced asset. Doing a ‘reimport’ is very safe and painless if it correctly uses the stored Set Range. Recreating assets, which you probably are not suggesting, is more painful and can lead to a mess of redirects.
Hi ,
I have entered the following feature request: JIRA [UE-21393] “The Ability to Import Single Frames from an Animation FBX.” Until this is implemented, here is a clearer version of my resolution that you might find helpful that does away with the need of duplicate FBX files for each pose in the AnimOffset:
For example:
- Create one animation in Maya and call it: “Aim_TestHIP”
- Export one FBX with animation from Maya and call it “Aim_TestHIP.fbx”
- Now you can import numerous frame ranges from the same FBX (ie. 0-1, 10-11, 20-21, etc.)
- In the “Skeleton” tab of the resulting 2-frame animation, delete the second frame and save
- *Note: Each time you import a 2-frame animation, you will need to rename it to allow reimporting the next set or you will get a message saying the current animation already exists. Here is the end result (Again all poses exported from only 1 FBX file):
Again, I have entered a feature request. I’m posting this for as an alternate solution for you or others to use until this feature is implemented.
Thanks for the feedback,
.
you went above and beyond - this is certainly workable and a very nice refinement to what you’ve been telling me. Many thanks for all the effort and help!
Hey there, , I’m still running into this issue in 4.13, and I can’t seem to find the issue you created at issues.unrealengine.com. Any chance I could get some visibility on this?
There seems to have been a glitch with the system -I’ve resaved the and it should now be publicly visible although this only shows that the issue is backlogged. However, I just recently worked on a couple of issues where a fix that has been integrated into UE4.14 for something else seems to have fixed this issue as well.
To test this, we had an 8 frame animation with an aim pose on each frame. Before the fix the middle frames blended between the first and last frames resulting in the imported frames not matching 1:1. Importing into the UE4.14 version corrected a curve issue where each frame accurately represented each aim pose.
In short, technically this is fixed in UE4.14. Until then, the workaround I’ve illustrated above should work.