Quick handedness question - WHY do I have to rotate an additional 180 degrees on Y?

Hey, I’m having to revisit a problem I had earlier last year, because I’m doing some custom file exporting from Blender. The files contain physics collision primitive/mesh data for a server I wrote (uses Bullet physics).

Blender uses a right-handed coordinate system while Unity uses a left-handed. To convert from Blender to Unity, I change the Blender matrix like so:

def Matrix_To_Unity (m):
	u = Matrix  (((m[0][0],m[0][2],m[0][1],m[0][3])
				, (m[2][0],m[2][2],m[2][1],m[2][3])
				, (m[1][0],m[1][2],m[1][1],m[1][3])
				, (m[3][0],m[3][2],m[3][1],m[3][3])))
	return u

This almost works perfectly, except I noticed I have to rotate my models in Unity by 180 degrees on the Y-axis in order for them to be lined up properly with the collider data.

The conversion matrix I posted was from here:
http://stackoverflow.com/questions/1263072/changing-a-matrix-from-right-handed-to-left-handed-coordinate-system
From other sources I’ve read, it seems to be the proper way to do this, but I can’t find any information on why I have to rotate an additional 180 degrees on Y in Unity. Is the camera matrix responsible for the extra rotation? Or have I done something wrong?

This is the stuff nightmares are made of. (Was glancing over asset pipeline code and it still bugs me that I don’t know why I need the 180 on Y.)

Probably handedness.

I’m importing Blender data right now. Have you noticed that Blender export data is in a different space than what you see in the Blender editor? This is most shocking, suddenly I don’t know which Blender to believe