diff --git a/applications/gui/src/main.cpp b/applications/gui/src/main.cpp index 974afff1473bd4aad7ecf59575f8735808c35e72..50bc3638c2e26197fbcf5b74dadacd4b6a49d0ad 100644 --- a/applications/gui/src/main.cpp +++ b/applications/gui/src/main.cpp @@ -13,7 +13,7 @@ int main(int argc, char **argv) { ftl::net::Universe *net = ftl::create<ftl::net::Universe>(root, "net"); net->start(); - //net->waitConnections(); + net->waitConnections(); ftl::ctrl::Master *controller = new ftl::ctrl::Master(root, net); controller->onLog([](const ftl::ctrl::LogEvent &e){ diff --git a/applications/gui/src/screen.cpp b/applications/gui/src/screen.cpp index bb69755fbdcad39fb89da9c3f521c2c42ceb72dd..76d727a996abf445fb09a0d0237d13cce8b974c8 100644 --- a/applications/gui/src/screen.cpp +++ b/applications/gui/src/screen.cpp @@ -225,17 +225,23 @@ ftl::gui::Screen::Screen(ftl::Configurable *proot, ftl::net::Universe *pnet, ftl popup->setLayout(new GroupLayout()); popup->setTheme(toolbuttheme); - auto node_details = ctrl_->getSlaves(); - std::vector<std::string> node_titles; - - for (auto &d : node_details) { - auto peer = ftl::UUID(d["id"].get<std::string>()); - itembutton = new Button(popup, d["title"].get<std::string>()); - itembutton->setCallback([this,popup,peer]() { - auto config_window = new ConfigWindow(this, ctrl_, peer); - config_window->setTheme(windowtheme); - }); + //net_->onConnect([this,popup](ftl::net::Peer *p) { + { + LOG(INFO) << "NET CONNECT"; + auto node_details = ctrl_->getSlaves(); + std::vector<std::string> node_titles; + + for (auto &d : node_details) { + LOG(INFO) << "ADDING TITLE: " << d.dump(); + auto peer = ftl::UUID(d["id"].get<std::string>()); + auto itembutton = new Button(popup, d["title"].get<std::string>()); + itembutton->setCallback([this,popup,peer]() { + auto config_window = new ConfigWindow(this, ctrl_, peer); + config_window->setTheme(windowtheme); + }); + } } + //}); itembutton = new Button(popup, "Local"); itembutton->setCallback([this,popup]() { diff --git a/components/control/cpp/src/master.cpp b/components/control/cpp/src/master.cpp index a1248fac771dcd58a4654244296f4f0c608a5a34..a13a67a90b4bc7ccc1bd2c893580fc286dfb330a 100644 --- a/components/control/cpp/src/master.cpp +++ b/components/control/cpp/src/master.cpp @@ -86,6 +86,7 @@ vector<string> Master::getConfigurables() { vector<string> Master::getConfigurables(const ftl::UUID &peer) { try { + LOG(INFO) << "LISTING CONFIGS"; return net_->call<vector<string>>(peer, "list_configurables"); } catch (...) { return {}; diff --git a/components/renderers/cpp/include/ftl/render/tri_render.hpp b/components/renderers/cpp/include/ftl/render/tri_render.hpp index e07e9577eb400f1749d70d529a599ac440837e62..6d03fd4a8d39e54202805e4b2b0353ae976e2338 100644 --- a/components/renderers/cpp/include/ftl/render/tri_render.hpp +++ b/components/renderers/cpp/include/ftl/render/tri_render.hpp @@ -63,6 +63,7 @@ class Triangular : public ftl::render::Renderer { void __reprojectChannel(ftl::rgbd::Frame &, ftl::codecs::Channel in, ftl::codecs::Channel out, cudaStream_t); void _reprojectChannel(ftl::rgbd::Frame &, ftl::codecs::Channel in, ftl::codecs::Channel out, cudaStream_t); void _dibr(cudaStream_t); + void _mesh(cudaStream_t); }; } diff --git a/components/renderers/cpp/src/tri_render.cpp b/components/renderers/cpp/src/tri_render.cpp index 0e405f9e4677973e95f251039cbac239d03c65e9..58e21c3672343ad3a4a0a73a84ef8833f85da497 100644 --- a/components/renderers/cpp/src/tri_render.cpp +++ b/components/renderers/cpp/src/tri_render.cpp @@ -268,12 +268,27 @@ void Triangular::_dibr(cudaStream_t stream) { continue; } - /*ftl::cuda::dibr_merge( + ftl::cuda::dibr_merge( f.createTexture<float4>(Channel::Points), f.createTexture<float4>(Channel::Normals), temp_.createTexture<int>(Channel::Depth2), params_, backcull_, stream - );*/ + ); + } +} + +void Triangular::_mesh(cudaStream_t stream) { + cv::cuda::Stream cvstream = cv::cuda::StreamAccessor::wrapStream(stream); + temp_.get<GpuMat>(Channel::Depth2).setTo(cv::Scalar(0x7FFFFFFF), cvstream); + + for (size_t i=0; i < scene_->frames.size(); ++i) { + auto &f = scene_->frames[i]; + auto *s = scene_->sources[i]; + + if (f.empty(Channel::Depth + Channel::Colour)) { + LOG(ERROR) << "Missing required channel"; + continue; + } auto pose = MatrixConversion::toCUDA(s->getPose().cast<float>()); @@ -444,7 +459,11 @@ bool Triangular::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out) { } // Create and render triangles for depth - _dibr(stream_); + if (splat_) { + _mesh(stream_); + } else { + _dibr(stream_); + } // Generate normals ftl::cuda::normals(accum_.createTexture<float4>(Channel::Normals, Format<float4>(camera.width, camera.height)), diff --git a/components/rgbd-sources/src/sources/net/net.cpp b/components/rgbd-sources/src/sources/net/net.cpp index 16c5994d491bd1d7794166a26a6174511307cc9b..56b6355eb9696c6684c46a80a6fb3ff1e0584d5a 100644 --- a/components/rgbd-sources/src/sources/net/net.cpp +++ b/components/rgbd-sources/src/sources/net/net.cpp @@ -229,7 +229,7 @@ void NetSource::_processConfig(const ftl::codecs::Packet &pkt) { auto unpacked = msgpack::unpack((const char*)pkt.data.data(), pkt.data.size()); unpacked.get().convert(cfg); - LOG(INFO) << "Config Received: " << std::get<1>(cfg); + //LOG(INFO) << "Config Received: " << std::get<1>(cfg); // TODO: This needs to be put in safer / better location host_->set(std::get<0>(cfg), nlohmann::json::parse(std::get<1>(cfg))); }