From cf180fb98b49b027379455c3abbedb5c444264e7 Mon Sep 17 00:00:00 2001 From: Walter Perdan Date: Thu, 6 Feb 2025 18:38:30 +0100 Subject: [PATCH 1/2] improves to viewMatrix_GL and related code --- WebARKit/WebARKitPattern.cpp | 4 +++- .../WebARKitOpticalTracking/WebARKitTracker.cpp | 10 +++++++++- WebARKit/include/WebARKitPattern.h | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/WebARKit/WebARKitPattern.cpp b/WebARKit/WebARKitPattern.cpp index c663cf2..fc2368a 100644 --- a/WebARKit/WebARKitPattern.cpp +++ b/WebARKit/WebARKitPattern.cpp @@ -3,7 +3,7 @@ WebARKitPatternTrackingInfo::WebARKitPatternTrackingInfo() { pose3d = cv::Mat::zeros(4, 4, CV_64FC1); - glViewMatrix = cv::Mat::zeros(4, 4, CV_64F); + glViewMatrix = cv::Mat::zeros(4, 4, CV_64FC1); m_scale = 1.0f; } @@ -67,6 +67,8 @@ void WebARKitPatternTrackingInfo::updateTrackable() { void WebARKitPatternTrackingInfo::computeGLviewMatrix() { cv::transpose(pose3d, glViewMatrix); } +void WebARKitPatternTrackingInfo::computeGLviewMatrix(cv::Mat &pose) { cv::transpose(pose, glViewMatrix); } + void WebARKitPatternTrackingInfo::invertPose() { /*cv::Mat invertPose(3, 4, CV_64FC1); diff --git a/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp b/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp index 605fa04..4667dcd 100644 --- a/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp +++ b/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp @@ -78,6 +78,14 @@ class WebARKitTracker::WebARKitTrackerImpl { webarkit::cameraProjectionMatrix(camData, 0.1, 1000.0, frameWidth, frameHeight, m_cameraProjectionMatrix); + for (auto i = 0; i < 16; i++) { + + WEBARKIT_LOGi("Camera Proj Matrix: %.2f\n", m_cameraProjectionMatrix[i]); + + } + + //1.9102363924347978, 0, 0, 0, 0, 2.5377457054523322, 0, 0, -0.013943280545895442, -0.005830389685211879, -1.0000002000000199, -1, 0, 0, -0.00020000002000000202, 0 + _pyramid.clear(); _prevPyramid.clear(); _currentlyTrackedMarkers = 0; @@ -383,6 +391,7 @@ class WebARKitTracker::WebARKitTrackerImpl { // _patternTrackingInfo.computePose(_pattern.points3d, warpedCorners, m_camMatrix, m_distortionCoeff); _patternTrackingInfo.getTrackablePose(_pose); _patternTrackingInfo.updateTrackable(); + _patternTrackingInfo.computeGLviewMatrix(_pose); fill_output(m_H); WEBARKIT_LOGi("Marker tracked ! Num. matches : %d\n", numMatches); } @@ -722,7 +731,6 @@ class WebARKitTracker::WebARKitTrackerImpl { cv::Mat m_distortionCoeff; std::array m_cameraProjectionMatrix; - private: int _maxNumberOfMarkersToTrack; diff --git a/WebARKit/include/WebARKitPattern.h b/WebARKit/include/WebARKitPattern.h index df9b11c..06de10c 100644 --- a/WebARKit/include/WebARKitPattern.h +++ b/WebARKit/include/WebARKitPattern.h @@ -47,6 +47,8 @@ class WebARKitPatternTrackingInfo { void computeGLviewMatrix(); + void computeGLviewMatrix(cv::Mat &pose); + private: float m_scale; void invertPose(); From eb03aeb120e958f459d5e90aa9eb3f8c72595a68 Mon Sep 17 00:00:00 2001 From: Walter Perdan Date: Fri, 7 Feb 2025 16:52:43 +0100 Subject: [PATCH 2/2] improved getTransformationMatrix function to be tested --- WebARKit/WebARKitManager.cpp | 2 +- .../WebARKitOpticalTracking/WebARKitTracker.cpp | 6 ++++++ .../WebARKitOpticalTracking/WebARKitTracker.h | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/WebARKit/WebARKitManager.cpp b/WebARKit/WebARKitManager.cpp index 703b4da..099489f 100644 --- a/WebARKit/WebARKitManager.cpp +++ b/WebARKit/WebARKitManager.cpp @@ -111,7 +111,7 @@ cv::Mat WebARKitManager::getGLViewMatrix() { std::array WebARKitManager::getTransformationMatrix() { std::array transformationMatrix; - webarkit::arglCameraViewRHf(m_tracker->getPoseMatrix(), transformationMatrix, 1.0f); + webarkit::arglCameraViewRHf((float (*)[4])m_tracker->getPoseMatrix2(), (float*)transformationMatrix.data(), 1.0f); return transformationMatrix; } diff --git a/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp b/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp index 4667dcd..2d6ed35 100644 --- a/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp +++ b/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp @@ -183,6 +183,9 @@ class WebARKitTracker::WebARKitTrackerImpl { float* getPoseMatrix2() { return (float*)_patternTrackingInfo.trans; } + //float[3][4] getPoseMatrix3() { return _patternTrackingInfo.trans; } + //float (*getPoseMatrix3())[3][4] { return &_patternTrackingInfo.trans; } + cv::Mat getGLViewMatrix() { return _patternTrackingInfo.glViewMatrix; }; std::array getCameraProjectionMatrix() { return m_cameraProjectionMatrix; }; @@ -813,6 +816,9 @@ cv::Mat WebARKitTracker::getPoseMatrix() { return _trackerImpl->getPoseMatrix(); float* WebARKitTracker::getPoseMatrix2() { return _trackerImpl->getPoseMatrix2(); } +//float[3][4] WebARKitTracker::getPoseMatrix3() { return _trackerImpl->getPoseMatrix3(); } +//float (*WebARKitTracker::getPoseMatrix3())[3][4]) { return &_trackerImpl->getPoseMatrix3(); } + cv::Mat WebARKitTracker::getGLViewMatrix() { return _trackerImpl->getGLViewMatrix(); } std::array WebARKitTracker::getCameraProjectionMatrix() { diff --git a/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/include/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.h b/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/include/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.h index edd4c5e..6494877 100644 --- a/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/include/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.h +++ b/WebARKit/WebARKitTrackers/WebARKitOpticalTracking/include/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.h @@ -35,6 +35,8 @@ class WebARKitTracker { float* getPoseMatrix2(); + //float (*WebARKitTracker::getPoseMatrix3()[3][4]); + cv::Mat getGLViewMatrix(); std::array getCameraProjectionMatrix();