繁体   English   中英

使用 open3d.visualization.O3DVisualizer 显示法线向量

[英]Display normal vectors with open3d.visualization.O3DVisualizer

我正在使用令人惊叹的 open3d Python 库来可视化一些点云。 我已经知道这些点的法线向量,我直接归因如下:

pcd         = o3d.geometry.PointCloud()
pcd.points  = o3d.utility.Vector3dVector(points)
pcd.normals = o3d.utility.Vector3dVector(normals)

我还设置了一个可视化器,我在其中插入这些点,如下所示:

app = gui.Application.instance
app.initialize()
vis = o3d.visualization.O3DVisualizer("Open3D - 3D Text", 1024, 768)
vis.show_settings = True
vis.add_geometry("my points", pcd)
with o3d.utility.VerbosityContextManager(o3d.utility.VerbosityLevel.Debug) as cm:        
    '''visualize'''
    vis.reset_camera_to_default()
    app.add_window(vis)
    app.run()

到目前为止,所有这些都按预期运行,但是我无法以使我能够可视化法线向量的方式设置可视化器。 显然 o3d.visualization.Visualizer() 有这个方法 get_render_option() 据说“检索一个 RenderOption”object,在这个 RenderOption object 中有一个 point_show_normal 属性,但我不能让我的代码(比最小的例子更复杂上面)使用 o3d.visualization.Visualizer():我不知道如何使用这个 o3d.visualization.Visualizer().get_render_option().point_show_normal。

有没有办法用 open3d.visualization.O3DVisualizer 显示法线向量?

到目前为止我还没有找到解决方案,所以我求助于在另一个窗口中查看我的法线向量,使用 mayavi 库而不是 open3D 库生成。 为此,我使用了这个简单的代码片段:

 from   mayavi.mlab       import *

 P = [my list of 3D points]
 N = [my list of normal vectors]

 x = P[:, 0]                        
 y = P[:, 1]                        
 z = P[:, 2]                        
 points3d(x, y, z, color=(0, 1, 0), scale_factor=0.5)                                                                                                  

 u = N[:, 0]                        
 v = N[:, 1]                        
 w = N[:, 2]                        
 quiver3d(x, y, z, u, v, w)         
 show()

它按预期工作。 理想情况下,我希望法向量与图的其余部分一起显示,但这满足了我的迫切需求。

我认为这是一种解决方法,而不是最终的解决方案,因此如果遇到问题的其他人发现它有用,我将其放在这里作为答案。 但我的问题仍然没有解决。

您需要在代码中添加两行,获取渲染并将point_show_normal设置为 True:

opt = vis.get_render_option()
opt.point_show_normal = True

您可以在文档中查看open3D教程和 python 示例

我希望它有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM