diff options
-rw-r--r-- | source/blender/collada/AnimationExporter.cpp | 2 | ||||
-rw-r--r-- | source/blender/collada/AnimationImporter.cpp | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/source/blender/collada/AnimationExporter.cpp b/source/blender/collada/AnimationExporter.cpp index c100166a682..f480cd2a48e 100644 --- a/source/blender/collada/AnimationExporter.cpp +++ b/source/blender/collada/AnimationExporter.cpp @@ -597,7 +597,7 @@ void AnimationExporter::exportAnimations(Scene *sce) //bool is_rotation = !strcmp(fcu->rna_path, "rotation"); bool is_angle = false; - if (strstr(fcu->rna_path, "rotation")||strstr(fcu->rna_path, "lens")) is_angle = true; + if (strstr(fcu->rna_path, "rotation")) is_angle = true; COLLADASW::FloatSourceF source(mSW); source.setId(source_id); diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index d35c3649ab5..a70e3cd8abd 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -855,6 +855,28 @@ void AnimationImporter::translate_Animations_NEW ( COLLADAFW::Node * node , } } } + + if ( ((animType & CAMERA_XFOV) != 0) ) + { + Camera * camera = (Camera*) ob->data; + + if (!camera->adt || !camera->adt->action) act = verify_adt_action((ID*)&camera->id, 1); + else act = camera->adt->action; + + ListBase *AnimCurves = &(act->curves); + const COLLADAFW::InstanceCameraPointerArray& nodeCameras= node->getInstanceCameras(); + + for (unsigned int i = 0; i < nodeCameras.getCount(); i++) { + const COLLADAFW::Camera *camera = (COLLADAFW::Camera *) FW_object_map[nodeCameras[i]->getInstanciatedObjectId()]; + + if ((animType & CAMERA_XFOV) != 0 ) + { + const COLLADAFW::AnimatableFloat *xfov = &(camera->getXFov()); + const COLLADAFW::UniqueId& listid = xfov->getAnimationList(); + Assign_float_animations( listid ,AnimCurves, "lens"); + } + } + } } //Check if object is animated by checking if animlist_map holds the animlist_id of node transforms |