注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
可視頂点#
メッシュ上の頂点をエッジの見え方と同じように表示します.
from __future__ import annotations
import pyvista as pv
from pyvista import examples
mesh = examples.download_bunny_coarse()
cpos = pv.CameraPosition(
position=(0.036, 0.367, 0.884),
focal_point=(0.024, 0.033, -0.022),
viewup=(-0.303, 0.895, -0.325),
)
プロット時にメッシュのすべての頂点を points スタイルの表現で簡単に表示することができます.
pl = pv.Plotter()
pl.add_mesh(
mesh, style='points', color='magenta', render_points_as_spheres=True, point_size=10
)
pl.show(cpos=cpos)

しかし,メッシュの頂点がサーフェスジオメトリの上にレンダリングされるのを見たいこともよくあります.メッシュのエッジをレンダリングするのと同じようなものです:
pl = pv.Plotter()
pl.add_mesh(mesh, show_edges=True)
pl.show(cpos=cpos)

メッシュのサーフェスジオメトリの上に頂点を表示するには,単に show_vertices=True を渡すと,オリジナルのジオメトリと一緒に頂点がレンダリングされます.
注釈
頂点のスタイルは vertex_color, vertex_opacity, vertex_style を使って変更することができます.
pl = pv.Plotter()
pl.add_mesh(
mesh,
show_edges=True,
vertex_color='magenta',
render_points_as_spheres=True,
point_size=10,
show_vertices=True,
)
pl.show(cpos=cpos)

サーフェスポイントをサーフェスジオメトリと一緒にプロットする方法をさらに制御したい場合は,サーフェスポイントを抽出して別々にプロットしてください.
まず,メッシュの外表面形状を抽出し,その抽出された点をすべて取り込みます.
surf_points = mesh.extract_surface(algorithm=None).points
頂点を抽出できたので, add_points() を使って,元のジオメトリの横に並べてレンダリングすることができます.
点のY位置で色分けをします.
pl = pv.Plotter()
pl.add_mesh(mesh, show_edges=True)
pl.add_points(
surf_points,
color='magenta',
render_points_as_spheres=True,
point_size=10,
scalars=surf_points[:, 1],
lighting=False,
show_scalar_bar=False,
)
pl.show(cpos=cpos)

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