1

语境

我正在尝试从视差图中可视化 3d 点云。它与一张地图完美配合。

问题

我想更新窗口中的内容。当我调用 run() 方法时,新线程被打开,在窗口关闭之前我什么也做不了。我想清除窗口中的内容并在不关闭窗口的情况下显示新的云,所以它就像动画一样。

代码

我已经创建了 Visualizer 对象,并在上面做了所有事情。

    vis = open3d.visualization.Visualizer()
    vis.create_window()
    cloud = open3d.io.read_point_cloud(out_fn) # out_fn is file name
    vis.add_geometry(cloud)
    vis.run()
4

1 回答 1

1

open3d.visualization.Visualizer 类具有 .update_geometry() 和 .remove_geometry() 函数,您可以使用它来实现这一点。您可以尝试的另一种方法是使用 open3d.visualization.VisualizerWithKeyCallback 类。

vis = o3d.visualization.VisualizerWithKeyCallback()
cloud = open3d.io.read_point_cloud(out_fn)
vis.create_window()
vis.register_key_callback(key, your_update_function)
vis.add_geometry(cloud)
vis.run()

def your_update_function():
    #Your update routine
    vis.update_geometry(cloud)
    vis.update_renderer()
    vis.poll_events()
    vis.run()
于 2021-01-14T23:03:50.440 回答