[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