メッシュAとメッシュBの2 つのメッシュがあります。
私はMeshLabで作業しており、必要なのはそれらを整列させてから、B を A にもたらす変換行列を推定することだけです。
位置合わせツールを使用するときは、Aを接着し、ベース メッシュとして設定します。次に、B にポイント ベースの接着を実行し、必要に応じてプロセスボタンを使用します。手順の最後に、MeshLab プロジェクトを保存します。
B を A にもたらす変換行列を推定するために、.mlp プロジェクト ファイル (実際にはプレーン テキスト ファイル) を開いて、データを読み取ります。残念ながら、私が得るものは私が期待するものではありません。もちろん、A と B の 2 つのメッシュがあります。それぞれに変換行列があります。メッシュ A (ベース メッシュとして接着されて設定されたもの) には単位行列があり、メッシュ B には A に B をもたらすために必要な変換行列があると思います。メッシュ A の行列が単位に近い場合もありますが、それでもアイデンティティーワン。
次に例を示します。
<!DOCTYPE MeshLabDocument>
<MeshLabProject>
<MeshGroup>
<MLMesh label="A" filename="A.stl">
<MLMatrix44>
1 3.61241e-09 1.85292e-11 -5.04461e-08
-3.61241e-09 1 3.45518e-10 1.03514e-07
-1.85292e-11 -3.45518e-10 1 5.35603e-09
0 0 0 1
</MLMatrix44>
</MLMesh>
<MLMesh label="B" filename="B.stl">
<MLMatrix44>
-0.670956 -0.741136 -0.0231387 78.366
0.738444 -0.665039 -0.111463 24.2717
0.0672212 -0.0918734 0.993499 33.6056
0 0 0 1
</MLMatrix44>
</MLMesh>
</MeshGroup>
<RasterGroup/>
</MeshLabProject>
ここで、私の単純な仮定は、何らかの理由で MeshLab が B を A に適切に移動できないということです。代わりに、B を A に非常に近づけますが、A の位置も最小限に調整して最適に一致させる必要があります。
もしそうなら、最高の B から A への変換を行うために、次のことを実行したいと考えています。
[B マトリックス] * INVERTED[A マトリックス] = [A マトリックス上の B]
これは正しいです?