So I finally got to the end of my first refactor of FBX export. Do not yet expect 7.3 support or binary export, but here are the news:
- Export polygons an no more tessellated quads/tris!
- Export split vertex normals.
- General cleanup of code (in mesh export only), much compact and somewhat better performances (about 20%, with size reduction of color/uv layers).
I did some quick tests with the only tool I found available for free under Linux (Beginner license of HoudiniFX), things seems to work OK, but I’d like to get some more tests from artists here who also have Maya/3DS Max available… Simply replace existing io_scene_fbx directory (in your addons path) with this one.
Small day, mostly coded a (rough) split normals export for OBJ (replaces the more basic “Export Normals” current behavior), to test the WIP code, and packaged a build on Graphicall (sorry, linux64 only), using those patches: core code and exporter script.
Now I need some people having access to 3DS Max or Maya (or any other “reference” OBJ importer 😉 ) to make some tests with real-case objects. I see not much point in working on the API & co until the core code is validated!
Just FYI, here is an export of a simple cube with two non-crossing edge loops marked as sharp:
# Blender v2.68 (sub 2) OBJ File: 'temp.blend'
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vn -0.000000 -0.707107 0.707107
vn 1.000000 0.000000 0.000000
vn 0.000000 -0.707107 -0.707107
vn -0.000000 0.707107 0.707107
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.707107 -0.707107
f 1//3 2//1 3//1 4//3
f 5//6 8//6 7//4 6//4
f 1//2 5//2 6//2 2//2
f 2//1 6//4 7//4 3//1
f 3//5 7//5 8//5 4//5
f 5//6 1//3 4//3 8//6
Well, did not do as much as I’d expected today, mainly because most of my prog time was eaten by a very closely related topic – those *£@#ǫ]§ smooth groups! 😛
Looks like 3DS Max expects those to be bitflags values, and not simple incremental values (OBJ specifications say nothing here, so it’s more a bug from that OBJ importer than one from Blender exporter, but anyway…). Turned out to be a bit tricky, as with only 32 possible group IDs, we have to reuse them as much as possible, yet not having two adjacent smooth groups with the same bit used! Similar to the famous “four colors theorem” – current implementation tends to use five groups instead of four, though. 😉
Anyway, OBJ exporter now has both options (simple groups IDs or bitflags ones), back to the topic. Started writing the core function, most likely tomorrow it will be finished & working!