Apply patch [#36601].

Submitted by Saurabh Wankhade (sauraedron).

This patch adds camera shift and dof export and import in a Blender profile.
This commit is contained in:
Nathan Letwory 2013-09-05 06:58:27 +00:00
parent 6fce374637
commit 76aa5dfb70
3 changed files with 20 additions and 1 deletions

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

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

@ -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();