[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47148] branches/soc-2012-bratwurst/source /blender/assimp: - bf_assimp: convert node transformations.

Alexander Gessler alexander.gessler at gmx.net
Tue May 29 06:11:57 CEST 2012


Revision: 47148
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47148
Author:   aramis_acg
Date:     2012-05-29 04:11:53 +0000 (Tue, 29 May 2012)
Log Message:
-----------
- bf_assimp: convert node transformations.

Modified Paths:
--------------
    branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp
    branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.h

Modified: branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp	2012-05-29 03:07:35 UTC (rev 47147)
+++ branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp	2012-05-29 04:11:53 UTC (rev 47148)
@@ -37,6 +37,7 @@
 {
 #include "BKE_global.h"
 #include "BKE_main.h"
+#include "BKE_object.h"
 #include "BKE_camera.h"
 #include "BKE_lamp.h"
 #include "BKE_node.h"
@@ -175,7 +176,7 @@
 	for (std::vector<Object *>::iterator it = objects_done.begin(), end = objects_done.end(); it != end; ++it) {
 		Object* const obj = *it;
 		
-		//convert_node_transform(in_node, obj); // overwrites location set earlier
+		convert_node_transform(in_node, obj); 
 
 		// set parent (unless this is root)
 		if(out_parent) {
@@ -191,6 +192,30 @@
 }
 
 
+void SceneImporter::convert_node_transform(const aiNode* node_in, Object* out_obj) const
+{
+	const aiMatrix4x4& m = node_in->mTransformation;
+	out_obj->obmat[0][0] = m.a1;
+	out_obj->obmat[1][0] = m.a2;
+	out_obj->obmat[2][0] = m.a3;
+	out_obj->obmat[3][0] = m.a4;
+	out_obj->obmat[0][1] = m.b1;
+	out_obj->obmat[1][1] = m.b2;
+	out_obj->obmat[2][1] = m.b3;
+	out_obj->obmat[3][1] = m.b4;
+	out_obj->obmat[0][2] = m.c1;
+	out_obj->obmat[1][2] = m.c2;
+	out_obj->obmat[2][2] = m.c3;
+	out_obj->obmat[3][2] = m.c4;
+	out_obj->obmat[0][3] = m.d1;
+	out_obj->obmat[1][3] = m.d2;
+	out_obj->obmat[2][3] = m.d3;
+	out_obj->obmat[3][3] = m.d4;
+
+	BKE_object_apply_mat4(out_obj, out_obj->obmat, 0, 0);
+}
+
+
 Object* SceneImporter::convert_light(const aiLight& light) const
 {
 	Object* const ob = util_add_object(out_scene, OB_CAMERA, NULL);

Modified: branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.h
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.h	2012-05-29 03:07:35 UTC (rev 47147)
+++ branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.h	2012-05-29 04:11:53 UTC (rev 47148)
@@ -46,6 +46,7 @@
 
 	unsigned int get_assimp_flags() const;
 	void convert_node(const aiNode* in_node, Object* out_parent) const;
+	void convert_node_transform(const aiNode* node_in, Object* out_obj) const;
 	Object* convert_light(const aiLight& light) const;
 	Object* convert_camera(const aiCamera& cam) const;
 	Object* convert_mesh(const std::vector<const aiMesh*>& in_meshes, const char* name) const;




More information about the Bf-blender-cvs mailing list