可視頂点#

メッシュ上の頂点をエッジの見え方と同じように表示します.

import pyvista as pv
from pyvista import examples

mesh = examples.download_bunny_coarse()

cpos = [(0.036, 0.367, 0.884), (0.024, 0.033, -0.022), (-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)
vertices

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

pl = pv.Plotter()
pl.add_mesh(mesh, show_edges=True)
pl.show(cpos=cpos)
vertices

メッシュのサーフェスジオメトリの上に頂点を表示するには,単に 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)
vertices

サーフェスポイントをサーフェスジオメトリと一緒にプロットする方法をさらに制御したい場合は,サーフェスポイントを抽出して別々にプロットしてください.

まず,メッシュの外表面形状を抽出し,その抽出された点をすべて取り込みます.

surf_points = mesh.extract_surface().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)
vertices

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

Sphinx-Galleryによるギャラリー