Okay this is weird as hell. I'm comparing the actual matrix values found in 2.4 and 2.5

The actual matrix values before the multiplication match up. Specifically:

obj.getMatrix('worldspace') == obj.matrix_world ==

[1.000000, 0.000000, 0.000000, 0.000000]

[0.000000, 1.000000, 0.000000, 0.000000]

[0.000000, 0.000000, 1.000000, 0.000000]

[0.019181, 0.011407, 7.975471, 1.000000]

and

b.matrix['ARMATURESPACE'] == b.matrix_local ==

[1.000000, 0.000000, -0.000000, 0.000000]

[-0.000000, 0.000000, 1.000000, 0.000000]

[0.000000, -1.000000, 0.000000, 0.000000]

[0.000000, 0.000000, 0.000002, 1.000000]

however, it seems like the matrix multiplication result is DIFFERENT?!

in Blender 2.49b the result is:

[1.000000, 0.000000, -0.000000, 0.000000]

[-0.000000, 0.000000, 1.000000, 0.000000]

[0.000000, -1.000000, 0.000000, 0.000000]

[0.019181, 0.011407, 7.975472, 1.000000]

in Blender 2.54 the result is:

[1.000000, 0.000000, -0.00000, 0.00000]

[-0.00000, 0.000000, 1.000000, 0.00000]

[0.000000, -1.00000, 0.000000, 0.00000]

[0.019181, -7.975471, 0.011409, 1.0000]

ARRRGGG!! order of multiplication changed!

instead of multiplying the bone space * world matrix in 2.4, we need to multiply the world matrix * bone space in 2.5

updated script in place (

http://dl.dropbox.com/u/1556553/io_export_md5.9-15-2010.py )

now I need to figure out why there is a major difference in the number of verts/tris/weights section. Probably a problem with the whole face_vertices code, and how it does or doesnt cut quads up into tris and handles cloning vertices (since I didn't fully understand the code when I was translating it to 2.5)