Index: trunk/src/formats/md3_loader.cc
===================================================================
--- trunk/src/formats/md3_loader.cc	(revision 226)
+++ trunk/src/formats/md3_loader.cc	(revision 230)
@@ -328,5 +328,5 @@
 */
 
-void nv::md3_loader::load_tags( std::vector<mat4>& t, const std::string& tag )
+void nv::md3_loader::load_tags( std::vector<transform>& t, const std::string& tag )
 {
 	md3_t* md3 = (md3_t*)m_md3;
@@ -340,9 +340,9 @@
 			if (rname == tag)
 			{
-				vec4 axisx     = vec4( md3_vec3( rtag.axis[0] ), 0.0 );
-				vec4 axisz     = vec4( md3_vec3( rtag.axis[1] ), 0.0 );
-				vec4 axisy     = vec4( md3_vec3( rtag.axis[2] ), 0.0 );
-				vec4 origin    = vec4( md3_vec3( rtag.origin ),  1.0 );
-				t.emplace_back( axisx, axisy, axisz, origin );
+				vec3 axisx  ( md3_vec3( rtag.axis[0] ) );
+				vec3 axisz  ( md3_vec3( rtag.axis[1] ) );
+				vec3 axisy  ( md3_vec3( rtag.axis[2] ) );
+				vec3 origin ( md3_vec3( rtag.origin )  );
+				t.emplace_back( origin, quat( mat3( axisx, axisy, axisz ) ) );
 			}
 		}
@@ -406,5 +406,5 @@
 }
 
-mat4 md3_loader::get_tag( sint32 frame, const std::string& name ) const
+transform md3_loader::get_tag( sint32 frame, const std::string& name ) const
 {
 	md3_t* md3 = (md3_t*)m_md3;
@@ -415,12 +415,12 @@
 		if (rname == name)
 		{
-			vec4 axisx     = vec4( md3_vec3( rtag.axis[0] ), 0.0 );
-			vec4 axisz     = vec4( md3_vec3( rtag.axis[1] ), 0.0 );
-			vec4 axisy     = vec4( md3_vec3( rtag.axis[2] ), 0.0 );
-			vec4 origin    = vec4( md3_vec3( rtag.origin ),  1.0 );
-			return glm::mat4( axisx, axisy, axisz, origin );
-		}
-	}
-	return glm::mat4();
+			vec3 axisx ( md3_vec3( rtag.axis[0] ) );
+			vec3 axisz ( md3_vec3( rtag.axis[1] ) );
+			vec3 axisy ( md3_vec3( rtag.axis[2] ) );
+			vec3 origin( md3_vec3( rtag.origin ) );
+			return transform( origin, quat( mat3( axisx, axisy, axisz ) ) );
+		}
+	}
+	return transform();
 }
 
