CC_06 CloudCompareのCrossSection機能その1
2024.11.06
- 3Dデータ
- ライブラリ
- CloudCompare
Cross Sectionは、3Dデータの断面形状を作成、計測するのに便利な機能です。3Dデータのスライス、XYZ方向のサイズ取得、断面のポリライン(多角線)を作成することも可能です。
第6回、第7回に分けて、CrossSectionの活用方法をご紹介していきます。今回からテストデータは新しいバイナリファイルとして作成、保存します。CloudCompareを起動後、路面データ(CC_001.ply)を3Dビュー上にドラッグアンドドロップしてください。
■データの傾き
路面データは、「Hapimo:3D」で路面の陥没状況を上から撮影したものですが、撮影時の視点やカメラの向きの影響で、主にZ方向に傾きがあります(手前側が高く、奥側に向かって低い)。
下中央図は、ビューツールバーの「set right view」視点から表示した現在の路面データの状態です。この傾きを下右図のように補正し、軸に揃えたいと思います。
傾いている路面データを補正したい
今回のCrossSectionのように断面を作成して計測する場合、また後日ご紹介する等高線作成機能等を使用するとき、軸の傾きがあると適正な評価が行えません。軸を補正するには、「Level」機能を使います。
■Level機能
Levelは路面データのように傾きのある3Dデータを、軸に沿うように補正する機能です。具体的には、補正したいデータ上の3点を選択します。 最初の2点を結ぶラインがX軸に平行になり、3点目の選択と同時に、3つの点すべてがZ軸に正対するXY平面上に位置するようにデータを自動補正します。
路面データで実践します。路面データを選択→ビューツールバーのLevelボタンを選択後、まず1点目を陥没部の左上部でクリックします。2点目、陥没部の右上部でクリックします。クリック部分がマーキングされるだけでこの時点ではまだデータに変化はありません。3点目、陥没部の下中央で3点目をクリックすると同時に、路面データが補正されます。
(このとき、最初の2点間の距離が近すぎると補正がうまくいかないので、できるだけ広めにすることがポイントです。)
ビューツールバーの「set right view」視点に切り替えて、傾きが補正されていることを確認してください。
Level機能を使った補正
Level機能を適用すると、マウスドラッグでの回転時の中心が中央からずれる場合があります。その場合はビューツールバーの「Pick Rotation Center」を選択後、回転中心としたい場所でクリックをすることで修正できます。
Pick Rotation Centerで回転中心を選択
Level機能を使うと、点群のXYZ座標値はすべて書き換えられ、オリジナルの座標値情報は残りません。後述するように、データのバックアップ等注意が必要です。
■断面作成準備
路面中央の、もっとも突き出た小石近辺の断面を作成して計測します。作業しやすくするために、前回(CC_05 CloudCompareで凹凸形状を可視化)の機能を適用して凹凸形状を可視化しておきます。
【凹凸形状可視化手順】
①路面データを選択して平面を設定(Tools→Fit→Plane)
②平面ポリゴンと路面データを同時に選択して、Compute cloud/mesh distance
平面ポリゴン(Dip…)は非表示にしておきます。
凹凸形状を可視化した状態
■CrossSectionで断面作成
路面データを選択し、メインツールバーのCrossSectionボタンをクリックします。 データを囲む形でクリッピングボックスが表示され、同時に3Dビュー右上隅にCrossSectionツールバーが表示されます。クリッピングボックスを調整して、断面を作成したい部分のみ表示されるようにします。
CrossSectionツールバー、クリッピングボックス
クリッピングボックスの矢印の色は、XYZ各軸の色に対応しています(X軸=赤色、Y軸=緑色、Z軸=青色)。クリッピングボックスの矢印を内側にスライドすることで、切り取りたい箇所のみ表示できます。中央のもっとも突き出た小石の部分で、水平方向に断面を作りたいので、Y軸方向の上下矢印を内側にスライドしていきます。
スライド中、CrossSectionツールバーのXYZ値には、リアルタイムで各軸方向の厚さが表示されます。スライドのほか、XYZの各値を直接入力してクリッピングボックスを調整することも可能です。
クリッピングボックスの調整
調整ができたら、CrossSectionツールバーのslicesボタン2つのうち左側「export selection..」をクリックします。DBツリーに新しい点群「CC_001-cloud.section」が追加されます。CrossSectionツールバーを「閉じる」ボタンで閉じてください。
DBツリーで、元データ「CC_001-cloud」の先頭のチェックマークを外して非表示にすると、今作成した「CC_001-cloud.section」のみが表示されます。 ビューツールバーの「set front view」視点に切り替えると、断面形状をクリアに見ることができます。
断面点群を選択し、再びメインツールバーのCrossSectionボタンをクリックします。 CrossSectionツールバーにXYZサイズ各軸方向の厚み(=サイズ)が表示されます。先にご紹介した距離計測方法にPointPicking機能の2点選択がありますが、点群中の任意の2点をクリックするのが難しい場合は、CrossSectionで断面にすることで、各軸方向のサイズをより容易に取得できます。
■ポリライン作成
次に断面の形状をポリラインとして作成します。 CrossSectionツールバーのEnvelope/Contourエリアの「Extracts the envelop…」ボタンを押下→Slice Extraction画面が開きます。
今回Y軸方向でカットした断面ポリラインを作成したいので、Flat dimensionでYを選択します。 すでに断面点群は作成ずみなので、「Extract slice cloud」のチェックは外しておきます。
次に「Extract envelop(s)」にチェックを入れ、Envelope type を選択します。typeには次の三種があります。
Full …断面全体を対象にポリラインを作成
Lower …点群の断面下部にそったポリラインを作成
Upper …点群の断面上部にそったポリラインを作成
Fullは円筒など全周をもつデータに適しています。今回、断面上部に沿ったポリラインを作成したいので、Upperを選択します。
Max edge length(最大エッジ長)は、作成・選択した断面点群に合わせて自動的に数値が表示されています。 この値が小さいほどポリラインは厳密に点に沿い、大きくするほどアバウトになります。 数値はこのままで、平面に沿ったポリラインを作りたいのでproject slice(s) points on their best fit plane にチェックを入れて「OK」します(断面点群の形状、点の密度等により、ポリライン生成に適した数値や設定は変化します)。DBツリーに新しいポリライン「CC_001 – Cloud.section.envelope」が追加されます。CrossSectionツールバーを「閉じる」ボタンで閉じてください。
DBツリーで、追加されたポリライン「CC_001 – Cloud.section.envelope」以外のチェックマークを外します。ビューツールバーの「set front view」視点に切り替えると、ポリラインを凹凸形状をクリアに見ることができます。 ポリラインを選択すると、プロパティのlength項目に、長さが表示されます。
■ポリラインの出力
ポリラインはDXFやCSV形式でファイルに出力することができます。ポリラインを選択し、「保存」をクリック→ファイルの種類でDXF、CSVを選んで保存します。
■バイナリファイルの保存
作成したポリライン「CC_001 – Cloud.section.envelope」は、DBツリー上で別階層になっていますので、ドラッグして最上段のフォルダへドラッグ&ドロップします。その後、最上段のフォルダを選択して保存します。(ファイルの種類:CloudCompareバイナリファイル、ファイル名:CrossSectionTest)
次回はCrossSection機能の後半として、円筒型の新しい点群データを読み込み、連続で断面やポリラインを作成する方法などをご紹介します。
■オリジナルデータについて
CloudCompareでは、Levelのように、オリジナルの座標値を書き換えるような機能もあります。ご紹介しているように、CloudCompareバイナリファイルとして作業、保存する範囲では、読み込まれたオリジナルのデータを改変することはありませんが、念のため大事なデータをCloudCompareで作業する場合は、オリジナルはバックアップしておくことをおすすめします。
■関連動画
CloudCompareのCrossSection機能その1
サンプルデータのダウンロード
・CC_001…Hapimo:3Dで撮影した路面データ(3Dデータと2Dデータのセット 拡張子 .ply .png)をzip形式で圧縮したもの ファイルサイズ約3MB