mayavi的简单使用

简单的使用mayavi进行图形上的显示

如何使用triangular_mesh显示网格模型

  1. code
vertices, faces, normals, nothing = io.read_mesh("data/arma-modi.obj")
mlab.triangular_mesh(vertices[:, 0], vertices[:, 1], vertices[:, 2], faces)
  1. 结果如下:

    这里提一下triangular_mesh的三参数x,y,z
    vertices.shape=[点的个数,3]
    vertices[:,0]即点的x坐标的集合
    faces就是构成三角形的三个顶点,每个顶点具体来说就是点的index。具体见obj文件的存储格式。
  2. plot3d, points3d的x,y,z都是一维的数据,值得注意的是plot3d的点的前后之间构成一条线段。
  3. 其他的api参数大同小异。

为每个面赋不同的颜色

  1. code
# 8个顶点
from mayavi import mlab
import numpy as np
A = np.array([1, 1, 1])  # 0
B = np.array([1, 1, -1])  # 1
C = np.array([-1, 1, -1])  # 2
D = np.array([-1, 1, 1])  # 3

E = np.array([-1, -1, 1])  # 4
F = np.array([-1, -1, -1])  # 5
G = np.array([1, -1, 1])  # 6
H = np.array([1, -1, -1])  # 7
vertices = np.array([A, B, C, D, E, F, G, H])
faces = np.array([
# ACB, ACD, AED, AEG, AHB, AHG
[0, 2, 1], [0, 2, 3], [0, 4, 3], [0, 4, 6], [0, 7, 1], [0, 7, 6],
# FDC, FDE, FBC, FBH, FGE, FGH
[5, 3, 2], [5, 3, 4], [5, 1, 2], [5, 1, 7], [5, 6, 4], [5, 6, 7]])
mesh = mlab.triangular_mesh(vertices[:, 0], vertices[:, 1], vertices[:, 2],
faces)
# 设定自己的colormap
cell_data = mesh.mlab_source.dataset.cell_data # 提取cell数据
cell_data.scalars = np.array([0.08*i for i in range(12)])
# 对scalar进行数据设定,颜色的个数和面的个数是一致的。
cell_data.scalars.name = "cell data" # 命名
cell_data.update() # 更新管线中的颜色数据
mesh2 = mlab.pipeline.set_active_attribute(mesh, cell_scalars='cell data') # 启用这个颜色属性
mlab.pipeline.surface(mesh2) # 覆盖之前的颜色。
mlab.show() # 显示网格
  1. result
    set the colormap
    设置自己的colormap
    not set the colormap
    image
  2. scalar 是用来设置mayavi过程中的数据结构的基本属性,mayavi的document里面有写。
posted @ 2021-05-20 15:58  bkctbkct  阅读(1100)  评论(0编辑  收藏  举报