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

非水密3D模型内部着色与OBJ纹理禁用技术咨询

解决方案

需求1:为非水密模型内部设置指定颜色

非水密模型旋转到下方显示黑色,是因为Open3D默认只渲染三角面的正面。只需开启双面渲染,并为背面指定蓝色即可:

  • 先给模型设置正面基础颜色(可选,比如灰色)
  • 获取可视化器的渲染选项,开启mesh_show_back_face,并将mesh_back_color设为蓝色

修改后的代码:

import open3d as o3d
import time

file1 = 'wall_right.stl'
mesh = o3d.io.read_triangle_mesh(file1, False)    
mesh.compute_vertex_normals()
# 设置模型正面的基础颜色(可根据需求调整)
mesh.paint_uniform_color([0.8, 0.8, 0.8])

vis = o3d.visualization.Visualizer()
vis.create_window()

# 配置渲染选项,开启双面渲染并设置背面颜色
render_opt = vis.get_render_option()
render_opt.mesh_show_back_face = True
render_opt.mesh_back_color = [0, 0, 1]  # 蓝色

vis.clear_geometries()
vis.add_geometry(mesh)

vis.poll_events()
vis.update_renderer()
time.sleep(3)
vis.destroy_window()

需求2:加载纹理后禁用纹理显示

先正常加载带纹理的OBJ文件,再通过渲染选项关闭纹理显示,强制使用模型颜色:

  • 启用read_triangle_mesh(file1, True)加载纹理
  • 获取渲染选项,设置mesh_show_texture = False禁用纹理

修改后的代码:

import open3d as o3d
import time

file1 = 'your_textured_model.obj'  # 替换为带纹理的OBJ文件路径
mesh = o3d.io.read_triangle_mesh(file1, True)  # 加载纹理
mesh.compute_vertex_normals()
# 禁用纹理后会显示这个颜色(可按需调整)
mesh.paint_uniform_color([0.7, 0.7, 0.7])

vis = o3d.visualization.Visualizer()
vis.create_window()

# 关闭纹理显示
render_opt = vis.get_render_option()
render_opt.mesh_show_texture = False

vis.clear_geometries()
vis.add_geometry(mesh)

vis.poll_events()
vis.update_renderer()
time.sleep(3)
vis.destroy_window()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:03:36