diff --git a/applications/reconstruct/include/ftl/ray_cast_sdf.hpp b/applications/reconstruct/include/ftl/ray_cast_sdf.hpp index 658e8ceebe3ea526cc129e609a6bbe1ef43c5f8a..d796b1cfc209d3f69c378cacb7fd4a98b638c0ae 100644 --- a/applications/reconstruct/include/ftl/ray_cast_sdf.hpp +++ b/applications/reconstruct/include/ftl/ray_cast_sdf.hpp @@ -18,6 +18,8 @@ public: hash_render_ = value("hash_renderer", false); } + bool isIntegerDepth() const { return hash_render_; } + ~CUDARayCastSDF(void) { destroy(); } diff --git a/applications/reconstruct/src/virtual_source.cpp b/applications/reconstruct/src/virtual_source.cpp index 072f71cb58d3f741714432077748ace9d6975bc5..157b71a3d420ab08775c2842b2cb5bffd3aa6898 100644 --- a/applications/reconstruct/src/virtual_source.cpp +++ b/applications/reconstruct/src/virtual_source.cpp @@ -26,6 +26,7 @@ VirtualSource::VirtualSource(ftl::rgbd::Source *host) rgb_ = cv::Mat(cv::Size(params_.width,params_.height), CV_8UC3); idepth_ = cv::Mat(cv::Size(params_.width,params_.height), CV_32SC1); + depth_ = cv::Mat(cv::Size(params_.width,params_.height), CV_32FC1); } VirtualSource::~VirtualSource() { @@ -52,8 +53,12 @@ bool VirtualSource::grab() { rays_->render(scene_->getHashData(), scene_->getHashParams(), params, host_->getPose()); //unique_lock<mutex> lk(mutex_); - rays_->getRayCastData().download((int*)idepth_.data, (uchar3*)rgb_.data, rays_->getRayCastParams()); - idepth_.convertTo(depth_, CV_32FC1, 1.0f / 100.0f); + if (rays_->isIntegerDepth()) { + rays_->getRayCastData().download((int*)idepth_.data, (uchar3*)rgb_.data, rays_->getRayCastParams()); + idepth_.convertTo(depth_, CV_32FC1, 1.0f / 100.0f); + } else { + rays_->getRayCastData().download((int*)depth_.data, (uchar3*)rgb_.data, rays_->getRayCastParams()); + } } return true; }