From 969251c8bbf6080e01134919712a349814415541 Mon Sep 17 00:00:00 2001 From: Sam Horvath <sam.horvath@kitware.com> Date: Thu, 11 May 2017 14:30:12 -0400 Subject: [PATCH] ENH: Setting custom controllers for imstkCamera --- Base/SceneElements/Camera/imstkCamera.cpp | 11 ++--------- Base/SceneElements/Camera/imstkCamera.h | 2 +- .../Controllers/imstkFLSCameraController.cpp | 5 ++++- Examples/Sandbox/main.cpp | 4 +++- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Base/SceneElements/Camera/imstkCamera.cpp b/Base/SceneElements/Camera/imstkCamera.cpp index 0811c8c6c..2762ea0ee 100644 --- a/Base/SceneElements/Camera/imstkCamera.cpp +++ b/Base/SceneElements/Camera/imstkCamera.cpp @@ -106,16 +106,9 @@ Camera::getController() const } std::shared_ptr<CameraController> -Camera::setupController(std::shared_ptr<DeviceClient> deviceClient) +Camera::setController(std::shared_ptr<CameraController> controller) { - if(m_controller == nullptr) - { - m_controller = std::make_shared<CameraController>(*this, deviceClient); - } - else - { - m_controller->setDeviceClient(deviceClient); - } + m_controller = controller; return m_controller; } } // imstk diff --git a/Base/SceneElements/Camera/imstkCamera.h b/Base/SceneElements/Camera/imstkCamera.h index b426206f8..b0cda6d26 100644 --- a/Base/SceneElements/Camera/imstkCamera.h +++ b/Base/SceneElements/Camera/imstkCamera.h @@ -110,7 +110,7 @@ public: /// /// \brief /// - std::shared_ptr<CameraController> setupController(std::shared_ptr<DeviceClient> deviceClient); + std::shared_ptr<CameraController> setController(std::shared_ptr<CameraController> controller); protected: std::shared_ptr<CameraController> m_controller; ///> diff --git a/Base/SceneElements/Controllers/imstkFLSCameraController.cpp b/Base/SceneElements/Controllers/imstkFLSCameraController.cpp index 0aa070526..fb866cf4e 100644 --- a/Base/SceneElements/Controllers/imstkFLSCameraController.cpp +++ b/Base/SceneElements/Controllers/imstkFLSCameraController.cpp @@ -76,7 +76,10 @@ FLSCameraController::getCameraAngulationTranslationOffset() const void FLSCameraController::runModule() { - this->setCameraHeadAngleOffset(arduinoClient->getRoll()); + if (arduinoActive) + { + this->setCameraHeadAngleOffset(arduinoClient->getRoll() - m_rollOffset); + } auto roff = Quatd(Eigen::AngleAxisd(m_cameraHeadAngleOffset*PI / 180., Vec3d(0., 0., 1.))); roff *= m_cameraAngulationRotOffset; this->setCameraRotationOffset(roff); diff --git a/Examples/Sandbox/main.cpp b/Examples/Sandbox/main.cpp index 574a8c363..a54023db9 100644 --- a/Examples/Sandbox/main.cpp +++ b/Examples/Sandbox/main.cpp @@ -697,9 +697,11 @@ void testCameraController() cam->setPosition(imstk::Vec3d(0, 0, 10)); #ifdef iMSTK_USE_OPENHAPTICS + + auto camControllerInput = std::make_shared<CameraController>(*cam, client); // Set camera controller - auto camController = cam->setupController(client); + auto camController = cam->setController(camControllerInput); //camController->setTranslationScaling(100); //LOG(INFO) << camController->getTranslationOffset(); // should be the same than initial cam position camController->setInversionFlags(imstk::CameraController::InvertFlag::rotY | -- GitLab