Revision: 37063
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37063
Author:   aligorith
Date:     2011-06-01 06:05:08 +0000 (Wed, 01 Jun 2011)
Log Message:
-----------
Setting svn props on collada code

Modified Paths:
--------------
    branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp

Property Changed:
----------------
    branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp

Modified: branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp       
2011-06-01 05:48:37 UTC (rev 37062)
+++ branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp       
2011-06-01 06:05:08 UTC (rev 37063)
@@ -1,108 +1,108 @@
-/*
- * $Id: DocumentExporter.cpp 36898 2011-05-25 17:14:31Z phabtar $
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov, Jan Diederich, Tod 
Liverseed.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#include "GeometryExporter.h"
-#include "AnimationExporter.h"
-
-template<class Functor>
-void forEachObjectInScene(Scene *sce, Functor &f)
-{
-       Base *base= (Base*) sce->base.first;
-       while(base) {
-               Object *ob = base->object;
-                       
-               f(ob);
-
-               base= base->next;
-       }
-}
-
-void AnimationExporter::exportAnimations(Scene *sce)
-       {
-               if(hasAnimations(sce)) {
-                       this->scene = sce;
-
-                       openLibrary();
-
-                       forEachObjectInScene(sce, *this);
-
-                       closeLibrary();
-               }
-       }
-
-       // called for each exported object
-       void AnimationExporter::operator() (Object *ob) 
-       {
-               if (!ob->adt || !ob->adt->action) return;  //this is already 
checked in hasAnimations()
-               
-               FCurve *fcu = (FCurve*)ob->adt->action->curves.first;
-               
-               if (ob->type == OB_ARMATURE) {
-                       if (!ob->data) return;
-
-                       bArmature *arm = (bArmature*)ob->data;
-                       for (Bone *bone = (Bone*)arm->bonebase.first; bone; 
bone = bone->next)
-                               write_bone_animation(ob, bone);
-               }
-               else {
-                       while (fcu) {
-                               // TODO "rotation_quaternion" is also possible 
for objects (although euler is default)
-                               if ((!strcmp(fcu->rna_path, "location") || 
!strcmp(fcu->rna_path, "scale")) ||
-                                       (!strcmp(fcu->rna_path, 
"rotation_euler") && ob->rotmode == ROT_MODE_EUL))
-                                       dae_animation(fcu, id_name(ob));
-
-                               fcu = fcu->next;
-                       }
-               }
-       }
-
-       void AnimationExporter::dae_animation(FCurve *fcu, std::string ob_name)
-       {
-               const char *axis_names[] = {"X", "Y", "Z"};
-               const char *axis_name = NULL;
-               char anim_id[200];
-               bool has_tangents = false;
-               
-               if (fcu->array_index < 3)
-                       axis_name = axis_names[fcu->array_index];
-
-               BLI_snprintf(anim_id, sizeof(anim_id), "%s_%s_%s", 
(char*)translate_id(ob_name).c_str(),
-                                        fcu->rna_path, 
axis_names[fcu->array_index]);
-
-               // check rna_path is one of: rotation, scale, location
-
-               openAnimation(anim_id, COLLADABU::Utils::EMPTY_STRING);
-
-               // create input source
-               std::string input_id = 
create_source_from_fcurve(COLLADASW::InputSemantic::INPUT, fcu, anim_id, 
axis_name);
-
-               // create output source
-               std::string output_id = 
create_source_from_fcurve(COLLADASW::InputSemantic::OUTPUT, fcu, anim_id, 
axis_name);
-
-               // create interpolations source
-               std::string interpolation_id = create_interpolation_source(fcu, 
anim_id, axis_name, &has_tangents);
-
+/*
+ * $Id: DocumentExporter.cpp 36898 2011-05-25 17:14:31Z phabtar $
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov, Jan Diederich, Tod 
Liverseed.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include "GeometryExporter.h"
+#include "AnimationExporter.h"
+
+template<class Functor>
+void forEachObjectInScene(Scene *sce, Functor &f)
+{
+       Base *base= (Base*) sce->base.first;
+       while(base) {
+               Object *ob = base->object;
+                       
+               f(ob);
+
+               base= base->next;
+       }
+}
+
+void AnimationExporter::exportAnimations(Scene *sce)
+       {
+               if(hasAnimations(sce)) {
+                       this->scene = sce;
+
+                       openLibrary();
+
+                       forEachObjectInScene(sce, *this);
+
+                       closeLibrary();
+               }
+       }
+
+       // called for each exported object
+       void AnimationExporter::operator() (Object *ob) 
+       {
+               if (!ob->adt || !ob->adt->action) return;  //this is already 
checked in hasAnimations()
+               
+               FCurve *fcu = (FCurve*)ob->adt->action->curves.first;
+               
+               if (ob->type == OB_ARMATURE) {
+                       if (!ob->data) return;
+
+                       bArmature *arm = (bArmature*)ob->data;
+                       for (Bone *bone = (Bone*)arm->bonebase.first; bone; 
bone = bone->next)
+                               write_bone_animation(ob, bone);
+               }
+               else {
+                       while (fcu) {
+                               // TODO "rotation_quaternion" is also possible 
for objects (although euler is default)
+                               if ((!strcmp(fcu->rna_path, "location") || 
!strcmp(fcu->rna_path, "scale")) ||
+                                       (!strcmp(fcu->rna_path, 
"rotation_euler") && ob->rotmode == ROT_MODE_EUL))
+                                       dae_animation(fcu, id_name(ob));
+
+                               fcu = fcu->next;
+                       }
+               }
+       }
+
+       void AnimationExporter::dae_animation(FCurve *fcu, std::string ob_name)
+       {
+               const char *axis_names[] = {"X", "Y", "Z"};
+               const char *axis_name = NULL;
+               char anim_id[200];
+               bool has_tangents = false;
+               
+               if (fcu->array_index < 3)
+                       axis_name = axis_names[fcu->array_index];
+
+               BLI_snprintf(anim_id, sizeof(anim_id), "%s_%s_%s", 
(char*)translate_id(ob_name).c_str(),
+                                        fcu->rna_path, 
axis_names[fcu->array_index]);
+
+               // check rna_path is one of: rotation, scale, location
+
+               openAnimation(anim_id, COLLADABU::Utils::EMPTY_STRING);
+
+               // create input source
+               std::string input_id = 
create_source_from_fcurve(COLLADASW::InputSemantic::INPUT, fcu, anim_id, 
axis_name);
+
+               // create output source
+               std::string output_id = 
create_source_from_fcurve(COLLADASW::InputSemantic::OUTPUT, fcu, anim_id, 
axis_name);
+
+               // create interpolations source
+               std::string interpolation_id = create_interpolation_source(fcu, 
anim_id, axis_name, &has_tangents);
+
                // handle tangents (if required)
                std::string intangent_id;
                std::string outtangent_id;
@@ -114,296 +114,296 @@
                        // create out_tangent source
                        outtangent_id = 
create_source_from_fcurve(COLLADASW::InputSemantic::OUT_TANGENT, fcu, anim_id, 
axis_name);
                }
-
-
-               std::string sampler_id = std::string(anim_id) + 
SAMPLER_ID_SUFFIX;
-               COLLADASW::LibraryAnimations::Sampler sampler(sw, sampler_id);
-               std::string empty;
-               sampler.addInput(COLLADASW::InputSemantic::INPUT, 
COLLADABU::URI(empty, input_id));
-               sampler.addInput(COLLADASW::InputSemantic::OUTPUT, 
COLLADABU::URI(empty, output_id));
-
-               // this input is required
-               sampler.addInput(COLLADASW::InputSemantic::INTERPOLATION, 
COLLADABU::URI(empty, interpolation_id));
-
+
+
+               std::string sampler_id = std::string(anim_id) + 
SAMPLER_ID_SUFFIX;
+               COLLADASW::LibraryAnimations::Sampler sampler(sw, sampler_id);
+               std::string empty;
+               sampler.addInput(COLLADASW::InputSemantic::INPUT, 
COLLADABU::URI(empty, input_id));
+               sampler.addInput(COLLADASW::InputSemantic::OUTPUT, 
COLLADABU::URI(empty, output_id));
+
+               // this input is required
+               sampler.addInput(COLLADASW::InputSemantic::INTERPOLATION, 
COLLADABU::URI(empty, interpolation_id));
+
                if (has_tangents) {
                        sampler.addInput(COLLADASW::InputSemantic::IN_TANGENT, 
COLLADABU::URI(empty, intangent_id));
                        sampler.addInput(COLLADASW::InputSemantic::OUT_TANGENT, 
COLLADABU::URI(empty, outtangent_id));
                }
-
-               addSampler(sampler);
-
-               std::string target = translate_id(ob_name)
-                       + "/" + get_transform_sid(fcu->rna_path, -1, axis_name, 
true);
-               addChannel(COLLADABU::URI(empty, sampler_id), target);
-
-               closeAnimation();
-       }
-
-       void AnimationExporter::write_bone_animation(Object *ob_arm, Bone *bone)
-       {
-               if (!ob_arm->adt)
-                       return;
-        
-               //write bone animations for 3 transform types
-               //i=0 --> rotations
-               //i=1 --> scale
-               //i=2 --> location
-               for (int i = 0; i < 3; i++)
-                       sample_and_write_bone_animation(ob_arm, bone, i);
-        
-               for (Bone *child = (Bone*)bone->childbase.first; child; child = 
child->next)
-                       write_bone_animation(ob_arm, child);
-       }
-
-       void AnimationExporter::sample_and_write_bone_animation(Object *ob_arm, 
Bone *bone, int transform_type)
-       {
-               bArmature *arm = (bArmature*)ob_arm->data;
-               int flag = arm->flag;
-               std::vector<float> fra;
-               char prefix[256];
-
-               BLI_snprintf(prefix, sizeof(prefix), "pose.bones[\"%s\"]", 
bone->name);
-
-               bPoseChannel *pchan = get_pose_channel(ob_arm->pose, 
bone->name);
-               if (!pchan)
-                       return;
-        //Fill frame array with key frame values framed at 
@param:transform_type
-               switch (transform_type) {
-               case 0:
-                       find_rotation_frames(ob_arm, fra, prefix, 
pchan->rotmode);
-                       break;
-               case 1:
-                       find_frames(ob_arm, fra, prefix, "scale");
-                       break;
-               case 2:
-                       find_frames(ob_arm, fra, prefix, "location");
-                       break;
-               default:
-                       return;
-               }
-
-               // exit rest position
-               if (flag & ARM_RESTPOS) {
-                       arm->flag &= ~ARM_RESTPOS;
-                       where_is_pose(scene, ob_arm);
-               }
-        //v array will hold all values which will be exported. 
-               if (fra.size()) {
-                       float *values = (float*)MEM_callocN(sizeof(float) * 3 * 
fra.size(), "temp. anim frames");
-                       sample_animation(values, fra, transform_type, bone, 
ob_arm, pchan);
-
-                       if (transform_type == 0) {
-                               // write x, y, z curves separately if it is 
rotation
-                               float *axisValues = 
(float*)MEM_callocN(sizeof(float) * fra.size(), "temp. anim frames");   
-                       
-                               for (int i = 0; i < 3; i++) {
-                                       for (unsigned int j = 0; j < 
fra.size(); j++)

@@ 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