地形の点群から三角形面を作成(ParaView) †ParaViewを使用して、地形の標高を表す点データから三角形から成る面を作成します。 ここでは、面を張る方法として、2次元のDelaunay三角形分割を使用します。 地形の点群の読み込み †ここで使用するサンプルデータは、stHelens.particles(このページの一番下からダウンロード)です。 この地形データはセント・ヘレンズ山の点群データで(x,y,z)の座標からなっています。*.particlesはVTK particle filesというデータ形式です。 まず、セント・ヘレンズ山の点群データを読み込みます。ParaViewを起動してから、ツールバーから File > Open... と進み、ファイルの指定ダイアログから、"stHelens.particles"を指定して読み込みますと、下のような山の点群が表示されます。比較的密な点群ですが、構造格子の点データのような規則性がありません。変数Scalarは、各点の節点番号となっておりますが、不規則にならんでいることが分かります。 x-y平面への点の射影 †ここでは、2次元のDelaunay三角形分割を使用して面を作成しますが、点データは3次元データですので、このままでは2次元デローニー三角形分割を適用できません。 このため、点データを一旦、x-y平面上に射影します。 まず、"Calculator"を使用して、z座標の変数データ"z"を作成します。 ツールバーの"Calculator"アイコンをクリックしてから、下絵の左のように設定し、"Apply"します。 次に、作成した"z"変数を使用て、"Warp By scalar"フィルターで、点群をx-y平面に射影します。 ツール―バーから Filters >> Alphabetical >> Warp By scalar と進み、下図のように (V.5.1.0以前)
(V.5.1.1以降)
と設定し、"Apply"しますと、点群データがx-y面上に射影されます。 2次元Delaunay三角形分割 †x-y平面上の点群データに、2次元Delaunay三角形分割を適用して、三角形面を作成します。 ツールバーから Filters >> Alphabetical >> Delaunay 2D と進み、デフォルト設定のまま"Apply"します。 2次元点群に対して、三角形面が作成されたことが分かります。 標高の回復 †x-y平面に射影した形状を、今度は3次元データに戻します。これには、変数"z"を使用して、"Warp By scalar"フィルターで逆向きに戻します。 ツール―バーから Filters >> Alphabetical >> Warp By scalar と進み、下図のように
となっていることを確認し、"Apply"しますと、2次元表面が3次元の表面三角形になります。 これで、3次元の点群からなる地形データを、三角形面からなる地形データに変換できました。 形状が凸でない場合 †今回の例では、形状が凸なので、不要な三角形は発生しませんが、形状が凹形状の場合は、不要な三角形を削除する必要があります。 通常は、Constrained Dealaunay法で境界を切り取る必要がありますが、点群が規則的に並んでいる場合は、悪い品質の三角形を除去するとよいかもしれません。
ダウンロード †セント・ヘレンズ点群データ |