​他のオブジェクトのラップ#

​pyvistaを使用すると,次のようないくつかのオブジェクトタイプをラップできます.

  • ​`numpy` 配列

  • ​`trimesh.Trimesh` メッシュ

  • ​VTKオブジェクト

​これにより,モジュール性のためにPythonに特別な "​両方の世界の最良の部分" なプログラミングが可能になります.​pyvistaに何らかの制限がある場合(またはtrimesh),複数のモジュールの最良の機能を使用するようにスクリプトを調整することができます.

​多数のランダムなポイントで構成されるポイントクラウドをラップする

import numpy as np

import pyvista as pv

points = np.random.random((30, 3))
cloud = pv.wrap(points)
pv.plot(
    cloud,
    scalars=points[:, 2],
    render_points_as_spheres=True,
    point_size=50,
    opacity=points[:, 0],
    cpos='xz',
)
wrap trimesh

​Trimeshのインスタンスをラップする

import trimesh

points = [[0, 0, 0], [0, 0, 1], [0, 1, 0]]
faces = [[0, 1, 2]]
tmesh = trimesh.Trimesh(points, faces=faces, process=False)
mesh = pv.wrap(tmesh)
print(mesh)
PolyData (0x7f21bf10b6a0)
  N Cells:    1
  N Points:   3
  N Strips:   0
  X Bounds:   0.000e+00, 0.000e+00
  Y Bounds:   0.000e+00, 1.000e+00
  Z Bounds:   0.000e+00, 1.000e+00
  N Arrays:   0

​vtk.vtkPolyData のインスタンスをラップする

import vtk

points = vtk.vtkPoints()
p = [1.0, 2.0, 3.0]
vertices = vtk.vtkCellArray()
pid = points.InsertNextPoint(p)
vertices.InsertNextCell(1)
vertices.InsertCellPoint(pid)
point = vtk.vtkPolyData()
point.SetPoints(points)
point.SetVerts(vertices)
mesh = pv.wrap(point)
print(mesh)
PolyData (0x7f21b65d4b20)
  N Cells:    1
  N Points:   1
  N Strips:   0
  X Bounds:   1.000e+00, 1.000e+00
  Y Bounds:   2.000e+00, 2.000e+00
  Z Bounds:   3.000e+00, 3.000e+00
  N Arrays:   0

Total running time of the script: (0 minutes 0.730 seconds)

Sphinx-Galleryによるギャラリー