閉じた面でクリップする

可視化ソフトウェアParaViewにおいて、"Programmable Filter"を使用して、任意の閉じた面で形状をクリップする方法を説明します。

通常、ParaViewでのクリップ機能は、Clip filterを使用しますが、クリップするタイプは

  • Plane(面)
  • Box(直方体)
  • Sphere(球体)
  • Cylinder(円柱)
  • Scalar(スカラー値)

しか用意されておらず、形状を任意の閉じた面でクリップすることは出来ません。

任意の閉じた面でクリップするには、"Programmable Filter"を使用する必要があります。

ここでは、メニューバーのSourcesにあるWavelet(画像データ)を、Superquadric(超二次関数、閉じたポリゴンデータになる)で切り取る例で説明します。

Waveletソースの作成

メニューバーの

 Sources >> Wavelet

と進み、そのままの設定で、"Apply"しますと、各点にwavelet値を計算した3次元の画像データが作成されます。表示を"Surface"にし、色付けの変数を"RTData"にすれば、waveletのコンターを見ることができます。

wavelet

Superquadricソースの作成

次に、Superquadricソースを作成します。メニューバーから

 sources >> superquadric

と進み、

 Scale: 15 15 15

とし、"Apply"します。Waveletの表示を"Outline"にすると、waveletソース内に収まったsuperquadricソースであるトーラス形状が見えます。

superquadric

Programmable Filter

上記で作成した、Waveletソースをトーラスで切り取ります。

まず、Ctrlキーを押しながら、Pipeline Browserで

 1.Wavelet1
 2.Superquadric1

の順に左クリックで選択します。選択されると、名前の背景が濃い青色になります。(選択する順番が大事です)

選択された状態で

 Filters >> Alphabetical >> Programmable Filter

と進みます。

programmable filter

次に、Programmable FilerのPropertiesタブで

 Output Data Set Type: VtkUnstructuredGrid

に変更します。これは、Clipで作成されるデータタイプである"VtkUnstructuredGrid"を指定する必要があります。次に、"Script"に以下を記述します。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
import vtk.vtkPVVTKExtensionsDefault as ext
 
inpMain = self.GetInputDataObject(0, 0)
inpClip = self.GetInputDataObject(0, 1)
out = self.GetOutput()
 
clipper = ext.vtkPVMetaClipDataSet()
clipper.SetInputDataObject(inpMain)
clipper.SetInsideOut(True)
clipFunction = vtk.vtkImplicitPolyDataDistance()
clipFunction.SetInput(inpClip)
clipper.SetClipFunction(clipFunction)
clipper.Update()
 
outData = clipper.GetOutputDataObject(0)
out.DeepCopy(outData)

そして、"Apply"すると、Waveletをトーラスで切り取った、形状が現れます。

clipping torus

このトーラスはWaveletを切り取っているので、中身が詰まっていることに注意しましょう。実際、これを"Clip Filter"で切り取ると中身が詰まっていることを確認できます。

clipping torus

また、切り取る領域を逆にしたい場合は、"Script"内で

 clipper.SetInsideOut(False)

と変更し、"Apply"します。結果をさらに"Clip Filter"で切り取るとWaveletの内部がトーラス上に切り取られていることを確認できます。

clipped wavelet

添付ファイル: fileclipping_torus2.png 15件 [詳細] filewavelet.png 12件 [詳細] filesuperquadric.png 15件 [詳細] fileprogrammable_filter.png 15件 [詳細] fileclipping_torus.png 15件 [詳細] fileclipped_wavelet.png 14件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-05-05 (土) 23:46:13 (19d)