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

如何在Python中导入OBJ模型并实现顶点可视化与部件标注?

你的需求完全可行,下面分别用PyVista和Vedo给出具体实现方案:

PyVista 实现方案

1. 查看单个顶点

导入模型后,通过开启顶点可见性及可选的顶点编号显示,就能像Blender编辑模式那样看到单个顶点:

import pyvista as pv

# 导入OBJ模型
mesh = pv.read("your_model.obj")

# 创建绘图器并配置顶点显示
plotter = pv.Plotter()
# 显示顶点,设置点大小和颜色
plotter.add_mesh(mesh, show_vertices=True, point_size=5, vertex_color="red")
# 可选:显示每个顶点的编号
plotter.add_point_labels(mesh.points, [str(i) for i in range(mesh.n_points)], point_size=5)
plotter.show()

2. 为特定部件分配标签

方法一:预设部件索引批量标记

如果你已知模型部件对应的面/顶点索引范围,可以直接给模型添加标量数组作为标签,可视化时按标签着色区分:

import pyvista as pv

mesh = pv.read("your_model.obj")
# 假设前100个面属于部件A,剩余面属于部件B
mesh["part_labels"] = ["A"] * 100 + ["B"] * (mesh.n_cells - 100)

# 按标签着色显示模型,同时保留顶点可见性
plotter = pv.Plotter()
plotter.add_mesh(mesh, scalars="part_labels", show_vertices=True, cmap="Set1")
plotter.show()

方法二:交互式选择部件标记

如果不知道部件索引,可以开启交互选择模式,手动选中部件后添加标签:

import pyvista as pv

plotter = pv.Plotter(interactive=True)
plotter.add_mesh(mesh, show_vertices=True)
# 启用面选择功能,点击模型即可选中对应面
plotter.enable_cell_picking()
plotter.show()

# 获取选中的面索引,给选中区域标记为"Selected Part"
selected_cells = plotter.picked_cells
if selected_cells:
    mesh["selected_part"] = [0] * mesh.n_cells
    for idx in selected_cells:
        mesh["selected_part"][idx] = 1
    # 重新可视化,选中区域用蓝色高亮
    plotter = pv.Plotter()
    plotter.add_mesh(mesh, scalars="selected_part", cmap=["white", "blue"], show_vertices=True)
    plotter.show()
Vedo 实现方案

1. 查看单个顶点

Vedo支持直接开启顶点显示,还能添加顶点编号:

from vedo import Mesh, show

# 导入OBJ模型
mesh = Mesh("your_model.obj")

# 开启顶点显示,设置点大小和颜色
mesh.show_vertices(point_size=5, color="red")
# 可选:添加顶点编号
mesh.add_point_labels([str(i) for i in range(mesh.n_points)], size=0.5)
show(mesh, axes=1)

2. 为特定部件分配标签

方法一:标量属性标记部件

给模型的顶点/面添加标签属性,通过着色区分不同部件:

from vedo import Mesh, show

mesh = Mesh("your_model.obj")
# 假设前501个顶点属于部件A,剩余属于部件B
mesh.pointdata["part_labels"] = ["A"] * 501 + ["B"] * (mesh.n_points - 501)
# 按标签颜色渲染模型
mesh.cmap("Set1", "part_labels", on="points")
show(mesh, axes=1)

方法二:交互式选择后添加文本标签

通过交互选中部件,直接添加文本标签标注:

from vedo import Plotter, Mesh

mesh = Mesh("your_model.obj")
plt = Plotter()
plt.add(mesh)
# 开启交互模式,点击选中模型部件
plt.show(interactive=True)

# 获取选中的部件,添加文本标签
selected = plt.selected_actors()
if selected:
    plt.add_text("Part A", pos=selected[0].center(), color="black", size=0.8)
    plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:25:07