以前ブログ記事で紹介いたしましたPointCloudデータ(点群データ)をメッシュ化して面データとして書き出す方法を紹介いたしましたが点群には色情報がありますので色をテクスチャ画像として書き出す方法を紹介します。
■MeshLabにPointCloudデータ(点群データ)の読み込み
以前紹介いたしました「
MeshLabでPCDデータをメッシュに変換、書き出し」ではPCLから書き出されたPCDデータを読み込む方法を紹介いたしましたが今回はデータ形式にはこだわらずにPointCloudデータ(点群データ)を読み込みます。
点群データは色情報がついたものを読込ますと上画像のように色付状態で表示されます。
点群に色がついていない場合は色情報を読み込むことができておりませんので点群スキャン時の書き出し方法を確認してみてください。
(点群データがasciiでしたらテキストエディタで開き色情報があるかを確認できます)
■点群の色情報からテクスチャ画像生成
<1>「normals」を再計算
メッシュ化を行う前に「Compute normals for point sets」で「normals」を再計算しておきます。
Filters/Normals, Curvatures and Orientation/Compute normals for point sets/
設定値はデフォルトのままでApplyを押します。
計算がされますが見た目に変化はありません。
<2>点群をメッシュ化
点群をメッシュ化していきます。
Filters/Remeshing simpleification and Reconstruction/Surface Reconstruction : VCG/
以前の記事で紹介しました際には「Ball Pivoting」でメッシュ化を行いましたがBall Pivotingですと面分割の境界線が多くなりテクスチャ書き出し時にエラーが出るため今回はVCGでメッシュ化いたします。
点群の形状が閉じている場合は「Poisson」でサーフェイス化を行うと閉じたメッシュになります。
<3>Per-Triangleパラメータ設定
Texture/Parametrization:Trivial Per-Triangle
設定値はInter-triangle borderを「0」、Methodを「Basic」に変更してApplyを押します。
ここで「Inter-triangle border is too much」とエラーが出る場合はメッシュの境界線が多すぎるためです。
(メッシュ化時にメッシュ分割を抑える必要があります)
<4>プロジェクトを保存
File/Save Project/
保存形式は「.ply」で設定値はチェック項目すべてにチェックを入れます。
<5>テクスチャ画像の書き出し
いよいよテクスチャ画像の書き出しを行います。
Texture/Transfer Vertex Attributes to Texture(between 2 meshs)/
設定値は以下の通りです。
・Source Mesh … メッシュ化前の点群データを選択
・Terget Mesh … メッシュ化後のメッシュデータを選択
・Texture file … ファイル名を指定
・Texture width , height … 書き出しを行うテクスチャの解像度をピクセル指定
・Assign Texture … チェックを入れる
書き出しが完了するとメッシュにテクスチャが貼られた状態になります。
またプロジェクトを保存したディレクトリにPNG画像データが保存されます。
<6>メッシュデータの保存
上記のようにテクスチャ画像は自動的にファイル化を行ってくれますが3Dデータは別途保存する必要があります。
File/Export Mesh As…/
汎用データとしてはOBJデータが扱いやすいので書き出します。
ただMeshLabから書き出されたOBJデータが稀にエラーで読めないソフトもあります。その際には別のソフトを間にかませたりすると読み込めます。
フリーソフトで「Colud Compare」というソフトが使い勝手も良いのでMeshLabと合わせてインストールしておくと良いでしょう。
Colud Compareについてはまた別の記事で紹介したいと思います。
■まとめ
点群からメッシュ化を行う時点で色情報が失われてしまうと思っておりましたがテクスチャ化を行うことでメッシュに色情報を張り付けることができることがわかりました。
書き出したテクスチャ画像は他のCGソフトなどで読み込み質感設定を行うとUVマップとしてきれいに貼り付けることができました。
ただメッシュ化の細かさによってはテクスチャの書き出しができないため細かくメッシュ化されたものは対応できなさそうです。
有限会社マグネットインダストリー
西内伸太郎