From a20116379fa278874d3b3b98411aaf81fba7f109 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Mon, 3 Aug 2020 13:47:07 +0300 Subject: [PATCH] Add vr pose calibration timer --- components/streams/src/renderers/openvr_render.cpp | 8 +++++++- components/streams/src/renderers/openvr_render.hpp | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/components/streams/src/renderers/openvr_render.cpp b/components/streams/src/renderers/openvr_render.cpp index 6b571c62f..386c8b6aa 100644 --- a/components/streams/src/renderers/openvr_render.cpp +++ b/components/streams/src/renderers/openvr_render.cpp @@ -315,6 +315,8 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { auto viewPose = t.matrix() * rotmat_; if (!pose_calibrated_.test_and_set()) { + if (pose_calibration_start_ == -1) pose_calibration_start_ = ftl::timer::get_time(); + std::string headset_origin = host_->value("headset_origin", std::string("")); Eigen::Matrix4d horigin; horigin.setIdentity(); @@ -324,7 +326,11 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { } initial_pose_ = horigin*viewPose.inverse(); - if (host_->value("reset_pose", false)) pose_calibrated_.clear(); + if (host_->value("reset_pose", false) && ftl::timer::get_time() < pose_calibration_start_ + host_->value("calibration_time",10000)) { + pose_calibrated_.clear(); + } else { + pose_calibration_start_ = -1; + } } rgbdframe.setPose() = initial_pose_*viewPose; diff --git a/components/streams/src/renderers/openvr_render.hpp b/components/streams/src/renderers/openvr_render.hpp index 9accd58a4..3907b9c3e 100644 --- a/components/streams/src/renderers/openvr_render.hpp +++ b/components/streams/src/renderers/openvr_render.hpp @@ -44,6 +44,7 @@ class OpenVRRender : public ftl::render::BaseSourceImpl { ftl::operators::Graph *post_pipe_; std::atomic_flag pose_calibrated_; + int64_t pose_calibration_start_=-1; float baseline_; Eigen::Matrix4d initial_pose_; -- GitLab