[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25007] trunk/blender: Merge from COLLADA branch into trunk of -c 24572 ( cmake and scons for OpenCollada @ 675, Linux) and 25001 ( bone animation import).

Arystanbek Dyussenov arystan.d at gmail.com
Sun Nov 29 20:16:53 CET 2009


Revision: 25007
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25007
Author:   kazanbas
Date:     2009-11-29 20:16:52 +0100 (Sun, 29 Nov 2009)

Log Message:
-----------
Merge from COLLADA branch into trunk of -c 24572 (cmake and scons for OpenCollada @ 675, Linux) and 25001 (bone animation import). See corresponding log entries for more detail.

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/config/linux2-config.py
    trunk/blender/source/blender/blenkernel/BKE_texture.h
    trunk/blender/source/blender/blenkernel/intern/texture.c
    trunk/blender/source/blender/blenlib/BLI_util.h
    trunk/blender/source/blender/blenlib/intern/util.c
    trunk/blender/source/blender/collada/DocumentExporter.cpp
    trunk/blender/source/blender/collada/DocumentImporter.cpp
    trunk/blender/source/blender/collada/collada_internal.h

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/CMakeLists.txt	2009-11-29 19:16:52 UTC (rev 25007)
@@ -216,8 +216,8 @@
 
 	IF (WITH_OPENCOLLADA)
 		SET(OPENCOLLADA /usr/local/opencollada CACHE FILEPATH "OpenCollada Directory")
-		SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA})
-		SET(OPENCOLLADA_LIB OpenCollada)
+		SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
+		SET(OPENCOLLADA_LIB OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre ftoa Buffer)
 		SET(OPENCOLLADA_INC ${OPENCOLLADA})
 		SET(PCRE /usr CACHE FILEPATH "PCRE Directory")
 		SET(PCRE_LIBPATH ${PCRE}/lib)

Modified: trunk/blender/config/linux2-config.py
===================================================================
--- trunk/blender/config/linux2-config.py	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/config/linux2-config.py	2009-11-29 19:16:52 UTC (rev 25007)
@@ -155,9 +155,9 @@
 BF_COLLADA = '#source/blender/collada'
 BF_COLLADA_INC = '${BF_COLLADA}'
 BF_COLLADA_LIB = 'bf_collada'
-BF_OPENCOLLADA = ''
-BF_OPENCOLLADA_LIB = 'OpenCollada'
-BF_OPENCOLLADA_LIBPATH = '/usr/lib'
+BF_OPENCOLLADA = '/usr'
+BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre Buffer ftoa'
+BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib'
 BF_PCRE = ''
 BF_PCRE_LIB = 'pcre'
 BF_PCRE_LIBPATH = '/usr/lib'

Modified: trunk/blender/source/blender/blenkernel/BKE_texture.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_texture.h	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/source/blender/blenkernel/BKE_texture.h	2009-11-29 19:16:52 UTC (rev 25007)
@@ -62,7 +62,7 @@
 void colorband_table_RGBA(struct ColorBand *coba, float **array, int *size);
 
 void default_tex(struct Tex *tex);
-struct Tex *add_texture(char *name);
+struct Tex *add_texture(const char *name);
 void default_mtex(struct MTex *mtex);
 struct MTex *add_mtex(void);
 struct Tex *copy_texture(struct Tex *tex);

Modified: trunk/blender/source/blender/blenkernel/intern/texture.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/texture.c	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/source/blender/blenkernel/intern/texture.c	2009-11-29 19:16:52 UTC (rev 25007)
@@ -518,7 +518,7 @@
 
 /* ------------------------------------------------------------------------- */
 
-Tex *add_texture(char *name)
+Tex *add_texture(const char *name)
 {
 	Tex *tex;
 

Modified: trunk/blender/source/blender/blenlib/BLI_util.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_util.h	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/source/blender/blenlib/BLI_util.h	2009-11-29 19:16:52 UTC (rev 25007)
@@ -61,7 +61,7 @@
 void BLI_join_dirfile(char *string, const char *dir, const char *file);
 void BLI_getlastdir(const char* dir, char *last, int maxlen);
 int BLI_testextensie(const char *str, const char *ext);
-void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len);
+void BLI_uniquename(struct ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len);
 void BLI_newname(char * name, int add);
 int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen);
 void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic);

Modified: trunk/blender/source/blender/blenlib/intern/util.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/util.c	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/source/blender/blenlib/intern/util.c	2009-11-29 19:16:52 UTC (rev 25007)
@@ -223,7 +223,7 @@
  *	defname: the name that should be used by default if none is specified already
  *	delim: the character which acts as a delimeter between parts of the name
  */
-void BLI_uniquename(ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len)
+void BLI_uniquename(ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len)
 {
 	Link *link;
 	char tempname[128];

Modified: trunk/blender/source/blender/collada/DocumentExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.cpp	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/source/blender/collada/DocumentExporter.cpp	2009-11-29 19:16:52 UTC (rev 25007)
@@ -673,7 +673,7 @@
 			copy_m4_m4(local, mat);
 		}
 
-		TransformBase::decompose(local, loc, rot, size);
+		TransformBase::decompose(local, loc, rot, NULL, size);
 		
 		/*
 		// this code used to create a single <rotate> representing object rotation

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp	2009-11-29 18:54:37 UTC (rev 25006)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp	2009-11-29 19:16:52 UTC (rev 25007)
@@ -1,3 +1,7 @@
+// TODO:
+// * name imported objects
+// * import object rotation as euler
+
 #include "COLLADAFWRoot.h"
 #include "COLLADAFWIWriter.h"
 #include "COLLADAFWStableHeaders.h"
@@ -51,6 +55,7 @@
 #include "BLI_util.h"
 #include "BKE_displist.h"
 #include "BLI_math.h"
+#include "BKE_scene.h"
 }
 #include "BKE_armature.h"
 #include "BKE_mesh.h"
@@ -91,6 +96,7 @@
 #include <float.h>
 
 // #define COLLADA_DEBUG
+#define ARMATURE_TEST
 
 char *CustomData_get_layer_name(const struct CustomData *data, int type, int n);
 
@@ -129,8 +135,10 @@
 		return "SPLINE";
 	case COLLADAFW::Geometry::GEO_TYPE_CONVEX_MESH:
 		return "CONVEX_MESH";
+	case COLLADAFW::Geometry::GEO_TYPE_UNKNOWN:
+	default:
+		return "UNKNOWN";
 	}
-	return "UNKNOWN";
 }
 
 // works for COLLADAFW::Node, COLLADAFW::Geometry
@@ -193,41 +201,16 @@
 
 			switch(type) {
 			case COLLADAFW::Transformation::TRANSLATE:
-				{
-					COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm;
-					COLLADABU::Math::Vector3& t = tra->getTranslation();
-
-					unit_m4(cur);
-					cur[3][0] = (float)t[0];
-					cur[3][1] = (float)t[1];
-					cur[3][2] = (float)t[2];
-				}
+				dae_translate_to_mat4(tm, cur);
 				break;
 			case COLLADAFW::Transformation::ROTATE:
-				{
-					COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm;
-					COLLADABU::Math::Vector3& raxis = ro->getRotationAxis();
-					float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f);
-					float axis[] = {raxis[0], raxis[1], raxis[2]};
-					float quat[4];
-					float rot_copy[3][3];
-					float mat[3][3];
-					axis_angle_to_quat(quat, axis, angle);
-					
-					quat_to_mat4( cur,quat);
-				}
+				dae_rotate_to_mat4(tm, cur);
 				break;
 			case COLLADAFW::Transformation::SCALE:
-				{
-					COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale();
-					float size[3] = {(float)s[0], (float)s[1], (float)s[2]};
-					size_to_mat4( cur,size);
-				}
+				dae_scale_to_mat4(tm, cur);
 				break;
 			case COLLADAFW::Transformation::MATRIX:
-				{
-					unit_converter->mat4_from_dae(cur, ((COLLADAFW::Matrix*)tm)->getMatrix());
-				}
+				dae_matrix_to_mat4(tm, cur);
 				break;
 			case COLLADAFW::Transformation::LOOKAT:
 			case COLLADAFW::Transformation::SKEW:
@@ -248,6 +231,42 @@
 			}
 		}
 	}
+
+	void dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+	{
+		COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm;
+		COLLADABU::Math::Vector3& axis = ro->getRotationAxis();
+		float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f);
+		float ax[] = {axis[0], axis[1], axis[2]};
+		// float quat[4];
+		// axis_angle_to_quat(quat, axis, angle);
+		// quat_to_mat4(m, quat);
+		axis_angle_to_mat4(m, ax, angle);
+	}
+
+	void dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+	{
+		COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm;
+		COLLADABU::Math::Vector3& t = tra->getTranslation();
+
+		unit_m4(m);
+
+		m[3][0] = (float)t[0];
+		m[3][1] = (float)t[1];
+		m[3][2] = (float)t[2];
+	}
+
+	void dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+	{
+		COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale();
+		float size[3] = {(float)s[0], (float)s[1], (float)s[2]};
+		size_to_mat4(m, size);
+	}
+
+	void dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
+	{
+		unit_converter->dae_matrix_to_mat4(m, ((COLLADAFW::Matrix*)tm)->getMatrix());
+	}
 };
 
 // only for ArmatureImporter to "see" MeshImporter::get_object_by_geom_uid
@@ -261,7 +280,7 @@
 class AnimationImporterBase
 {
 public:
-	virtual void change_eul_to_quat(Object *ob, bAction *act) = 0;
+	// virtual void change_eul_to_quat(Object *ob, bAction *act) = 0;
 };
 
 class ArmatureImporter : private TransformReader
@@ -387,7 +406,7 @@
 			for (int i = 0; i < weight.getValuesCount(); i++)
 				weights.push_back(get_float_value(weight, i));
 
-			unit_converter->mat4_from_dae(bind_shape_matrix, skin->getBindShapeMatrix());
+			unit_converter->dae_matrix_to_mat4(bind_shape_matrix, skin->getBindShapeMatrix());
 		}
 			
 		void free()
@@ -404,7 +423,7 @@
 		void add_joint(const COLLADABU::Math::Matrix4& matrix)
 		{
 			JointData jd;
-			unit_converter->mat4_from_dae(jd.inv_bind_mat, matrix);
+			unit_converter->dae_matrix_to_mat4(jd.inv_bind_mat, matrix);
 			joint_data.push_back(jd);
 		}
 
@@ -478,7 +497,7 @@
 		void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid,
 						   TransformReader *tm)
 		{
-			tm->decompose(bind_shape_matrix, ob->loc, ob->rot, ob->size);
+			tm->decompose(bind_shape_matrix, ob->loc, ob->rot, NULL, ob->size);
 
 			ob->parent = ob_arm;
 			ob->partype = PARSKEL;
@@ -705,6 +724,7 @@
 		}
 	}
 
+#if 0
 	void set_euler_rotmode()
 	{
 		// just set rotmode = ROT_MODE_EUL on pose channel for each joint
@@ -735,6 +755,7 @@
 			}
 		}
 	}
+#endif
 
 	Object *get_empty_for_leaves()
 	{
@@ -817,7 +838,7 @@
 
 		set_leaf_bone_shapes(ob_arm);
 
-		set_euler_rotmode();
+		// set_euler_rotmode();
 	}
 	
 
@@ -989,6 +1010,7 @@
 		BLI_snprintf(joint_path, count, "pose.bones[\"%s\"]", get_joint_name(node));
 	}
 	
+#if 0

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list