Open3D可视化中无需合并几何体即可调出菜单的替代方法咨询
Open3D可视化中无需合并几何体即可调出菜单的替代方法咨询
嗨,我来帮你捋清楚这个小问题~
首先得明确:在Open3D 0.19.0版本里,draw()和draw_geometries()的设计本身就有差异——draw()是新推出的可视化接口,默认自带UI菜单;而旧的draw_geometries()就是轻量化的无菜单窗口,这不是你操作的问题,是接口定位的区别。
你完全不用合并几何体,也不用折腾open3d.visualization.gui.Application.instance,有个超简单的办法:直接把多个几何体放进列表传给draw()就行,根本不需要用+合并它们。
举个例子,把你原来的代码行:
o3d.visualization.draw(c0+c1, raw_mode=True)
改成这样:
o3d.visualization.draw([c0, c1])
注意要去掉raw_mode=True,因为这个参数会强制关闭UI菜单,留着它就算用draw()也看不到菜单哦。
修改后的完整代码是这样的:
import open3d as o3d c0 = o3d.geometry.TriangleMesh.create_cylinder(0.5, 5) c0.paint_uniform_color([0.1, 0.9, 0.1]) c0.compute_vertex_normals() c1 = o3d.geometry.TriangleMesh.create_cylinder(0.5, 5) c1.paint_uniform_color([0.9, 0.1, 0.1]) c1.compute_vertex_normals() c1.translate([1, 1, 0]) # 直接传几何体列表给draw(),不用合并也能调出带菜单的窗口 o3d.visualization.draw([c0, c1])
这么改的好处很直观:既保留了c0和c1两个几何体的独立性(不用合并成一个网格),又能使用带菜单的可视化窗口,完全符合你的需求,代码改动还极小,超省心~




