FBX Import Set Range - wrong range imported

In 4.7.6 I’m importing a root motion run cycle (step left, step right) created with ART in Maya 2015 at 60 fps for a total of 221 frames. The Maya animation is actually 304 frames long but I don’t export the first 84 frames that aren’t part of the run cycle.

I want to get two UE4 assets from this FBX file. The first is the full walk cycle that takes on the FBX file name. This works fine with all the expected 221 frames.

The second asset will be just the right step and will contain the last 111 frames. This arrangement will let me start the run cycle on either foot (montage is not an option since I need to use blend space) without requiring maintenance of additional FBX files.

COMPLAINT: it seems impossible to specify the new asset name during import since the FBX filename is used automatically. The workarounds to avoid overwriting the previously created asset are obvious but a bit of a hassle.

BUG: When importing with Set Range with Start / End Frame - the wrong start point is imported and the resulting animation is too short. I’m requesting frames 111 to 221 but am getting the last 83 frames instead of the last 111. After several import attempts I find that requesting frames 97 to 221 results in an asset using the desired 111 frames. The original import action was too short by 28 frames. I adjusted the import setting, Start Frame, by half that error (14) and got what I want. Maybe the import range code is expecting 30fps instead of the 60 fps in my animation?

CRASH: I’ve submitted a crash report from this import activity - related to start / end frames that I requested that are out of bounds.

I’ve attached an example animation fbx that can be used to demonstrate the set range import problem. Unfortunately it uses a custom skeleton but hopefully will be useful.

Regards,
David

Hey David,

Can you send me a screenshot of your import settings? I suspect you may be right about it expecting 30FPS, but I just want to see what you’ve got.

Can you send me the callstack for your crash? This way I can track it down in our system.

-Matt W.

PS - Typically you’ll want to separate out your animations into separate fbx files. Only exporting the section of timeline that you want for each.

Hi Matt. Thanks for taking a look.

I’m less sure of the 30fps expectation now. I have another walk cycle that is 149 frames long. Again I want the second half (last 75 frames) imported. I must use a Set Range of 42 to 149 to get the last 75.

This crash is using the settings shown in the screen capture. I left the End Range at zero expecting it to go to the end of the animation.

Posting followups as ‘answers’ since they are too long for the comments section.

Can you paste your callstacks into a .txt file (using notepad or notepad++) and attach them? Callstacks lose all formatting when they are pasted into Answerhub and can be very difficult to read.

Is there a reason that you don’t want to export the animations to their own individual fbx files? You can do the cutting on export by restricting your timeline to the range that you want. This would allow you to name the fbx files uniquely and would alleviate most of your import problems.

Cutting from the UE4 crash reporter and pasting to notepad strips out the line breaks too. This time I submitted the crash I can reproduce today with the following description to help you locate in the system:

Set Range: 111 to 0

Description: FBX Import Set Range - wrong range imported. AnswerHub QuestionID: 221430

Exporting from ART at 60 fps is too painful with the automatic addition of _60fps to the filename, with the incorrect frame range calculation used on export from ART, the stored values in start/end frame are usually wrong, and with tendency of ART/Maya to refuse to overwrite old exported fbx files as I need.

Each time I tweak a walk cycle - doing two exports correctly is difficult. Much easier to do one full clean export and simply press ‘reimport’ on my saved UE4 assets which nicely remembers the starting and ending frame I’m interested in.

So, if ART export at 60fps worked correctly I’d be more willing to maintain 2x the number of fbx files to deal with this import range bug. If UE4 BP gave us a way to specify the starting frame when playing an animation or blend space then it would be completely unnecessary to split out the second half of the walk cycle to allow the character to start off on either foot. Taking this further, if blend spaces could be used within montages and if blend spaces could be nested - my productivity would probably be higher than it currently is and import range would perhaps be less important.

There would be no bug reports in software if all users worked the same way. I’m not going to intentionally crash my project again for this bug report - you have the crash file in your system, the example fbx and instructions needed to reproduce the problem.

I have entered a feature request for the ability to apply new names for anim sequences upon import while also preserving their unique import settings(frame range, etc) for any further re-imports. This is entered as UE-15401.

I have also entered the crash into our bug system as UE-15397.

I have been unable to reproduce the “wrong import range for 60fps anims” bug that you had originally imported though.

Thanks Matt and sorry for getting a bit grumpy back there.

On UE-15401 - I believe the unique import settings are being saved as entered - my settings have never been lost. But they are always applied incorrectly on the actual import / reimport.

I’ve slapped together a new 60fps fbx that should make it more obvious when the resulting frame range is wrong. Character can use the standard skeleton on import. The first 100 frames has the character sliding across the floor to a prep position. The second 100 frames has the character doing a flip to return to the starting point on the floor.

  1. Import the entire frame range, resulting in 201 keyed frames. Play animation while viewing from the side.

  2. Open up Reimport | Import Settings and select Set Range. Set Start Frame to 0 and End Frame to 201. Reimport. The asset is still 201 frames long and is OK.

  3. Set Start Frame to 10. Reimport. The asset is now 181 frames long, shrinking by 20 instead of 10. The asset should be 191 frames but isn’t.

  4. Set Start Frame to 0 and End Frame to 50. Reimport. The asset is now 101 frames long and if played contains the entire first half (the prep frames) of the fbx. It should only contain the first 51 frames.

  5. Set Start Frame to 100 and End Frame to 201 (the goal is for the asset to just include the flip). Reimport. UE4 4.7 & 4.8 Preview one will claim the reimport was successful. However reimport has silently failed and left you with the first 101 frames (from Step 4).

IF the Start Frame or End Frame is greater than 50% of the fbx frame count the reimport will fail. I believe this is because the user values in Start & End Frame are multiplied by 2 when processed. Every frame I trim from the fbx on reimport causes a loss of 2 frames. So setting a Start Frame to 100 on this fbx results in a zero frame import.

Hope this helps.

Regards,
David

link text

Concerning 15401, I added the bit about saving the settings to ensure any engineers working on it would understand the expected functionality. The main request there is the ability to apply a unique name.

I was successfully able to to repro with this example file. Thanks for submitting that. I have entered UE-16027

-Matt W.

Can I get a status update on UE-16027 please? I’m still running into the problem in 4.9, plus a related frame import setting is causing grief while working on AimOffsets.

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.

David

Hey David,

There was an attempted fix that was reverted as it was prone to issues. It is still under investigation as to the best solution.

As for your other concerns, could you please throw that in under a new AnswerHub thread? My time is split a lot lately and I’d like to get one of our other support technicians onto the issue.

-Matt W.

Hi. Same issue here. It’s frustrating because I think I have finally figured out how to get animation into Unreal and I’m learning about montages and whatnot, but I just cannot get the start and end frames I desire into my imported sequences.

Like the above poster, I also have one long continuous animation exported as a single FBX file and am importing each frame range one-by-one as individual sequences, but I’m having to guess my start and end frames and reimport the animation, over and over and over, to get the results I need.

I sure do look forward to a fix.

Wait… I may have figured out what I did, and it’s a bonehead move. When I changed my project setting from 24fps to 30fps in my animation software, it added a bunch of frames to my animation (time stretch) in order to keep my timing the same, and I did not write down the new sequence start and end frame numbers, durrrr. It seems to be working ok now. Sorry.