点群のメッシュ化

こんにちは。
昼と夜の気温差が大きいですが、体調崩されていないでしょうか。
AMDlabの藤井です。

3Dスキャンが気軽に使用されるようになって、3Dデータを扱うようになった方が増えてきたと思います。
点群を見るだけなら何も問題はないのですが、編集する際に不便を感じることが多いものです。
そこで今回は、それら点群データのメッシュ化について。

さてどうするかですが、AutodeskですとRecapが点群を扱うソフトですね。
AutocadやRevitや3dsMaxにも読み込めて非常に便利です。
複数の写真からも3Dモデルを作ることもでき、本当にすごいです!
私も写真からの作成はまだやったことがないので、また今度チャレンジしてみたいです。
そのRecapでもメッシュ化は可能ですが、今回は誰でも簡単にメッシュ化できる無料のソフトで行いたいと思います。

無料の点群処理ソフトで良く使われているのが、以下の2つではないでしょうか。
・CloudCompare
・Meshlab

最近使用する機会があったので、それぞれ使ってみて、CloudCompareの方が比較的わかりやすいかなという印象でした。
できることが微妙に違うので、使い分けても良いかもしれませんが、最初に使うには、CloudCompareの方が始めやすいのではないかなと思いました。

そこで、CloudCompareでのメッシュ化の手順を以下に示しておきます。

1.まずは、点群データを開きます。.ptsとかですかね。

2.メッシュ化に不要なところは削除してしまいましょう。
Edit >> Segment。もしくは上部ツールバーのハサミマークです。
これから編集する際の注意点ですが、画面左側に出ているDBTreeのリストで編集を加えたいデータを選択することを確認して下さい。

そうすると以下のようなツールボックスが出てくると思いますが、四角もしくは多角形で選択後、五角形の中が赤いマークが選択図形内のみ残すで、外側が赤い色の五角形が選択図形外を残します。

チェックボックスをクリックしてトリミング終了。

3.点群の密度が大きいデータの場合は、点群を間引いてしまいましょう。
Edit >> Subsamplesでポップアップが出てきます。
もしくは、上部ツールバーの点々の絵のボタンです。

methodのところをSpacceにすると、その下部にあるmin.sapace between pointsで入力した点間距離で間引かれます。

4.メッシュ化を行う前にデータを整えておきます。
Edit >> Normals >> Computeでポップアップが出てきます。

ポップアップが出たらそのままOKで構いません。

5.いよいよメッシュ化です。
Plugins >> Poisson Surface Reconstruction。

ポップアップが出てきます。

Octree depthでメッシュの精度を決定します。
どれくらいの精度が必要かは試行錯誤していただくと良いと思いますが、一つ数字を上げるだけでかなり精度が上がります。データ量もかなり大きくなるので、もちろん所要時間も増えます。
イメージとしては、メッシュ化で計算に用いるボックスをどれくらい細かく、多くするか。

6.不要なメッシュを削除します。
左下のPropertyのところに下のようなレンジがあると思いますが、それで絞っていきます。
山になっているところが主要データのレンジになります。
先ほどのOctree depthの値によって、この山の出方が変わってきます。Octree depthの数字が大きい方ほど山が尖がって、小さいほどのっぺりした山になってデータを絞りにくくなります。

必要範囲を確認して、実際にデータを絞ったメッシュデータを作成します。

Edit >> Scalar fields >> Filter By Valueでポップアップが出てきます。


ここで表示されているレンジが先ほど絞った値になっているかと思います。
Exportします。

以上で点群のメッシュ化が終わりましたので、File >> Saveで欲しい形式で保存します。
保存形式は何でも良いですが、軽さを求めるならdxfは重くなりがちなので、他ので保存する方が良いのかな。

Rhinocerosをお持ちであれば、その後ReduceMeshでメッシュ数を削減するのも簡単で良いと思います。

点群数やパソコンのスペックにもよりますが、全ての作業で予想以上に時間がかかりますし、メッシュ化するとデータサイズがすごいことになります。。。
HDと時間に余裕を持って作業した方が良いですね^^

ARTICLES