Revision: 26444
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26444
Author:   kazanbas
Date:     2010-01-30 19:20:56 +0100 (Sat, 30 Jan 2010)

Log Message:
-----------
Merge -c 26209,26214,26443 from COLLADA branch into trunk.

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/config/linux2-config.py
    trunk/blender/config/win32-vc-config.py
    trunk/blender/projectfiles_vc9/blender/blender.vcproj
    trunk/blender/source/blender/collada/DocumentExporter.cpp
    trunk/blender/source/blender/collada/DocumentImporter.cpp

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt        2010-01-30 18:03:18 UTC (rev 26443)
+++ trunk/blender/CMakeLists.txt        2010-01-30 18:20:56 UTC (rev 26444)
@@ -217,7 +217,7 @@
        IF (WITH_OPENCOLLADA)
                SET(OPENCOLLADA /usr/local/opencollada CACHE FILEPATH 
"OpenCollada Directory")
                SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
-               SET(OPENCOLLADA_LIB OpenCOLLADAStreamWriter 
OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils 
GeneratedSaxParser UTF MathMLSolver pcre ftoa Buffer)
+               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       2010-01-30 18:03:18 UTC (rev 
26443)
+++ trunk/blender/config/linux2-config.py       2010-01-30 18:20:56 UTC (rev 
26444)
@@ -156,7 +156,7 @@
 BF_COLLADA_INC = '${BF_COLLADA}'
 BF_COLLADA_LIB = 'bf_collada'
 BF_OPENCOLLADA = '/usr'
-BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader 
OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver 
pcre Buffer ftoa'
+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'

Modified: trunk/blender/config/win32-vc-config.py
===================================================================
--- trunk/blender/config/win32-vc-config.py     2010-01-30 18:03:18 UTC (rev 
26443)
+++ trunk/blender/config/win32-vc-config.py     2010-01-30 18:20:56 UTC (rev 
26444)
@@ -145,7 +145,7 @@
 
 BF_OPENCOLLADA = LIBDIR + '/opencollada'
 BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include'
-BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader 
OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver 
xml2 pcre'
+BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader 
OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver 
xml2 pcre buffer ftoa'
 BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib'
 
 #Ray trace optimization

Modified: trunk/blender/projectfiles_vc9/blender/blender.vcproj
===================================================================
--- trunk/blender/projectfiles_vc9/blender/blender.vcproj       2010-01-30 
18:03:18 UTC (rev 26443)
+++ trunk/blender/projectfiles_vc9/blender/blender.vcproj       2010-01-30 
18:20:56 UTC (rev 26444)
@@ -74,7 +74,7 @@
                        <Tool
                                Name="VCLinkerTool"
                                AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="libsamplerate.lib 
SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib 
wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib 
winmm.lib libpng_st.lib zlib.lib python31.lib pthreadVSE2.lib pthreadVC2.lib 
libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-52.lib 
avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib libsndfile-1.lib 
OpenCOLLADABaseUtils.lib OpenCOLLADAFramework.lib OpenCOLLADAStreamWriter.lib 
OpenCOLLADASaxFrameworkLoader.lib pcre.lib UTF.lib GeneratedSaxParser.lib 
MathMLSolver.lib xml2.lib"
+                               AdditionalDependencies="libsamplerate.lib 
SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib 
wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib 
winmm.lib libpng_st.lib zlib.lib python31.lib pthreadVSE2.lib pthreadVC2.lib 
libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-52.lib 
avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib libsndfile-1.lib 
OpenCOLLADABaseUtils.lib OpenCOLLADAFramework.lib OpenCOLLADAStreamWriter.lib 
OpenCOLLADASaxFrameworkLoader.lib pcre.lib UTF.lib GeneratedSaxParser.lib 
MathMLSolver.lib xml2.lib buffer.lib ftoa.lib"
                                ShowProgress="0"
                                OutputFile="..\..\..\install\msvc_9\blender.exe"
                                LinkIncremental="1"
@@ -169,7 +169,7 @@
                        <Tool
                                Name="VCLinkerTool"
                                AdditionalOptions="/MACHINE:I386&#x0D;&#x0A;"
-                               AdditionalDependencies="libsamplerate.lib 
SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib 
wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib 
winmm.lib libpng_st.lib zlib.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib 
libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib 
avcodec-52.lib avformat-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib 
libsndfile-1.lib OpenCOLLADABaseUtils_d.lib OpenCOLLADAFramework_d.lib 
OpenCOLLADAStreamWriter_d.lib OpenCOLLADASaxFrameworkLoader_d.lib pcre_d.lib 
UTF_d.lib GeneratedSaxParser_d.lib MathMLSolver_d.lib xml2_d.lib"
+                               AdditionalDependencies="libsamplerate.lib 
SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib 
wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib 
winmm.lib libpng_st.lib zlib.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib 
libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib 
avcodec-52.lib avformat-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib 
libsndfile-1.lib OpenCOLLADABaseUtils_d.lib OpenCOLLADAFramework_d.lib 
OpenCOLLADAStreamWriter_d.lib OpenCOLLADASaxFrameworkLoader_d.lib pcre_d.lib 
UTF_d.lib GeneratedSaxParser_d.lib MathMLSolver_d.lib xml2_d.lib buffer_d.lib 
ftoa_d.lib"
                                ShowProgress="0"
                                
OutputFile="..\..\..\install\msvc_9d\blender.exe"
                                LinkIncremental="2"

Modified: trunk/blender/source/blender/collada/DocumentExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.cpp   2010-01-30 
18:03:18 UTC (rev 26443)
+++ trunk/blender/source/blender/collada/DocumentExporter.cpp   2010-01-30 
18:20:56 UTC (rev 26444)
@@ -669,7 +669,7 @@
 protected:
        void add_node_transform(COLLADASW::Node& node, float mat[][4], float 
parent_mat[][4])
        {
-               float loc[3], rot[3], size[3];
+               float loc[3], rot[3], scale[3];
                float local[4][4];
 
                if (parent_mat) {
@@ -681,27 +681,61 @@
                        copy_m4_m4(local, mat);
                }
 
-               TransformBase::decompose(local, loc, rot, NULL, size);
+               TransformBase::decompose(local, loc, rot, NULL, scale);
                
-               /*
-               // this code used to create a single <rotate> representing 
object rotation
-               float quat[4];
-               float axis[3];
-               float angle;
-               double angle_deg;
-               eul_to_quat( quat,rot);
-               normalize_qt(quat);
-               quat_to_axis_angle( axis, &angle,quat);
-               angle_deg = angle * 180.0f / M_PI;
-               node.addRotate(axis[0], axis[1], axis[2], angle_deg);
-               */
+               add_transform(node, loc, rot, scale);
+       }
+
+       void add_node_transform_ob(COLLADASW::Node& node, Object *ob)
+       {
+               float rot[3], loc[3], scale[3];
+
+               if (ob->parent) {
+                       float C[4][4], D[4][4], tmat[4][4], imat[4][4], 
mat[4][4];
+
+                       // factor out scale from obmat
+
+                       copy_v3_v3(scale, ob->size);
+
+                       ob->size[0] = ob->size[1] = ob->size[2] = 1.0f;
+                       object_to_mat4(ob, C);
+                       copy_v3_v3(ob->size, scale);
+
+                       mul_serie_m4(tmat, ob->parent->obmat, ob->parentinv, C, 
NULL, NULL, NULL, NULL, NULL);
+
+                       // calculate local mat
+
+                       invert_m4_m4(imat, ob->parent->obmat);
+                       mul_m4_m4m4(mat, tmat, imat);
+
+                       // done
+
+                       mat4_to_eul(rot, mat);
+                       copy_v3_v3(loc, mat[3]);
+               }
+               else {
+                       copy_v3_v3(loc, ob->loc);
+                       copy_v3_v3(rot, ob->rot);
+                       copy_v3_v3(scale, ob->size);
+               }
+
+               add_transform(node, loc, rot, scale);
+       }
+
+       void add_node_transform_identity(COLLADASW::Node& node)
+       {
+               float loc[] = {0.0f, 0.0f, 0.0f}, scale[] = {1.0f, 1.0f, 1.0f}, 
rot[] = {0.0f, 0.0f, 0.0f};
+               add_transform(node, loc, rot, scale);
+       }
+
+private:
+       void add_transform(COLLADASW::Node& node, float loc[3], float rot[3], 
float scale[3])
+       {
                node.addTranslate("location", loc[0], loc[1], loc[2]);
-
                node.addRotateZ("rotationZ", 
COLLADABU::Math::Utils::radToDegF(rot[2]));
                node.addRotateY("rotationY", 
COLLADABU::Math::Utils::radToDegF(rot[1]));
                node.addRotateX("rotationX", 
COLLADABU::Math::Utils::radToDegF(rot[0]));
-
-               node.addScale("scale", size[0], size[1], size[2]);
+               node.addScale("scale", scale[0], scale[1], scale[2]);
        }
 };
 
@@ -1238,15 +1272,11 @@
 
                bool is_skinned_mesh = arm_exporter->is_skinned_mesh(ob);
 
-               float mat[4][4];
-               
                if (ob->type == OB_MESH && is_skinned_mesh)
                        // for skinned mesh we write obmat in 
<bind_shape_matrix>
-                       unit_m4(mat);
+                       TransformWriter::add_node_transform_identity(node);
                else
-                       copy_m4_m4(mat, ob->obmat);
-
-               TransformWriter::add_node_transform(node, mat, ob->parent ? 
ob->parent->obmat : NULL);
+                       TransformWriter::add_node_transform_ob(node, ob);
                
                // <instance_geometry>
                if (ob->type == OB_MESH) {

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp   2010-01-30 
18:03:18 UTC (rev 26443)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp   2010-01-30 
18:20:56 UTC (rev 26444)
@@ -1564,15 +1564,13 @@
                return NULL;
        }
        
-       MTex 
*assign_textures_to_uvlayer(COLLADAFW::InstanceGeometry::TextureCoordinateBinding
 &ctexture,
+       MTex *assign_textures_to_uvlayer(COLLADAFW::TextureCoordinateBinding 
&ctexture,
                                                                         Mesh 
*me, TexIndexTextureArrayMap& texindex_texarray_map,
                                                                         MTex 
*color_texture)
        {
-               
-               COLLADAFW::TextureMapId texture_index = ctexture.textureMapId;
-               
-               char *uvname = CustomData_get_layer_name(&me->fdata, CD_MTFACE, 
ctexture.setIndex);
-               
+               COLLADAFW::TextureMapId texture_index = 
ctexture.getTextureMapId();
+               char *uvname = CustomData_get_layer_name(&me->fdata, CD_MTFACE, 
ctexture.getSetIndex());
+
                if (texindex_texarray_map.find(texture_index) == 
texindex_texarray_map.end()) {
                        
                        fprintf(stderr, "Cannot find texture array by texture 
index.\n");
@@ -1595,7 +1593,7 @@
                return color_texture;
        }
        
-       MTFace 
*assign_material_to_geom(COLLADAFW::InstanceGeometry::MaterialBinding cmaterial,
+       MTFace *assign_material_to_geom(COLLADAFW::MaterialBinding cmaterial,
                                                                        
std::map<COLLADAFW::UniqueId, Material*>& uid_material_map,

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to