注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
プラトン立体#
PyVistaでは, vtk.vtkPlatonicSolidSource
フィルタを pyvista.PlatonicSolid()
としてラップしています.
import numpy as np
import pyvista as pv
from pyvista import examples
一般的な PlatonicSolid()
を使って,生成するさまざまな種類の固体を指定することもできますし,薄いラッパーを使うこともできます.
pyvista.Cube()
(別のフィルタで実装)
すべてのプラトン立体を, teapotahedron
と共に生成してみましょう.
kinds = [
'tetrahedron',
'cube',
'octahedron',
'dodecahedron',
'icosahedron',
]
centers = [
(0, 1, 0),
(0, 0, 0),
(0, 2, 0),
(-1, 0, 0),
(-1, 2, 0),
]
solids = [pv.PlatonicSolid(kind, radius=0.4, center=center) for kind, center in zip(kinds, centers)]
# download and align teapotahedron
teapot = examples.download_teapot()
teapot.rotate_x(90, inplace=True)
teapot.rotate_z(-45, inplace=True)
teapot.scale(0.16, inplace=True)
teapot.points += np.array([-1, 1, 0]) - teapot.center
solids.append(teapot)
ここで,すべてをプロットします.
注釈
特定のウィンドウサイズでシャドウをレンダリングする場合,VTKに既知の問題があります. window_size
パラメータを試してみることをお勧めします. (1000, 1000)
の初期ウィンドウサイズは,問題なく手動でサイズ変更できるため,正常に動作するようです.
p = pv.Plotter(window_size=[1000, 1000])
for ind, solid in enumerate(solids):
# only use smooth shading for the teapot
smooth_shading = ind == len(solids) - 1
p.add_mesh(
solid, color='silver', smooth_shading=smooth_shading, specular=1.0, specular_power=10
)
p.view_vector((5.0, 2, 3))
p.add_floor('-z', lighting=True, color='lightblue', pad=1.0)
p.enable_shadows()
p.show()
プラトン立体には,立体の各面にインデックスを付けるセルスカラーが付いています.
Total running time of the script: (0 minutes 1.485 seconds)