pyvista.PolyDataFilters.smooth_taubin#

PolyDataFilters.smooth_taubin(n_iter=20, pass_band=0.1, edge_angle=15.0, feature_angle=45.0, boundary_smoothing=True, feature_smoothing=False, non_manifold_smoothing=False, normalize_coordinates=False, inplace=False, progress_bar=False)[ソース]#

PolyData DataSet をTaubinスムージングでスムージングします.

このフィルタは smooth() にあるLaplacianスムージングの実装のようにメッシュを滑らかにすることができます.しかし,ラプラシアンスムージングとは異なり,このフィルタはスムージングの別のアプローチに依存しているため,表面は "shrink" されません.このフィルタは,望ましくない高周波の特徴を除去するローパスフィルタに似ています.

このPyVistaフィルタは,VTKの vtkWindowedSincPolyDataFilter フィルタを使用しています.

パラメータ:
n_iterint, default: 20

窓付き同期関数を近似するために使用する多項式の次数を指定します.これは一般的に smooth() が必要とする数よりもはるかに小さいものです.

pass_bandfloat, default: 0.1

窓付きsincフィルタの通過帯域の値.0 から 2 の間の値で,値が小さいほど平滑化されます.

edge_anglefloat, default: 15.0

エッジに沿ったスムージングを制御するエッジ角度(内部または境界のいずれか).

feature_anglefloat, default: 45.0

シャープエッジを識別するためのフィーチャ角度です.

boundary_smoothingbool, default: True

境界エッジのスムージングを制御するためのフラグです. True の場合,境界のエッジは固定されたままです.

feature_smoothingbool, default: False

特徴点のエッジのスムージングを制御するためのフラグ. True の場合,境界線は feature_angleedge_angle で定義されているように固定されます.

non_manifold_smoothingbool, default: False

滑らかな非マニホールド点.

normalize_coordinatesbool, default: False

フラグを使用して座標の正規化を制御します.解の数値的安定性を向上させ,並進効果のスケーリングを最小化するために,このアルゴリズムは,位置座標を単位立方体 [-1, 1] 以内に変換・スケーリングし,平滑化を行い,位置座標を元の座標系に変換・スケーリングして戻すことが可能です.

inplacebool, default: False

in-placeメッシュを更新します.

progress_barbool, default: False

進行状況を示す進行状況バーを表示します.

戻り値:
pyvista.PolyData

滑らかなメッシュ.

備考

パフォーマンスを最大化するために, feature_smoothingboundary_smoothing は有効化しないでください.特に feature_smoothing は高コストです.

参考文献

タウビンスムージングの実装については, Optimal Surface Smoothing as Filter Design を参照してください.

例の骨メッシュを滑らかにします.ここでは,元のメッシュが粗いので,メッシュを細分化して面数を増やす必要があります.

>>> import pyvista as pv
>>> from pyvista import examples
>>> mesh = examples.download_foot_bones().subdivide(2)
>>> smoothed_mesh = mesh.smooth_taubin()
>>> pl = pv.Plotter(shape=(1, 2))
>>> _ = pl.add_mesh(mesh)
>>> _ = pl.add_text('Original Mesh')
>>> pl.subplot(0, 1)
>>> _ = pl.add_mesh(smoothed_mesh)
>>> _ = pl.add_text('Smoothed Mesh')
>>> pl.show()
../../../_images/pyvista-PolyDataFilters-smooth_taubin-1_00_00.png

このフィルターを使用したその他の例については, サーフェイススムージング を参照してください.