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

Open3D v0.16.0加载并显示模型纹理问题求助

Open3D v0.16.0 3D模型纹理无法显示问题解决

问题描述

使用Open3D v0.16.0加载带纹理的glb模型或关联png纹理的obj模型时,可视化窗口仅显示默认灰色,但模型在其他平台可正常显示纹理。

排查与解决步骤

1. 先确认纹理加载状态

通过代码检查模型是否正确加载了纹理及必要的坐标信息:

import open3d as o3d
model = o3d.io.read_triangle_mesh("nk1.glb")
print(f"模型是否包含纹理: {model.has_textures()}")
print(f"纹理数量: {len(model.textures)}")
print(f"是否包含UV坐标: {model.has_vertex_uvs()}")
  • 若has_textures()返回False,说明模型未正确加载纹理,需检查文件路径或模型本身的纹理嵌入情况
  • 若has_vertex_uvs()返回False,模型缺少纹理坐标,无法完成纹理映射,需修复模型本身

2. glb模型修复代码

Open3D v0.16.0中draw_geometries的默认渲染逻辑可能未强制启用纹理,改用Visualizer类手动配置更可靠:

import open3d as o3d

# 加载glb模型
model = o3d.io.read_triangle_mesh("nk1.glb")
model.compute_vertex_normals()

# 初始化可视化器并配置渲染选项
vis = o3d.visualization.Visualizer()
vis.create_window()
vis.add_geometry(model)

render_opt = vis.get_render_option()
render_opt.mesh_show_back_face = True  # 可选,显示背面纹理
render_opt.mesh_show_wireframe = False

# 启动可视化
vis.run()
vis.destroy_window()

3. obj模型修复注意事项

加载obj纹理需满足两个前提:

  • obj文件必须关联对应的mtl材质文件,且三者(obj、mtl、png)在同一目录
  • mtl文件中纹理图片的路径需正确(建议用相对路径)

修复后的加载代码:

import open3d as o3d

# 加载obj模型,启用后处理以加载关联纹理
model = o3d.io.read_triangle_mesh("cc.obj", enable_post_processing=True)
model.compute_vertex_normals()

# 可视化配置同glb模型
vis = o3d.visualization.Visualizer()
vis.create_window()
vis.add_geometry(model)
render_opt = vis.get_render_option()
render_opt.mesh_show_back_face = True
vis.run()
vis.destroy_window()

常见原因总结

  • Open3D v0.16.0的draw_geometries默认渲染选项未强制开启纹理,手动配置渲染选项可解决
  • obj模型缺少mtl文件或mtl中纹理路径错误,导致纹理无法加载
  • 模型本身缺失UV纹理坐标,无法完成纹理映射

内容的提问来源于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.29 12:23:11