You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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两个几何体的独立性(不用合并成一个网格),又能使用带菜单的可视化窗口,完全符合你的需求,代码改动还极小,超省心~

火山引擎 最新活动