From e928bcaec1bfdfd8b17e3fc56a0426ea6a517071 Mon Sep 17 00:00:00 2001 From: Matteo Dellepiane matteodelle Date: Thu, 19 May 2011 14:39:58 +0000 Subject: [PATCH] fixed issues on assignment of shots to raster --- src/meshlabplugins/filter_camera/filter_camera.cpp | 12 +++++++++++- .../filter_mutualinfo/filter_mutualinfo.cpp | 8 ++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/meshlabplugins/filter_camera/filter_camera.cpp b/src/meshlabplugins/filter_camera/filter_camera.cpp index ed8474d3c..b8d626413 100644 --- a/src/meshlabplugins/filter_camera/filter_camera.cpp +++ b/src/meshlabplugins/filter_camera/filter_camera.cpp @@ -113,7 +113,17 @@ bool FilterCameraPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPara } break; case FP_SET_RASTER_CAMERA : - rm->shot = par.getShotf("Shot"); + { + vcg::Shotf shotGot=par.getShotf("Shot"); + rm->shot = shotGot; + float ratio=(float)rm->currentPlane->image.height()/(float)shotGot.Intrinsics.ViewportPx[1]; + rm->shot.Intrinsics.ViewportPx[0]=rm->currentPlane->image.width(); + rm->shot.Intrinsics.ViewportPx[1]=rm->currentPlane->image.height(); + rm->shot.Intrinsics.PixelSizeMm[1]/=ratio; + rm->shot.Intrinsics.PixelSizeMm[0]/=ratio; + rm->shot.Intrinsics.CenterPx[0]=(int)((float)rm->shot.Intrinsics.ViewportPx[0]/2.0); + rm->shot.Intrinsics.CenterPx[1]=(int)((float)rm->shot.Intrinsics.ViewportPx[1]/2.0); + } break; case FP_SET_MESH_CAMERA : cm.shot = par.getShotf("Shot"); diff --git a/src/meshlabplugins/filter_mutualinfo/filter_mutualinfo.cpp b/src/meshlabplugins/filter_mutualinfo/filter_mutualinfo.cpp index 09961ea63..a134316e4 100644 --- a/src/meshlabplugins/filter_mutualinfo/filter_mutualinfo.cpp +++ b/src/meshlabplugins/filter_mutualinfo/filter_mutualinfo.cpp @@ -231,6 +231,14 @@ bool FilterMutualInfoPlugin::applyFilter(QAction */*filter*/, MeshDocument &md, //align.readRender(0); md.rm()->shot=align.shot; + float ratio=(float)md.rm()->currentPlane->image.height()/(float)align.shot.Intrinsics.ViewportPx[1]; + md.rm()->shot.Intrinsics.ViewportPx[0]=md.rm()->currentPlane->image.width(); + md.rm()->shot.Intrinsics.ViewportPx[1]=md.rm()->currentPlane->image.height(); + md.rm()->shot.Intrinsics.PixelSizeMm[1]/=ratio; + md.rm()->shot.Intrinsics.PixelSizeMm[0]/=ratio; + md.rm()->shot.Intrinsics.CenterPx[0]=(int)((float)md.rm()->shot.Intrinsics.ViewportPx[0]/2.0); + md.rm()->shot.Intrinsics.CenterPx[1]=(int)((float)md.rm()->shot.Intrinsics.ViewportPx[1]/2.0); + this->glContext->doneCurrent(); //emit md.rasterSetChanged(); return true;