注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
シルエットハイライト#
ポリゴンメッシュのエッジのサブセットを抽出し,メッシュのアウトライン (シルエット) を生成します.
import pyvista
from pyvista import examples
3角 PolyData
を作成する
bunny = examples.download_bunny()
メッシュのシルエットを表示し,結果を比較できます:
plotter = pyvista.Plotter(shape=(1, 2))
plotter.subplot(0, 0)
plotter.add_mesh(bunny, color='lightblue', silhouette=True)
plotter.add_text("Silhouette")
plotter.view_xy()
plotter.subplot(0, 1)
plotter.add_mesh(bunny, color='lightblue')
plotter.add_text("No silhouette")
plotter.view_xy()
plotter.show()
デフォルトのパラメータでは,シルエットを認識するのに十分でない可能性があります.しかし, dict
を使用することで,アウトラインのプロパティを変更することができます.たとえば,色と幅は次のように指定できます:
plotter = pyvista.Plotter()
silhouette = dict(
color='red',
line_width=8.0,
)
plotter.add_mesh(bunny, silhouette=silhouette)
plotter.view_xy()
plotter.show()
デフォルトでは,PyVistaはかなりアグレッシブなデシメーションレベルを使用しますが,無効にしたい場合もあります.シャープエッジを表示することもできます:
cylinder = pyvista.Cylinder(
center=(0, 0.04, 0), direction=(0, 1, 0), radius=0.15, height=0.03
).triangulate()
plotter = pyvista.Plotter(shape=(1, 3))
plotter.subplot(0, 0)
plotter.add_mesh(
cylinder,
color='lightblue',
smooth_shading=True,
silhouette=dict(color='red', line_width=8.0, decimate=None, feature_angle=True),
)
plotter.add_text("Silhouette with sharp edges")
plotter.view_isometric()
plotter.subplot(0, 1)
plotter.add_mesh(
cylinder,
color='lightblue',
smooth_shading=True,
silhouette=dict(color='red', line_width=8.0, decimate=None),
)
plotter.add_text("Silhouette without sharp edges")
plotter.view_isometric()
plotter.subplot(0, 2)
plotter.add_mesh(cylinder, color='lightblue', smooth_shading=True)
plotter.add_text("No silhouette")
plotter.view_isometric()
plotter.show()
次に別の例を示します:
dragon = examples.download_dragon()
plotter = pyvista.Plotter()
plotter.set_background('black', 'blue')
plotter.add_mesh(
dragon,
color="green",
specular=1,
smooth_shading=True,
silhouette=dict(line_width=8, color='white'),
)
plotter.add_mesh(
cylinder,
color='lightblue',
smooth_shading=True,
silhouette=dict(decimate=None, feature_angle=True, line_width=8, color='white'),
)
plotter.camera_position = [
(-0.2936731887752889, 0.2389060430625446, 0.35138839367034236),
(-0.005878899246454239, 0.12495124898850918, -0.004603400826454163),
(0.34348225747312017, 0.8567703221182346, -0.38466160965007384),
]
plotter.show()
Total running time of the script: (0 minutes 9.009 seconds)