Parameterizationのアルゴリズムを比較する研究目的でParameterizeキットを作ってみました。Parameterizationは、3次元空間のメッシュを2次元空間にマッピングするためのアルゴリズムの呼称で、3DCGツールではUV展開の手法として使用されています。Modoでは初期のバージョンからLSCM(Least Square Comformal Maps)やABF++などのアルゴリズムがUV UnwrapツールやUV Relaxツールとして実装していましたが、その後はあまりアップデートしていませんでした。
CDT TriangulationキットやSkeletonキットを作った際に、CGALやlibiglがさまざまなParameterizationの機能を提供していたので、Modoで試してみれるようにプラグインにしてみました。自分の研究目的で作ったキットですので、Modoの機能としてはあまり実用的ではないかもしれません。すみません。
境界を固定化したパラメータ化
これは3DCGのUVツールでは、あまり利用されることはないと思いますが、円もしくは四角形などの固定された境界の中に3次元空間のメッシュをマッピングするアルゴリズムです。計算方法は、Tutte Barycentric Mapping、Floater Mean Value Coordinates、Discrete Conformal Map、Discrete Authalic Parameterizationなどがあり、展開するポリゴンの角度比率の歪みを最小限にしたり、面積比率を最小化するなど各アルゴリズムで特徴があります。
おそらくUV Unwrapのアルゴリズムとして、最も一般的に使われている手法ではないかと思われます。角度の歪みの最小化は、コーシーリーマン方程式の最小二乗近似に基づいており、角度の歪みや非一様なスケーリングを最小化します。計算には少なくとも2つの頂点を固定しておく必要があります。初期の頃に公開された比較的ベーシックなアルゴリズですが、計算が比較的安定しているので、多少イレギュラーなメッシュであっても安定して計算結果をえることができるのが良いです。Least Squares Conformal Maps for Automatic Texture Atlas Generationという論文がもとになっています。Modoでは、ユーザーが手動で計算の反復回数を指定するようにしていますが、CGALでは収束するまで自動的に計算を反復するようです。