У меня есть использовал open3d::visualization::Visualizer — который, очевидно, считается «устаревшим» — вместо, скажем, open3d::visualization::gui::Application. Я бы предпочел использовать более новый класс Application, но и с этим у меня проблемы.
Этот код, использующий устаревший визуализатор, работает, показывая окно с красный шарик в центре:
Код: Выделить всё
void test()
{
open3d::PrintOpen3DVersion();
auto vis = open3d::visualization::Visualizer();
vis.CreateVisualizerWindow();
auto ball = open3d::geometry::TriangleMesh::CreateSphere(5);
ball->ComputeVertexNormals();
ball->PaintUniformColor({1, 0, 0});
vis.AddGeometry(ball);
vis.Run();
}
Код: Выделить всё
void test2()
{
open3d::PrintOpen3DVersion();
open3d::visualization::gui::Application::GetInstance().Initialize();
auto vis = open3d::visualization::visualizer::O3DVisualizer("name", 500, 500);
auto ball = open3d::geometry::TriangleMesh::CreateSphere(5);
ball->ComputeVertexNormals();
ball->PaintUniformColor({1, 0, 0});
vis.AddGeometry("ball", {ball});
open3d::visualization::gui::Application::GetInstance().Run();
}
Код: Выделить всё
libc++abi: terminating due to uncaught exception of type std::runtime_error:
[Open3D Error] (std::string (anonymous namespace)::FindResourcePath(int,
const char **))
/Users/cwr/Documents/code/Open3D/cpp/open3d/visualization/gui/
Application.cpp:96: Could not find resource directory.
Было бы очень полезно увидеть современный пример кода C++ с использованием класса Application.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -directory