diff --git a/src/core/view/InteractiveCameraHandler.cpp b/src/core/view/InteractiveCameraHandler.cpp index bf81d015c493e0c613ad0d34b5fa18ff2b5e42bd..dbb3cca14aadde3e583e1cd6ac8bbc54e444c074 100755 --- a/src/core/view/InteractiveCameraHandler.cpp +++ b/src/core/view/InteractiveCameraHandler.cpp @@ -92,6 +92,7 @@ namespace sibr { { _raycaster = raycaster; _viewport = viewport; + _radius = areaOfInterest.diagonal().norm(); // Use the trackball to compute an initial camera. _trackball.fromBoundingBox(areaOfInterest, viewport); fromCamera(_trackball.getCamera(), false); @@ -104,6 +105,20 @@ namespace sibr { setupInterpolationPath(cams); } // Update the near and far planes. + + sibr::Vector3f center(0, 0, 0); + for (const auto& cam : cams) { + center += cam->transform().position(); + } + center /= cams.size(); + + float avgDist = 0; + for (const auto& cam : cams) { + avgDist += (cam->transform().position() - center).norm(); + } + avgDist /= cams.size(); + _radius = avgDist; + sibr::InputCamera idealCam = *cams[0]; if(clippingPlanes[0] < 0.0f || clippingPlanes[1] < 0.0f) { float zFar = -1.0f, zNear = -1.0f; diff --git a/src/projects/gaussianviewer/apps/gaussianViewer/main.cpp b/src/projects/gaussianviewer/apps/gaussianViewer/main.cpp index 75cf3041af29cccb69b5f50961da9213bf28af82..9e8b9116ddb979054a08ecd31c91e19e7f42ca0b 100644 --- a/src/projects/gaussianviewer/apps/gaussianViewer/main.cpp +++ b/src/projects/gaussianviewer/apps/gaussianViewer/main.cpp @@ -177,7 +177,7 @@ int main(int ac, char** av) // Camera handler for main view. sibr::InteractiveCameraHandler::Ptr generalCamera(new InteractiveCameraHandler()); - generalCamera->setup(scene->cameras()->inputCameras(), Viewport(0, 0, (float)usedResolution.x(), (float)usedResolution.y()), raycaster); + generalCamera->setup(scene->cameras()->inputCameras(), Viewport(0, 0, (float)usedResolution.x(), (float)usedResolution.y()), nullptr); // Add views to mvm. MultiViewManager multiViewManager(window, false); diff --git a/src/projects/remote/apps/remoteGaussianUI/main.cpp b/src/projects/remote/apps/remoteGaussianUI/main.cpp index b6f741949ee063db3691ef9f888b8c4bce36e0e2..1791e3f33a198f05657b9a8fb35c5ce42c187206 100644 --- a/src/projects/remote/apps/remoteGaussianUI/main.cpp +++ b/src/projects/remote/apps/remoteGaussianUI/main.cpp @@ -94,7 +94,7 @@ void resetScene(RemoteAppArgs myArgs, // Camera handler for main view. sibr::InteractiveCameraHandler::Ptr generalCamera(new InteractiveCameraHandler()); - generalCamera->setup(scene->cameras()->inputCameras(), Viewport(0, 0, (float)usedResolution.x(), (float)usedResolution.y()), raycaster); + generalCamera->setup(scene->cameras()->inputCameras(), Viewport(0, 0, (float)usedResolution.x(), (float)usedResolution.y()), nullptr); // Top view topView.reset(new sibr::SceneDebugView(scene, generalCamera, myArgs));