Path consistency issues with imported files

I’ve found a rather fascinating path issue with the asset system. It seems to incorrectly process paths for the asset’s Source File Path field. My best repro steps, plus explanation, follows:

Make sure UE4 is installed on C: in its normal location in Program Files. This may not work with a built copy. Create a project at c:/work/uproj, with a .fbx file at c:/work/uproj/art/model.fbx. Import the file into the project. Modify the file in a very obvious way. Now right-click the file and choose “re-import”. You’ll note a message saying it has re-imported successfully, but no actual re-import takes place.

Opening the output log gives better information:

LogEditorFactories: Performing atomic reimport of [C:/../../work/uproj/art/model.fbx]
LogFbx:Error: Call to KFbxImporter::Initialize() failed.
LogFbx:Warning: Error returned: Corrupted or invalid file.
LogEditorFactories:Warning: -- import failed

And if you look in the model info, you’ll see Source File Path is set to ../../../../../../work/uproj/art/model.fbx.

Removing the first two sets of …/, leaving ../../../../work/uproj/art/model.fbx, will actually make it work - for exactly one re-import, at which point it’s set back to the broken value.

It seems there’s a few bugs here:

  • UE4 is incorrectly processing the file paths for the project. Instead of giving a path relative to a sensible location - either relative to the .uproject file, for example, or the asset, or even arguably to the binary’s working directory - it’s doing something relative to the binary’s working directory, but adding a pair of extra …/'s to the front. This leaves the file with an invalid path.

  • The engine does check to see if the file exists before attempting to read it. On failure, it’s supposed to pop up a dialog asking you for a new file. However, this check is broken - it ignores extra …/'s prepended to the beginning of the filename, and the FBX loader does not, meaning that it does not serve as a functioning check of whether the file will be read properly.

  • While the engine recognizes that the FBX hasn’t loaded properly - see the output log - it does not propagate this error code up to the UI, and the UI then assumes the file was loaded properly, resulting in a very misleading status message.

I can attempt to track this down further if needed for fixing, but hopefully this is enough to fix those bugs.

Hi ZorbaTHut,

Thank you for the detailed information. As you state, I have reproduced this behavior when the project is created immediately off of the C drive. I do not experience the issue when the project is in its default location in My Documents.

I have reported this issue.

Thanks

I believe I’m having the same issue (which is kind of troubling almost 1 year after the OP).

LogEditorFactories: Performing atomic reimport of [G:/../../../Eternal/Media/Maya/FBX/MetalFloor.fbx]
LogFbx:Error: Call to FbxImporter::Initialize() failed.
LogFbx:Warning: Error returned: Unexpected file type

The FBX file is from MayLT and doesn’t have any issues when originally importing. The actual file is:

G:/Eternal/Media/Maya/FBX/MetalFloor.fbx

I have no idea where all those extra …/'s come from. Please help.

Hi cybereality,

Please open a new post in the Bug Reports section with this information. A lot has changed in the editor since April 2014, and we want to make sure we address this with as much current information as possible. Please feel free to link back to this post in your new post. Thanks!