diff options
-rw-r--r-- | source/blender/collada/CameraExporter.cpp | 12 | ||||
-rw-r--r-- | source/blender/collada/CameraExporter.h | 2 | ||||
-rw-r--r-- | source/blender/collada/DocumentImporter.cpp | 7 |
3 files changed, 20 insertions, 1 deletions
diff --git a/source/blender/collada/CameraExporter.cpp b/source/blender/collada/CameraExporter.cpp index fc56ff8c63c..649288c2db4 100644 --- a/source/blender/collada/CameraExporter.cpp +++ b/source/blender/collada/CameraExporter.cpp @@ -63,7 +63,6 @@ void CamerasExporter::exportCameras(Scene *sce) } void CamerasExporter::operator()(Object *ob, Scene *sce) { - // TODO: shiftx, shifty, YF_dofdist Camera *cam = (Camera *)ob->data; std::string cam_id(get_camera_id(ob)); std::string cam_name(id_name(cam)); @@ -78,7 +77,9 @@ void CamerasExporter::operator()(Object *ob, Scene *sce) persp.setZFar(cam->clipend, false, "zfar"); persp.setZNear(cam->clipsta, false, "znear"); COLLADASW::Camera ccam(mSW, &persp, cam_id, cam_name); + exportBlenderProfile(ccam, cam); addCamera(ccam); + break; } case CAM_ORTHO: @@ -90,8 +91,17 @@ void CamerasExporter::operator()(Object *ob, Scene *sce) ortho.setZFar(cam->clipend, false, "zfar"); ortho.setZNear(cam->clipsta, false, "znear"); COLLADASW::Camera ccam(mSW, &ortho, cam_id, cam_name); + exportBlenderProfile(ccam, cam); addCamera(ccam); break; } } } +bool CamerasExporter::exportBlenderProfile(COLLADASW::Camera &cm,Camera *cam) +{ + cm.addExtraTechniqueParameter("blender","shiftx",cam->shiftx); + cm.addExtraTechniqueParameter("blender","shifty",cam->shifty); + cm.addExtraTechniqueParameter("blender","YF_dofdist",cam->YF_dofdist); + return true; + +} diff --git a/source/blender/collada/CameraExporter.h b/source/blender/collada/CameraExporter.h index 5405df8ab9e..a0c2d5790c8 100644 --- a/source/blender/collada/CameraExporter.h +++ b/source/blender/collada/CameraExporter.h @@ -37,6 +37,7 @@ extern "C" { } #include "ExportSettings.h" +#include "DNA_camera_types.h" class CamerasExporter: COLLADASW::LibraryCameras { @@ -45,6 +46,7 @@ public: void exportCameras(Scene *sce); void operator()(Object *ob, Scene *sce); private: + bool exportBlenderProfile(COLLADASW::Camera &cla,Camera *cam); const ExportSettings *export_settings; }; diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index c6337e27218..5592be6e872 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -933,6 +933,7 @@ bool DocumentImporter::writeCamera(const COLLADAFW::Camera *camera) Camera *cam = NULL; std::string cam_id, cam_name; + ExtraTags *et=getExtraTags(camera->getUniqueId()); cam_id = camera->getOriginalId(); cam_name = camera->getName(); if (cam_name.size()) cam = (Camera *)BKE_camera_add(G.main, (char *)cam_name.c_str()); @@ -942,6 +943,12 @@ bool DocumentImporter::writeCamera(const COLLADAFW::Camera *camera) fprintf(stderr, "Cannot create camera.\n"); return true; } + + if(et && et->isProfile("blender")) { + et->setData("shiftx",&(cam->shiftx)); + et->setData("shifty",&(cam->shifty)); + et->setData("YF_dofdist",&(cam->YF_dofdist)); + } cam->clipsta = camera->getNearClippingPlane().getValue(); cam->clipend = camera->getFarClippingPlane().getValue(); |