CloudCompare(クラウドコンペア)を使って、2つの3Dモデルを精密に位置合わせをする方法を紹介します。主体となる3Dモデルの位置に、別の3Dモデルをぴったり重なるように合わせる方法です。CloudCompareは3D点群データとメッシュデータの処理や解析ができるオープンソフトウェアです。
フォトグラメトリなど3Dモデルを作る場合、複数のソフトウェアを使うことが多いです。いろいろな3Dデータをやり取りするうちに、時間をかけて作った修正済みの3Dモデルのサイズや位置が、微妙(もしくは大きく)にズレてしまうことがあります。手動で合わせようとして、サイズと位置が異なると合わせるのが至難の業です。
CloudCompareで2つの3Dモデルの特徴点を比較して、位置を合わせて、さらに細かく調整することで、同様の位置に合わせることができます。主体の3Dモデルの位置は動かさずに、もう一つの3Dモデルの位置を移動させます。
CloudCompare
https://www.danielgm.net/cc/
CloudCompareは各種OSに対応しています。今回は、Windows版をダウンロードしてインストールします。
Fileを選択します。
2つの3Dモデルを選択します。位置を動かさないモデルと、位置を動かして重ねたいモデルの名称を明確にすることが重要です。今回はmaster-modelが位置を動かないモデル、modelが修正済みで位置がずれてしまい位置を動かして重ねたいモデルです。
取り込むと形状が分からない緑色になります。見やすくするために2つのモデルを選択します。
2つのモデルを選択しながら、Edit、Normals、Computeを選択します。
Pre-Vertexを選択します。
画面は、本当にちょっとだけ2つのモデルの位置が異なっています。プレビューではわからないほど少しです。2つのモデルを分かりやすいように位置を移動します。Masterモデルは移動してはいけません。要注意です。移動したいモデルを選択して、赤い矢印のアイコンをクリックします。
分かりやすいように上に移動しました。
右上に位置を確定するチェックボタンがあります。クリックして確定します。
2つのモデルの特徴点を選択して比較するデータを作ります。2つのモデルを選択して、青と赤のアイコンをクリックします。
ここで注意が必要です。select to be aligned entities(整列するエンティティ)を選択します。位置合わせで移動したい方を選択します。
対象となる特徴的な部分を選択して、同じ位置を選択するとA0:R0といった感じに特徴点が追加されます。最初にto be aligned entities(整列するエンティティ)、そのあとにreference entities(リファレンスするエンティティ)を選択します。
複数の地点を選択できたら、alignをクリックします。
位置合わせがOKなら、チェックをクリックして確定します。
OKを押します。このあとより細かく位置合わせをします。
二つのモデルを選択します。
緑と赤が重なったアイコンを選択します。
ここが要注意です。ソフトウェアのバグなのか、初期設定で逆配置でモデルが設定されます。to be aligned(整列する方)に、マスターモデルが来ないようにします。マスターを移動すると位置が合いません。混乱するのでよく確認します。
配置が逆であることが認識できたらswapボタンをおします。
正しい位置にモデルが配置できました。referenceにマスターモデルが来るようにします。わかりやすいファイル名が重要です。OKボタンを押します。
さらに細かくに位置を合わせる処理が開始されます。
より正確に位置合わせが完了しました。同様の処理を2回程度おこなうとより良いようです。2回実施しました。これでほぼ完璧に位置が合いました。2回目もモデルの位置が逆になるので要注意です。
位置を移動したモデルは、リネームされます。2回実施したのでregistered,registeredとなっています。
モデルを選択して、保存アイコンを押します。obj等で書き出して完了です。
フォトグラメトリなどでは、写真から構築した3Dモデルを修正しないと使い物になりません。修正したモデルを元に戻して、テクスチャーを貼る作業をします。その途中に位置がズレてしまうとやり直さなければいけませんでした。この方法を使えば、位置を再び合わせることができるので、やり直しが大変な場合は有効な手段になるかもしれません。