From b660336b2a728f6ecb7f3286715c6ae6c0f0b482 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 2 Jul 2013 16:59:03 -0700 Subject: [PATCH] Fix for camera movement with webcam enabled; don't bother using roll from webcam if we have the gyros; reinstate head orientation scaling; don't bother using gyro position. --- interface/src/Application.cpp | 2 +- interface/src/Avatar.cpp | 10 ++++++---- interface/src/SerialInterface.cpp | 6 ------ 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 70f7287aab..efd733937c 100755 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -363,7 +363,7 @@ void Application::paintGL() { glEnable(GL_LINE_SMOOTH); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - float headCameraScale = _serialHeadSensor.isActive() ? _headCameraPitchYawScale : 1.0f; + float headCameraScale = (_serialHeadSensor.isActive() || _webcam.isActive()) ? _headCameraPitchYawScale : 1.0f; if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { _myCamera.setTightness (100.0f); diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index 277cca906e..97e0f71c5a 100755 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -286,15 +286,17 @@ void Avatar::reset() { // Update avatar head rotation with sensor data void Avatar::updateHeadFromGyrosAndOrWebcam() { - const float AMPLIFY_PITCH = 1.f; - const float AMPLIFY_YAW = 1.f; - const float AMPLIFY_ROLL = 1.f; + const float AMPLIFY_PITCH = 2.f; + const float AMPLIFY_YAW = 2.f; + const float AMPLIFY_ROLL = 2.f; SerialInterface* gyros = Application::getInstance()->getSerialHeadSensor(); Webcam* webcam = Application::getInstance()->getWebcam(); glm::vec3 estimatedPosition, estimatedRotation; if (gyros->isActive()) { - estimatedPosition = gyros->getEstimatedPosition(); + if (webcam->isActive()) { + estimatedPosition = webcam->getEstimatedPosition(); + } estimatedRotation = gyros->getEstimatedRotation(); } else if (webcam->isActive()) { diff --git a/interface/src/SerialInterface.cpp b/interface/src/SerialInterface.cpp index 63e5bd61c6..7158cb84b6 100644 --- a/interface/src/SerialInterface.cpp +++ b/interface/src/SerialInterface.cpp @@ -341,12 +341,6 @@ void SerialInterface::readData(float deltaTime) { _estimatedRotation = safeEulerAngles(estimatedRotation); - // Fuse gyro roll with webcam roll - if (webcam->isActive()) { - _estimatedRotation.z = glm::mix(_estimatedRotation.z, webcam->getEstimatedRotation().z, - 1.0f / SENSOR_FUSION_SAMPLES); - } - totalSamples++; }