OK, another update. I've improved the Blender TXT import so that separate meshes in the Milkshape3D TXT are imported as separate meshes in Blender rather than lumping everything into one mesh (which is what happens in the current version).
I've also been working on helpful new functions for Nexus Buddy (now that we have the source thanks to S3rgeus

). I've added a Split function which exports each mesh in the currently loaded GR2 as a separate GR2. This is helpful because quite a few of the vanilla units have multiple Meshes with the same name. For example the War Chariot has 5 meshes but 3 have the same name, U_Egyptian_WarChariot.
The SMD process will group these based on name so that you lose the split. This Split function allowed me to produce the Blender file you see in the first image with exactly the same five mesh split as the vanilla unit, by doing the GR2>SMD>TXT>.blend process once for each part.
To get around the instability of the FBX Import to GR2 I also added an Append method which will append the first mesh from a selected FBX or (preferably) GR2 to the currently open GR2:
If you export your separate Blender meshes as separate FBX files, each including the skeleton you can use Append to build up your model again piece by piece in Nexus Buddy. My process was:
1. Export all meshes as separate FBXs so I had 5 FBX files for the War Chariot.
2. Open each FBX in turn and save the GR2. Repeat if the mesh looks broken in GrannyViewer.
3. Open the first ported GR2. Append the second GR2. Save as a new merged GR2. GrannyViewer check. Append the third GR2. Save. GrannyViewer check. And so on...
Following this process I'm able to get all my five meshes from Blender into a GR2 file without any corruption (the horns were deliberate to show I have actually modded the mesh!):
This GR2 also has the same five part mesh structure as the vanilla unit:
All good it might seem. But here we hit another wall.
The Granny GR2 file maintain two separate lists of meshes:
1) the Meshes list is what you see in the Mesh List tab shown in the above screenshots.
2) the Model's MeshBindings list (viewable in GrannyViewer if you right-click the Model in Model List and select View in Detail).
If you look at the vanilla War Chariot you can see that these two lists are in sync, but for my horned War Chariot, made using Nexus Buddy Append, the model MeshBindings list only has one Mesh whereas the Mesh List has five:
The MeshBindings drive what actually displays in Nexus 3D Viewer. The four Meshes that are not referenced in the Model will not display.
The good news is that the GR2s created before the append are each rigged properly and animate perfectly so if we could just update the damn MeshBindings list from code then I
think we'd have a complete multi-mesh import process which can then be automated further.
To understand why the .NET/C# code fix for this isn't simple you need to look at the available methods in Firaxis.Framework.Granny.dll and the Firaxis.Framework.Granny.ImplWin32.dll implementation. Specifically the problem is with how locked-down the IGrannyModel interface is.
These are the available properties/methods for IGrannyFile, IGrannyModel and IGrannyMesh in Firaxis.Framework.Granny:
Notice that IGrannyMesh has both AddMaterialBinding and RemoveMaterialBinding methods. IGrannyModel has a RemoveMeshBinding method but does NOT have a AddMeshBinding method - because that would be far too helpful

. So I can RemoveMeshBindings but I can't add new ones.
In the Append function in my updated Nexus Buddy was able to add the GrannyMesh from another file to the currently open one using IGrannyFile.AddMeshReference like so:
Code:
Form1.loadedFile.AddMeshReference(tempFile.Meshes[0]);
If could write the next line:
Code:
Form1.loadedFile.Models[0].AddMeshBinding(tempFile.Meshes[0]);
...then I'm fairly sure everything would work, but I can't as no method of that name exists. This is the final barrier as far as I can see and a breakthrough here would be fantastic.
I've gone as far as decompiling the DLL source using dotPeek/Reflector to look at the GrannyModel implementation code under the hood. I've highlighted a section of the generated source that is adding mesh bindings:
Unfortunately I think this issue can't be resolved without updated Firaxis.Framework.Granny.dll and Firaxis.Framework.Granny.ImplWin32.dll libraries. I presume the code for these is Firaxis code rather than code from RAD Game Tools, owners of the Granny format.
So either:
1) Firaxis add a IGrannyModel.AddMeshBinding to Firaxis.Framework.Granny and Firaxis.Framework.Granny.ImplWin32.dll and release. Ideal solution, but probably unlikely - unless they feel like supporting 3D graphic modders!
2) Someone manages to decompile Firaxis.Framework.Granny.dll and Firaxis.Framework.Granny.ImplWin32.dll, fix code so that it recompiles, add the required AddMeshBinding function that can be called from Nexus Buddy, and releases to the community. Extremely hard as far as I can see and therefore unlikely.
3) We find some other work around. Possible.
Sorry this has been so technical. I've probably lost everyone a while back.
But it would be awesome to overcome this final hurdle so that we can actually create modding tools that allow multi-mesh objects (which a lot of Civ4 models are) to be flawlessly imported to Civ 5 without merging meshes. But for now I'm stuck...
I've attached my blend files and a couple of output GR2s
here.
In other news, I've added Warrior.blend and Persian Immortal.blend to the
spreadsheet. With my updated scripts the entire GR2->.blend->GR2 round-trip process can be done in 5 minutes. I'll do another batch of templates soon, now that I've got it so quick. I'll release a new version of the import/export scripts and update the tutorial soon as well.