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里面有寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM