Skip to content
Snippets Groups Projects
Commit 36290515 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Some work to improve node listings

parent 18a30aa5
No related branches found
No related tags found
1 merge request!151Implements #216 triangle renderer
...@@ -13,7 +13,7 @@ int main(int argc, char **argv) { ...@@ -13,7 +13,7 @@ int main(int argc, char **argv) {
ftl::net::Universe *net = ftl::create<ftl::net::Universe>(root, "net"); ftl::net::Universe *net = ftl::create<ftl::net::Universe>(root, "net");
net->start(); net->start();
//net->waitConnections(); net->waitConnections();
ftl::ctrl::Master *controller = new ftl::ctrl::Master(root, net); ftl::ctrl::Master *controller = new ftl::ctrl::Master(root, net);
controller->onLog([](const ftl::ctrl::LogEvent &e){ controller->onLog([](const ftl::ctrl::LogEvent &e){
......
...@@ -225,17 +225,23 @@ ftl::gui::Screen::Screen(ftl::Configurable *proot, ftl::net::Universe *pnet, ftl ...@@ -225,17 +225,23 @@ ftl::gui::Screen::Screen(ftl::Configurable *proot, ftl::net::Universe *pnet, ftl
popup->setLayout(new GroupLayout()); popup->setLayout(new GroupLayout());
popup->setTheme(toolbuttheme); popup->setTheme(toolbuttheme);
auto node_details = ctrl_->getSlaves(); //net_->onConnect([this,popup](ftl::net::Peer *p) {
std::vector<std::string> node_titles; {
LOG(INFO) << "NET CONNECT";
for (auto &d : node_details) { auto node_details = ctrl_->getSlaves();
auto peer = ftl::UUID(d["id"].get<std::string>()); std::vector<std::string> node_titles;
itembutton = new Button(popup, d["title"].get<std::string>());
itembutton->setCallback([this,popup,peer]() { for (auto &d : node_details) {
auto config_window = new ConfigWindow(this, ctrl_, peer); LOG(INFO) << "ADDING TITLE: " << d.dump();
config_window->setTheme(windowtheme); 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 = new Button(popup, "Local");
itembutton->setCallback([this,popup]() { itembutton->setCallback([this,popup]() {
......
...@@ -86,6 +86,7 @@ vector<string> Master::getConfigurables() { ...@@ -86,6 +86,7 @@ vector<string> Master::getConfigurables() {
vector<string> Master::getConfigurables(const ftl::UUID &peer) { vector<string> Master::getConfigurables(const ftl::UUID &peer) {
try { try {
LOG(INFO) << "LISTING CONFIGS";
return net_->call<vector<string>>(peer, "list_configurables"); return net_->call<vector<string>>(peer, "list_configurables");
} catch (...) { } catch (...) {
return {}; return {};
......
...@@ -63,6 +63,7 @@ class Triangular : public ftl::render::Renderer { ...@@ -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 _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 _dibr(cudaStream_t);
void _mesh(cudaStream_t);
}; };
} }
......
...@@ -268,12 +268,27 @@ void Triangular::_dibr(cudaStream_t stream) { ...@@ -268,12 +268,27 @@ void Triangular::_dibr(cudaStream_t stream) {
continue; continue;
} }
/*ftl::cuda::dibr_merge( ftl::cuda::dibr_merge(
f.createTexture<float4>(Channel::Points), f.createTexture<float4>(Channel::Points),
f.createTexture<float4>(Channel::Normals), f.createTexture<float4>(Channel::Normals),
temp_.createTexture<int>(Channel::Depth2), temp_.createTexture<int>(Channel::Depth2),
params_, backcull_, stream 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>()); auto pose = MatrixConversion::toCUDA(s->getPose().cast<float>());
...@@ -444,7 +459,11 @@ bool Triangular::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out) { ...@@ -444,7 +459,11 @@ bool Triangular::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out) {
} }
// Create and render triangles for depth // Create and render triangles for depth
_dibr(stream_); if (splat_) {
_mesh(stream_);
} else {
_dibr(stream_);
}
// Generate normals // Generate normals
ftl::cuda::normals(accum_.createTexture<float4>(Channel::Normals, Format<float4>(camera.width, camera.height)), ftl::cuda::normals(accum_.createTexture<float4>(Channel::Normals, Format<float4>(camera.width, camera.height)),
......
...@@ -229,7 +229,7 @@ void NetSource::_processConfig(const ftl::codecs::Packet &pkt) { ...@@ -229,7 +229,7 @@ void NetSource::_processConfig(const ftl::codecs::Packet &pkt) {
auto unpacked = msgpack::unpack((const char*)pkt.data.data(), pkt.data.size()); auto unpacked = msgpack::unpack((const char*)pkt.data.data(), pkt.data.size());
unpacked.get().convert(cfg); 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 // TODO: This needs to be put in safer / better location
host_->set(std::get<0>(cfg), nlohmann::json::parse(std::get<1>(cfg))); host_->set(std::get<0>(cfg), nlohmann::json::parse(std::get<1>(cfg)));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment