Skip to content
Snippets Groups Projects
Commit 859e22f8 authored by Sebastian Hahta's avatar Sebastian Hahta
Browse files

rotation on VR headset works

parent 2ddd3b45
No related branches found
No related tags found
2 merge requests!139feature/vr,!138OpenVR support
Pipeline #15740 passed
......@@ -353,37 +353,33 @@ const GLTexture &ftl::gui::Camera::captureFrame() {
Eigen::Matrix4d eye_l = ConvertSteamVRMatrixToMatrix4(
vr::VRSystem()->GetEyeToHeadTransform(vr::Eye_Left));
//Eigen::Matrix4d eye_r = ConvertSteamVRMatrixToMatrix4(
// vr::VRSystem()->GetEyeToHeadTransform(vr::Eye_Right));
//LOG(INFO) << ConvertSteamVRMatrixToMatrix4(vr::VRSystem()->GetProjectionMatrix(vr::Eye_Left, 0.01, 10.0));
//LOG(INFO) << "\n" << ConvertSteamVRMatrixToMatrix4(vr::VRSystem()->GetProjectionMatrix(vr::Eye_Left, 0.1, 100.0));
// assumes eye_l(3, 0) = -eye_r(3, 0)
// => baseline = abs(2*eye_l(3, 0))
float baseline_in = 2.0 * -eye_l(0, 3);
if (baseline_in != baseline_) {
baseline_ = baseline_in;
LOG(INFO) << source()->getNet()->getID();
/*
screen_-> control()->set(
source()->getNet()->getPeerId("tcp://localhost:9001"),
source()->getURI() + "/baseline", baseline_);
LOG(INFO) << "Baseline updated, new value: " << baseline_;*/
// TODO: update baseline on ftl-reconstruct
}
auto pose = ConvertSteamVRMatrixToMatrix4( rTrackedDevicePose_[vr::k_unTrackedDeviceIndex_Hmd].mDeviceToAbsoluteTracking );
pose = pose.inverse();
Eigen::Matrix4d pose = ConvertSteamVRMatrixToMatrix4(rTrackedDevicePose_[vr::k_unTrackedDeviceIndex_Hmd].mDeviceToAbsoluteTracking);
// translate to L eye
Eigen::Translation3d trans(eye_);
Eigen::Affine3d t(trans);
Eigen::Matrix4d viewPose = t.matrix() * pose;
// flip rotation (different coordinate axis on OpenGL/ftl)
Eigen::Vector3d ea = viewPose.block<3, 3>(0, 0).eulerAngles(0, 1, 2);
Eigen::Matrix3d R;
R = Eigen::AngleAxisd(-ea[0], Eigen::Vector3d::UnitX()) *
Eigen::AngleAxisd(ea[1], Eigen::Vector3d::UnitY()) *
Eigen::AngleAxisd(-ea[2], Eigen::Vector3d::UnitZ());
viewPose.block<3, 3>(0, 0) = R;
if (src_->hasCapabilities(ftl::rgbd::kCapMovable)) src_->setPose(viewPose);
} else {
//DLOG(ERROR) << "No VR Pose";
LOG(ERROR) << "No VR Pose";
}
#endif
} else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment