FBX-imported assets' AssetImportData does not properly load in 4.9

Steps to reproduce:

  1. Drag a FBX into the content browser, import as Static Mesh, for example
  2. Right click on the new asset, go to bulk edit via Property Matrix
  3. Notice that the AssetImportData is of type FbxStaticMeshImportData, change some setting like LODGroup to something like LevelArchitecture
  4. Save that asset. If you open the .uasset file via hex editor you will notice that it has the .fbx file path, and your set LODGroup as a string inside it. So the AssetImportData is properly saved (I guess ?)
  5. Right click on the asset and choose Reimport. Notice that it properly reimports with no prompts.
  6. Restart the editor
  7. Right click on the asset and bulk edit property matrix again. Notice that the AssetImportData has now been loaded as a generic EMPTY AssetImportData.
  8. Try reimporting the asset. It will ask you for the fbx file path because of the EMPTY AssetImportData. Click cancel.
  9. Saving the asset now would permanently overwrite the good FbxStaticMeshAssetImportData with an EMPTY generic AssetImportData in the .uasset file. The original fbx path and import settings would then be permanently lost.

This is very BLOCKING as now i am unable to save any asset that came from a FBX file for the fear of losing the reimport data !
I did some investigation and the original FbxStaticMeshImportData seems to be properly deserialized, but the pointer to it is then overwritten to a generic AssetImportData from an ‘archetype object?’ in this callstack (got via data breakpoint):

>	UE4Editor-CoreUObject-Win64-Debug.dll!UObjectProperty::SetObjectPropertyValue(void * PropertyValueAddress, UObject * Value) Line 66	C++
 	UE4Editor-CoreUObject-Win64-Debug.dll!UObjectPropertyBase::InstanceSubobjects(void * Data, const void * DefaultData, UObject * Owner, FObjectInstancingGraph * InstanceGraph) Line 35	C++
 	UE4Editor-CoreUObject-Win64-Debug.dll!UStruct::InstanceSubobjectTemplates(void * Data, const void * DefaultData, UStruct * DefaultStruct, UObject * Owner, FObjectInstancingGraph * InstanceGraph) Line 1664	C++
 	UE4Editor-CoreUObject-Win64-Debug.dll!UObject::InstanceSubobjectTemplates(FObjectInstancingGraph * InstanceGraph) Line 1958	C++
 	UE4Editor-CoreUObject-Win64-Debug.dll!UObject::PostLoadSubobjects(FObjectInstancingGraph * OuterInstanceGraph) Line 783	C++
 	UE4Editor-CoreUObject-Win64-Debug.dll!UObject::ConditionalPostLoadSubobjects(FObjectInstancingGraph * OuterInstanceGraph) Line 812	C++
 	UE4Editor-CoreUObject-Win64-Debug.dll!UObject::ConditionalPostLoad() Line 720	C++

As it’s some weird linker issue I do not have the sufficient knowledge to completely find the cause of the problem, please assign someone to investigate this.

ue4 4.9 github branch, commit 8f66c95f1d88ed4560258e35851a9974a48c6581

Hi rajkosto -

Thank you for your report. I was able to confirm and reproduce this issue internally and have entered a bug report, UE-19246 for reference. As we investigate a solution, I will keep you informed here.

Eric Ketchum

Can you retest after https://github.com/EpicGames/UnrealEngine/commit/3bd9c52d03e61a9901436ad5fe20e1c3ca4fb299 ?

Hello -

This fix is currently in testing to be implmented into the 4.9 release branch, but you can test it by looking to this Master Branch commit,

https://github.com/EpicGames/UnrealEngine/commit/a02190f3ea7612d719925d5b632226fe868d0f48

Thank You

Eric Ketchum

Which was integrated into 4.9 here: https://github.com/EpicGames/UnrealEngine/commit/6b7ca8cd7fee457d38b577dcf88721a1651ec488 :wink:
The commit i mentioned came after it.