diff --git a/applications/gui/src/main.cpp b/applications/gui/src/main.cpp index 2f71531d15da62d1c0cb7b758cd18c259d2632d6..d070e3941a2622fdbf5dd43840647a0edf29668f 100644 --- a/applications/gui/src/main.cpp +++ b/applications/gui/src/main.cpp @@ -241,10 +241,11 @@ class FTLApplication : public nanogui::Screen { //src_ = nullptr; eye_ = Eigen::Vector3f(0.0f, 0.0f, 0.0f); + neye_ = Eigen::Vector4f(0.0f, 0.0f, 0.0f, 0.0f); orientation_ = Eigen::Vector3f(0.0f, 0.0f, 0.0f); up_ = Eigen::Vector3f(0,1.0f,0); //lookPoint_ = Eigen::Vector3f(0.0f,0.0f,-4.0f); - lerpSpeed_ = 0.4f; + lerpSpeed_ = 0.999f; depth_ = false; ftime_ = (float)glfwGetTime(); @@ -324,30 +325,21 @@ class FTLApplication : public nanogui::Screen { if (Screen::keyboardEvent(key, scancode, action, modifiers)) { return true; } else { - LOG(INFO) << "Key press " << key << " - " << action; + //LOG(INFO) << "Key press " << key << " - " << action; if (key == 263 || key == 262) { float scalar = (key == 263) ? -0.1f : 0.1f; Eigen::Affine3f r = create_rotation_matrix(orientation_[0], orientation_[1], orientation_[2]); - Vector4f neye = r.matrix()*Vector4f(scalar,0.0,0.0,1.0); - eye_[0] += neye[0]; - eye_[1] += neye[1]; - eye_[2] += neye[2]; + neye_ += r.matrix()*Vector4f(scalar,0.0,0.0,1.0); return true; } else if (key == 264 || key == 265) { float scalar = (key == 264) ? -0.1f : 0.1f; Eigen::Affine3f r = create_rotation_matrix(orientation_[0], orientation_[1], orientation_[2]); - Vector4f neye = r.matrix()*Vector4f(0.0,0.0,scalar,1.0); - eye_[0] += neye[0]; - eye_[1] += neye[1]; - eye_[2] += neye[2]; + neye_ += r.matrix()*Vector4f(0.0,0.0,scalar,1.0); return true; } else if (key == 266 || key == 267) { float scalar = (key == 266) ? -0.1f : 0.1f; Eigen::Affine3f r = create_rotation_matrix(orientation_[0], orientation_[1], orientation_[2]); - Vector4f neye = r.matrix()*Vector4f(0.0,scalar,0.0,1.0); - eye_[0] += neye[0]; - eye_[1] += neye[1]; - eye_[2] += neye[2]; + neye_ += r.matrix()*Vector4f(0.0,scalar,0.0,1.0); return true; } else if (action == 1 && key == 'H') { swindow_->setVisible(!swindow_->visible()); @@ -371,17 +363,17 @@ class FTLApplication : public nanogui::Screen { if (src_) { cv::Mat rgb, depth; - //centre_ += (lookPoint_ - centre_) * (lerpSpeed_ * delta); - //Eigen::Matrix4f viewPose = lookAt<float>(eye_,centre_,up_).inverse(); + + // Lerp the Eye + eye_[0] += (neye_[0] - eye_[0]) * lerpSpeed_ * delta_; + eye_[1] += (neye_[1] - eye_[1]) * lerpSpeed_ * delta_; + eye_[2] += (neye_[2] - eye_[2]) * lerpSpeed_ * delta_; Eigen::Affine3f r = create_rotation_matrix(orientation_[0], orientation_[1], orientation_[2]); Eigen::Translation3f trans(eye_); Eigen::Affine3f t(trans); Eigen::Matrix4f viewPose = (t * r).matrix(); - //Eigen::Matrix4f viewPose = t.matrix(); - //viewPose *= r.matrix(); - src_->setPose(viewPose); src_->grab(); src_->getFrames(rgb, depth); @@ -399,7 +391,7 @@ class FTLApplication : public nanogui::Screen { case SourceWindow::Mode::depth: if (depth.rows == 0) { break; } imageSize = Vector2f(depth.cols,depth.rows); - depth.convertTo(tmp, CV_8U, 255.0f / 10.0f); // TODO(nick) + depth.convertTo(tmp, CV_8U, 255.0f / 10.0f); applyColorMap(tmp, tmp, cv::COLORMAP_JET); texture_.update(tmp); mImageID = texture_.texture(); @@ -463,6 +455,7 @@ class FTLApplication : public nanogui::Screen { //Source *src_; GLTexture texture_; Eigen::Vector3f eye_; + Eigen::Vector4f neye_; Eigen::Vector3f orientation_; Eigen::Vector3f up_; //Eigen::Vector3f lookPoint_;