- 点群からB−Spline曲面…再考の巻きーー
原因はパラメータライゼーションの質にあったのでバネモデルによる歪の最小化を試してみた。
メッシュ上での(微分幾何)基本量E,F,Gやその他の必要な値は全て算出可能だったので実装そのものは楽だったが最適化は全く出来なかった。またメッシュの形状はどんどん歪んでしまった。ふと、早朝にプログラムを見ていて単純なコーディングミスがある事を見つけた。イメージ的には
for ( int i = 0; i < VertexNum; i++ ) a +=
gamma[i];
だが実際に書くべきコードは
for ( int i = 0; i <
VertexNum; i++ ) a += gamma[vertexID[i]];
であった。(ボケておりました(笑))
で、結果は
-
最適化前
|
最適化後
|
|
| 見ためにはやはり歪が増えているように見えるが局在化はかなり解消できている。
.
チェックの四方形面積が大きいほどパラメータの局在化が起きているのであるが、
最適化無し
|
最適化あり
|
|
| となってかなり解消できている。
これで先日までうまくいかなかったモデルで曲面化に再チャレンジできる。
なんとなく頭部が出来ている。そこでパッチ数を少し増やしていくと
同様に、
という結果である。
これで一応B-Spline曲面1面でフィットされた訳だが残念なことにC1連続すら満たさない局所的には折れたB-Spline曲面である。
しかし一旦パラメートリック曲面1面で表現されればテクスチャマッピングは自由に出来るようになる。
注:今回の歪の計算では以下の論文を参考にした。
AN ADAPTABLE SURFACE PARAMETERIZATION
METHOD
P. Degener, J. Meseth and R.
Klein
A fast and
simple stretch-minimizing mesh parameterization
Shin Yoshizawa
Alexander Belyaev Hans-Peter Seidel
※これら計算結果はWCCTLによって得られたものです
|