我正在使用惊人的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()有一个被称为“检索RenderOption”对象的方法get_render_option(),在这个RenderOption对象中有一个point_show_normal属性,但是我无法使我的代码(比上面的最小示例更复杂)使用o3d.visualization.Visualizer():我不知道如何使用这个o3d.visualization.Visualizer()
有什么方法可以用open3d.visualization.O3DVisualizer表示法向量吗?
发布于 2022-07-19 12:43:57
到目前为止,我还没有找到解决方案,所以我求助于在另一个窗口中查看我的正常向量,这是使用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()
一切都如愿了。理想情况下,我想让法线向量与其他图形一起显示,但这满足了我当前的需要。
我认为这是一种解决办法,而不是最终的解决方案,因此,如果有问题的其他人认为这是有用的,我就把它作为一个答案。但我的问题还没解决。
https://stackoverflow.com/questions/73023863
复制相似问题