3

ジオメトリ テンプレート エンジンを実装しようとしています。パーツの 1 つは、プロトタイプのポリゴン メッシュを取得し、インスタンス化をより大きなオブジェクト内のいくつかのポイントに合わせることです。

したがって、問題は次のとおりです。ポリゴン メッシュの頂点の一部 (おそらくすべて) の 3 次元ポイント位置が与えられた場合、変換された頂点と特定のポイント位置の差を最小限に抑えるスケーリングされた回転を見つけます。それが役立つ場合は、固定したままにできる中心点もあります。頂点と 3D 位置の対応は固定されています。

変換行列の係数を解くことでこれができると思っていますが、解くシステムを構築する方法が少しわかりません。

この例は立方体です。プロトタイプは、頂点インデックスを持つ、原点を中心とする単位立方体になります。

4----5
|\    \
| 6----7
| |    |
0 |  1 |
 \|    |
  2----3

適合する頂点の位置の例:

  • v0: 1.243,2.163,-3.426
  • v1: 4.190、-0.408、-0.485
  • v2: -1.974、-1.525、-3.426
  • v3: 0.974、-4.096、-0.485
  • v5: 1.974,1.525,3.426
  • v7: -1.243,-2.163,3.426

では、そのプロトタイプとそれらの点が与えられた場合、頂点とそれらの位置の間の距離を最小化する単一の倍率と、x、y、および z を中心とした回転をどのように見つけるのでしょうか? メソッドが立方体だけでなく、任意のメッシュに一般化できることが最善です。

4

2 に答える 2

6

すべての点とそれらの対応があると仮定すると、最小二乗問題を解くことで一致を微調整できます。

minimize Norm(T*V-M)

ここTで、 は探している変換行列、V はフィットする頂点、M はプロトタイプの頂点です。ノルムはフロベニウス ノルムを指します。M と V は 3xN 行列で、各列はプロトタイプの頂点とフィッティング頂点セット内の対応する頂点の 3-ベクトルです。T は 3x3 変換行列です。次に、平均二乗誤差を最小化する変換行列は ですinverse(V*transpose(V))*V*transpose(M)。結果として得られる行列は一般に直交しないため (せん断のない行列が必要です)、行列の Procrustes 問題を解いて、SVD を使用して最も近い直交行列を見つけることができます。

どのポイントがどのプロトタイプ ポイントに対応するかがわからない場合、解決したい問題はサーフェス レジストレーションと呼ばれます。これは活発な研究分野です。たとえば、あなたが求めている厳格な登録についても説明しているこの論文を参照してください。

于 2009-11-17T20:16:06.427 に答える
0

任意の3Dジオメトリ上にメッシュを作成する場合、これは通常行われる方法ではありません。

八分木メッシュ生成手法を確認する必要があります。真の3Dプリミティブ、つまり立方体ではなく四面体を使用すると、より良い成功を収めることができます。

ジオメトリが3Dボディの場合、最初に必要なのはサーフェスの説明だけです。「最適な」内部ポイントを決定することは、何も持っていないため、意味がありません。内部の四面体があまり歪まないように配置する必要がありますが、それが最善の方法です。

于 2009-11-17T23:16:37.333 に答える