Hello, I am currently checking out Unity 5 as a replacement of my custom engine, mainly because of C# scripting and the editor, but so far I have run into many problems as soon as it is gets more complex.
Unity choking on huge FBX files:
When I try to import a 945 MB FBX file (slightly more than 375000 nodes in the model hierarchy), my own engine needs 20 minutes to successfully process everything. I had to let the Unity 5 editor run over night because a few hours were not enough, only to find out the next morning that it has given up. The imported model was empty and the console mentioned some problem about file id boundaries. While the FBX file is complex, it is perfectly valid, so the error lies in Unity itself. I would totally understand this to fail in older 32 bit editors, but in Unity 5 the editor is 64 bit and there is no real reason to fail. Splitting the model is no feasible solution for a few reasons.
Unity merging distinct materials:
With another FBX file, not nearly as complex but with a few badly named materials, Unity just looses a few of them. I have f.e. two different materials that are both named “Material #842”, Unity just merges them into a single material with that name. I would very much prefer if Unity would keep the materials and material assignments as they are, at most with automatic material renaming like “Material #842 (2)” if needed. In the FBX file itself both identically named materials are present and correctly assigned, after all names are only cosmetic and not used to identify stuff in there. The current ModelImporter settings have no options to prevent this merging. A “Material #844” gets removed completely and all references get replaced to a reference to “Material #843”. I have no idea how this can happen, maybe an uncommon way of assigning materials in FBX files.
Forced automatic renaming of nodes:
I had made a small test file with a few nodes that were to be identified by name, some of the nodes had the exact same name. Unity automatically changed the names by appending numbers to make them unique (before calling AssetPostprocessor.OnPostprocessModel on custom post processors, so no automatic way of saving the original names and restoring them afterwards), even for nodes that are in different parts in the hierarchy. Renaming isn’t even necessary, Unity can handle identically named nodes even as children of the same object. While the names can be changed back manually for small objects, it is error prone. For complex objects with thousands of nodes it is far worse. Therefore there really should be a ModelImporter setting to turn this behavior off. Renaming can be turned on by default to keep the current behavior, but it must be possible to turn it off.
Forced automatic sorting of nodes:
I have another issue with my small test file. Unity sorts child nodes alphanumerically (after calling AssetPostprocessor.OnPostprocessModel on custom post processors, in that method the original order is still present) for imported models. I presume that is to keep identical behavior to times when Unity didn’t support arbitrary ordering. But Unity does support arbitrary ordering now since it is needed for the UI draw order. It can be equally necessary for logic attached to 3D models. Sadly, there is again no way of turning this automatic reordering off. So there should be a ModelImporter setting for it, just like with node renaming.
Are these issues known or even worked on? Are test files needed? In that case I have to create FBX files first which reproduce the issues. I can’t give out the problematic files from the first two problems.
Edit:
Found the issue tracker (sorry, first time user here), currently building test cases and making proper issues.