You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Open3D中TriangleMeshModel模型可视化失败问题求助

问题:Open3D-Python可视化TriangleMeshModel失败

问题重现

使用以下代码尝试可视化GLB模型时出错:

import open3d as o3d
model = o3d.io.read_triangle_model("nk1.glb") 
o3d.visualization.draw_geometries([model])

错误信息

draw_geometries(): incompatible function arguments. Invoked with: <open3d.cpu.pybind.visualization.rendering.TriangleMeshModel object>

尝试o3d.visualization.draw([model])同样无法正常运行,需使用open3d.visualization.rendering类渲染,但找不到正确实现方式。

解决方案

方法1:提取模型中的TriangleMesh对象

o3d.io.read_triangle_model()返回的是TriangleMeshModel实例,包含多个mesh和材质信息,提取其中的mesh列表即可用draw_geometries渲染:

import open3d as o3d

model = o3d.io.read_triangle_model("nk1.glb")
# 提取所有mesh对象
meshes = [mesh for mesh in model.meshes]
# 可视化所有mesh
o3d.visualization.draw_geometries(meshes)

方法2:使用Open3D渲染器加载完整模型(保留材质)

若需保留模型的材质和纹理,使用open3d.visualization.rendering模块的渲染器加载TriangleMeshModel:

import open3d as o3d

model = o3d.io.read_triangle_model("nk1.glb")

# 初始化可视化应用
app = o3d.visualization.gui.Application.instance
app.initialize()

# 创建可视化窗口
window = app.create_window("GLB模型可视化", 1024, 768)
scene = o3d.visualization.rendering.Open3DScene(window.renderer)

# 将模型添加到场景
scene.add_model("model", model)

# 自动适配相机视角
scene.camera.look_at(model.bounding_box.get_center(), 
                     model.bounding_box.get_center() + [0, 0, 5], 
                     [0, 1, 0])

# 设置窗口布局与场景关联
window.set_on_layout(lambda x, y: scene.set_view_port(0, 0, x, y))
window.scene = scene

# 启动可视化应用
app.run()

关键说明

  • draw_geometries()和draw()仅支持TriangleMesh、PointCloud等基础几何对象,不直接兼容TriangleMeshModel。
  • 方法1适合仅需展示几何形状的场景,方法2能完整保留模型的材质、纹理等细节,还原原始模型效果。

内容的提问来源于stack exchange,提问作者SHASHANK N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:45:35