Asset importing troubles, w/ repro steps

Hi,

I’ve been having a lot of difficulties with the asset importing pipeline, so to try to help make the editor more solid I’ve put together some repro steps, along with a description of the biggest issues I’ve run into.

Repro instructions created with: UE4 4.9.1 / Linux

  1. Create a new UE project
  2. Drop the attached .blend and .fbx files into subdirectory of Content
  3. Import the attached Test-LOD0.fbx file, selecting these options:
    Import Uniform Scale: 0.01 +
    Uncheck Import Materials/Textures (I think unselecting import mats doesn’t matter, but it’s what I did).
  4. Drag the resulting static mesh into your scene. You should have a (2m)^3 cube. Note in the details for the static mesh actor that it has a single material slot.
  5. Right click it in the content browser and select “Import LOD/LOD1”, and select the Test-LOD1.fbx file. It’s actually the very same .fbx file as LOD0. Both have a single material named MI_Material0_skin00

The bugs I encounter in 4.9.1:

BUG 1 -->> Note that in the details panel for the Test-LOD0 static mesh actor, the “Materials” section now has two entries. I think there should be only one: it’s the same material with the same name in both.

If you want to argue this is intended, I have a stronger argument in my pocket to use :P. Go back to “Import LOD” and RE-import the same Test-LOD1 object over LOD 1 again. Now there are THREE materials slots, where there’s really no possible case that the two LODs have 3 materials between them. I can get as many there as I want - a dozen, if I keep re-importing the LOD.

BUG 2 -->> Double click the static mesh to open it and view the details panel. Note that viewing “Base LOD” looks fine, where if you toggle the view to “LOD 1” with the drop down, the object disappears. Yet it was the same object we imported to LOD1.

I believe this is because the LOD-level import does not abide the “Import Uniform Scale” parameter. If in the details panel for the mesh, you change the “Build Settings / Build Scale” for LOD1 to be 0.01/0.01/0.01, save, and exit the SM editor, it’ll ask you “Would you like to apply the level of detail changes to Test-LOD0?” Select “Yes”. Often the editor crashes for me at this point, but if you get through that, re-open the SM again, and LOD1 now has the right scale and looks the same as LOD0. It loses the scale every time you re-import it though, whereas LOD0 preserves the import settings each time you re-import.

I’ve also, randomly, seen LOD1 be rotated 90deg with respect to LOD0 for unknown reasons.

BUG 3 -->> Doing much asset importing makes the editor very crash-prone. It’s mostly stable for me outside asset importing, but if you re-import these objects a number of times, opening up the SM editor each time, it doesn’t take too long before it crashes. Potentially this is a Linux-specific bug, though I haven’t tried it on Windows to see. It’s random, so hard to give an exact repro case, but it’s usually within 5 or 10 minutes of importing things for me.

Possible Bug 4 → Somewhere, and I can’t find it just now, there’s a setting to auto-import the .fbx files when they change on disk. This isn’t enabled in this project as i can’t find it. However, in my main project, this works OK for LOD0, but LOD1+ don’t work, and I have to re-import them by hand each time I change them. This is a more minor issue, but I do have to remember to keep doing it.

Attached is a Test.zip file with the .blend and .fbx files.

Hope this helps! BTW even though I’ve run into bugs, I appreciate all that this is doing for me behind the scenes. It’s a very complex thing, no doubt. There’s a lot of good stuff happening.

link text

Hi pvz2015 -

Bug # 1 is a known issue currently entered in the system as UE-1394.

Bug # 2 is a known issue currently entered in the system as UE-12468.

Bug #3 is a little more difficult as we are not seeing the sort of crashing you are experiencing. We are tracking a few importation issues with Linux systems, one specifically for Morph Target meshes and one for combined meshes. It is possible that you are actually experiencing one of these issues, reported as UE-14084 and UE-14609. I have linked your information to both issues just in case either do fit you issue.

For Possible Bug #4, this is not currently implemented. I can put in a Feature Request for this issue for you to see about extending this issue.

Thank You

Eric Ketchum

OK, thank you very much Eric. Sorry about the dupe on #1 and #2; I’m new enough to UE use I’m not on top of what’s already known, or even where to go about looking.

Whatever is up with the the crashes I see, they are not specific to mesh import in particular. I see them just importing bitmaps, for instance. I’ll attempt to collect a stack frame, if nothing else just for my own curiosity.

Glad to hear #1 and #2 are on the radar!

For whatever it may be worth, I captured a stack frame, surrounding asm, and register values during one of the import-crashes I see. I’ve looked at a few, and the stack frames are always very similar.

I’m not running a pure debug build of the engine, so couldn’t see symbol values, and neither am I familiar with the UE code, but it looks to be happening in GUI code, which is consistent with the crashes I see: they are always when I take some GUI action, like closing the SM editor window, or dragging something into the main view after asset importing.

Here it looks like register RDI contains a non-pointer value, and is being indirected. It is read from an offset into a structure pointed to by RBX, and RBX does appear to contain a good pointer. Eyeballing the C++ code that matches this asm, I’m guessing rbx is the ‘this’ pointer, and rdi with the bad pointer is the DelegateInstance.

What a DelegateInstance is or why it’s a bad pointer during deletion, I have no idea.

Attached: Stack.zip.

link text

Hi pvz2015,

For Bug#3, I can’t reproduce the crash as of yet with your test assets on my Windows machine. I’m going to see if one of our Support guys can test on the Linux machine to get the crash.

Also, to clear up any confusion, you can set the auto-reimport option in the Editor Preferences > Loading and Saving > Auto-Reimport.

I’ve submitted UE-22447 for BUG #3 with the LOD import causing issues. While I didn’t get a hard crash on my end I did get the editor to freeze when this happened. Once there is a resolution I’ll post back here with any updates.

Thanks!

Great, thanks Tim!

If I knew the code better and had any idea where to find that pointer before the crash, I could find what’s causing it to be bad during deletion using a data breakpoint to (hopefully) catch something in the act, since it is relatively easy for me to duplicate the issue. I don’t know my way around the code well enough to know where to find the object in advance, but if it would help anybody there, I can do that if given some instruction about how to chase down the object appearing in the stack trace I attached above.

Thanks for the pointer to auto-reimport.