From 2c9266abd0ead15fb0e17a68cf764d9226b7888f Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Wed, 18 Sep 2019 18:43:15 +0300
Subject: [PATCH] Fix pose inverse bug

---
 components/renderers/cpp/src/splat_render.cpp | 24 +++++++------------
 .../rgbd-sources/include/ftl/rgbd/frame.hpp   |  1 -
 components/rgbd-sources/src/frame.cpp         |  3 ---
 3 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/components/renderers/cpp/src/splat_render.cpp b/components/renderers/cpp/src/splat_render.cpp
index f6e05eeb4..db6fa402d 100644
--- a/components/renderers/cpp/src/splat_render.cpp
+++ b/components/renderers/cpp/src/splat_render.cpp
@@ -23,8 +23,6 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 	SHARED_LOCK(scene_->mtx, lk);
 	if (!src->isReady()) return false;
 
-	if (scene_->frames.size() > 0) LOG(INFO) << "Render ready2 " << (unsigned int)scene_->frames[0].getChannels();
-
 	const auto &camera = src->parameters();
 
 	//cudaSafeCall(cudaSetDevice(scene_->getCUDADevice()));
@@ -42,8 +40,6 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 
 	cv::cuda::Stream cvstream = cv::cuda::StreamAccessor::wrapStream(stream);
 
-	LOG(INFO) << "Render ready1";
-
 	// Create buffers if they don't exist
 	/*if ((unsigned int)depth1_.width() != camera.width || (unsigned int)depth1_.height() != camera.height) {
 		depth1_ = ftl::cuda::TextureObject<int>(camera.width, camera.height);
@@ -77,15 +73,13 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 	params.m_viewMatrixInverse = MatrixConversion::toCUDA(src->getPose().cast<float>());
 	params.camera = camera;
 
-	LOG(INFO) << "VPOSE = " << src->getPose();
-
 	// Clear all channels to 0 or max depth
 	temp_.get<GpuMat>(Channel::Depth).setTo(cv::Scalar(0x7FFFFFFF), cvstream);
 	temp_.get<GpuMat>(Channel::Depth2).setTo(cv::Scalar(0x7FFFFFFF), cvstream);
 	out.get<GpuMat>(Channel::Depth).setTo(cv::Scalar(1000.0f), cvstream);
 	out.get<GpuMat>(Channel::Colour).setTo(cv::Scalar(76,76,76), cvstream);
 
-	LOG(INFO) << "Render ready: " << camera.width << "," << camera.height;
+	//LOG(INFO) << "Render ready: " << camera.width << "," << camera.height;
 
 	// Render each camera into virtual view
 	for (size_t i=0; i<scene_->frames.size(); ++i) {
@@ -95,19 +89,17 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 		if (f.empty(Channel::Depth + Channel::Colour)) {
 			LOG(ERROR) << "Missing required channel";
 			continue;
-		} else {
-			LOG(INFO) << "Channels found";
 		}
 
 		// Needs to create points channel first?
 		if (!f.hasChannel(Channel::Points)) {
-			LOG(INFO) << "Creating points... " << s->parameters().width;
+			//LOG(INFO) << "Creating points... " << s->parameters().width;
 			
 			auto &t = f.createTexture<float4>(Channel::Points, Format<float4>(f.get<GpuMat>(Channel::Colour).size()));
-			auto pose = MatrixConversion::toCUDA(s->getPose().cast<float>().inverse());
+			auto pose = MatrixConversion::toCUDA(s->getPose().cast<float>()); //.inverse());
 			ftl::cuda::point_cloud(t, f.createTexture<float>(Channel::Depth), s->parameters(), pose, stream);
 
-			LOG(INFO) << "POINTS Added";
+			//LOG(INFO) << "POINTS Added";
 		}
 
 		ftl::cuda::dibr_merge(
@@ -116,7 +108,7 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 			params, stream
 		);
 
-		LOG(INFO) << "DIBR DONE";
+		//LOG(INFO) << "DIBR DONE";
 	}
 
 		//ftl::cuda::dibr(depth1_, colour1_, normal1_, depth2_, colour_tmp_, depth3_, scene_->cameraCount(), params, stream);
@@ -128,7 +120,7 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 		//ftl::cuda::mls_render_depth(depth1_, depth3_, params, scene_->cameraCount(), stream);
 
 		if (src->getChannel() == Channel::Depth) {
-			LOG(INFO) << "Rendering depth";
+			//LOG(INFO) << "Rendering depth";
 			//ftl::cuda::int_to_float(depth1_, depth2_, 1.0f / 1000.0f, stream);
 			if (value("splatting",  false)) {
 				//ftl::cuda::splat_points(depth1_, colour1_, normal1_, depth2_, colour2_, params, stream);
@@ -155,7 +147,7 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 			//	src->writeFrames(colour1_, depth2_, stream);
 			//}
 		} else if (src->getChannel() == Channel::Right) {
-			LOG(INFO) << "Rendering right";
+			//LOG(INFO) << "Rendering right";
 			// Adjust pose to right eye position
 			Eigen::Affine3f transform(Eigen::Translation3f(camera.baseline,0.0f,0.0f));
 			Eigen::Matrix4f matrix =  src->getPose().cast<float>() * transform.matrix();
@@ -167,7 +159,7 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda
 			//src->writeFrames(ts, colour1_, colour2_, stream);
 			//src->write(scene_.timestamp, output_, stream);
 		} else {
-			LOG(INFO) << "No second rendering";
+			//LOG(INFO) << "No second rendering";
 			//if (value("splatting",  false)) {
 				//ftl::cuda::splat_points(depth1_, colour1_, normal1_, depth2_, colour2_, params, stream);
 				//src->writeFrames(ts, colour1_, depth2_, stream);
diff --git a/components/rgbd-sources/include/ftl/rgbd/frame.hpp b/components/rgbd-sources/include/ftl/rgbd/frame.hpp
index 26da81422..252ff271d 100644
--- a/components/rgbd-sources/include/ftl/rgbd/frame.hpp
+++ b/components/rgbd-sources/include/ftl/rgbd/frame.hpp
@@ -244,7 +244,6 @@ ftl::cuda::TextureObject<T> &Frame::createTexture(ftl::rgbd::Channel c) {
 		LOG(INFO) << "Creating texture object";
 		m.tex = ftl::cuda::TextureObject<T>(m.gpu);
 	} else if (m.tex.cvType() != ftl::traits::OpenCVType<T>::value || m.tex.width() != m.gpu.cols || m.tex.height() != m.gpu.rows || m.tex.devicePtr() != m.gpu.data) {
-		LOG(INFO) << "Recreating texture object";
 		m.tex.free();
 		m.tex = ftl::cuda::TextureObject<T>(m.gpu);
 	}
diff --git a/components/rgbd-sources/src/frame.cpp b/components/rgbd-sources/src/frame.cpp
index 5a10e1ff1..aaa55c756 100644
--- a/components/rgbd-sources/src/frame.cpp
+++ b/components/rgbd-sources/src/frame.cpp
@@ -41,7 +41,6 @@ void Frame::upload(Channels c, cv::cuda::Stream stream) {
 
 bool Frame::empty(ftl::rgbd::Channels channels) {
 	for (auto c : channels) {
-		LOG(INFO) << "Check empty for " << (int)c;
 		if (empty(c)) return true;
 	}
 	return false;
@@ -67,8 +66,6 @@ void Frame::swapTo(ftl::rgbd::Channels channels, Frame &f) {
 
 			cv::swap(m1.host, m2.host);
 			cv::cuda::swap(m1.gpu, m2.gpu);
-
-			LOG(INFO) << "Swapping channel: " << static_cast<int>(c);
 		}
 	}
 }
-- 
GitLab