From 4b3b7fead0750573c448f442811481e8baaa2ff3 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 30 Dec 2020 15:22:20 +0100 Subject: [PATCH] vr:: vr_distance correct in 2.5D --- vr.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/vr.cpp b/vr.cpp index 20aab092..2c542add 100644 --- a/vr.cpp +++ b/vr.cpp @@ -418,9 +418,17 @@ EX ld absolute_unit_in_meters = 3; /** what point and cell is the controller number id pointing to */ +eModel pmodel_3d_version() { + if(pmodel == mdGeodesic) return mdEquidistant; + if(pmodel == mdPerspective) return nonisotropic ? mdHorocyclic : mdEquidistant; + return pmodel; + } + ld vr_distance(shiftpoint h, int id) { hyperpoint hscr; - applymodel(h, hscr); + h.h = hmd_pre_for[2] * h.h; + eModel md = pmodel_3d_version(); + apply_other_model(h, hscr, md); E4; hscr[3] = 1; hyperpoint hc = inverse(sm * hmd_at * vrdata.pose_matrix[id] * sm) * hmd_mv * hscr; if(hc[2] > 0.1) return 1e6; /* behind */ @@ -428,7 +436,6 @@ ld vr_distance(shiftpoint h, int id) { } EX void compute_point(int id, shiftpoint& res, cell*& c) { - println(hlog, "computing point"); gen_mv(); c = nullptr; ld best = 1e9;