2007年02月05日

UVマップの歪みを緩和する その4 modo 202

さて、今回は久々にUVRelaxー.pyをいじってみた。実験段階で長らく止まっていて、使い物にならなかったわけだけど、今回少し前進した。ただ、残念なことにまだ完全に歪みを取る事は出来ていない。原因が演算誤差なのか、それとも理論に無理があるのか、電卓を叩きながら検討してみないとわからん・・・Orz

それでも前回のものとは違ってメッシュポイントを全部取得に行くなんていう無茶はしていないので、総ポイント数が増えても局所的に選択したポイントの数+それに繋がるポイントの数だけが処理対象になるので、動作が安定したよ。

UVの歪みを緩和する使い方はシンプルで、歪みを取りたいポイントのみ選択して、スクリプトを実行すると、繰り返し回数を聞いてくるので、適当に回数を入力する。この処理は徐々に歪みを取っていくのでこの回数を増やすほど歪みが取れていき、どこかで均衡する。だから回数は多いに越したことは無いんだけど、そのぶん処理に時間がかかるようになる。最初は10回くらいでやって様子を見てみるといいだろう。次に歪みの取り方として、ポイントを繋いでいるエッジをゴムひもと捉えて引っ張る力だけで処理する(Tension Only)のか、それともバネとして捉えて伸び縮み両方向の反発力を使うのかを選択する。バネの方が歪みの取れ方は正確に近くなるけど、歪みが酷いと発散する事もあるので、そんな場合はまずゴムひもである程度歪みを取ってからバネで処理するといいと思う。

歪みと一口に言ってもいろんな歪みの取り方があるので、代表的な2例を上のGIFアニメにしておいた。実メッシュとUVマップの形状が異なるために引きつれを起こしている場合と、UVマップのメッシュが偏っていてテクスチャが張りにくいので、単純にメッシュの歪みを取りたい場合だ。そんな時はTensionOnlyが役に立つと思うよ。

ちなみにポイントを選択する時は必ず縁のポイントを残して選択してね。選択したポイントが全部動くわけだから、すべてのポイントを選択すると、引っ張って網目状にしたゴムひもを全部開放するのと同じでくしゃくしゃに縮こまるだけだよ。

アルゴリズム的な話をすると、今回は実メッシュの方のエッジ長の比率で処理対象のUVメッシュに繋がるエッジの合計長さを比例配分して、現在のUVマップ上のエッジ長さと比較してその差を使ってポイントを移動させている。だから演算が均衡すると実メッシュのエッジの長さ比とUVメッシュのエッジの長さ比が近づくはずなんだけど、この辺が微妙なんだなぁ。あともうちょっと何か足りないんだな。

それではまた次回。

スクリプトまとめページ( Down Load はこちらから)  

カテゴリー別ページ



take_z_ultima at 12:25│Comments(0)TrackBack(0)modo | CG

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives