ms_3d

3DCGに関するあれこれ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

UV展開備忘録

■たまに3Dの掲示板を眺めると結構UV展開でツマヅイテル人を見かけます。
 基本的にソフトの扱い方のような気もするんですが、
 確かにUV展開って、マニュアルや文章だと理解しにくいかもです。
 理解をすれば簡単なんですけ、ちなみに僕もそうでした。
 (目の前でソフトを扱うのを見ると疑問は氷解するんですけどね)

■ちょとUVの概念を簡単に文章化してみると、

 「プラスチック球に世界地図を貼る」

 ということだと思います、よーするに地球儀ですね。
 地球儀の元になる球は3Dです。世界地図は2Dです。
 2Dである世界地図を3Dに貼り付ける。
 これがUVの考え方です。

 現実に球に世界地図を貼ると、紙が歪んだり、糊がはみ出たり
 なかなか大変なんですが、CGの場合は簡単です。
 なにしろポリゴンは(四角以上は非平面が存在しますが)平面だからです。

■写真屋やペイントなど2Dソフトをイヂッタことのある人は解ると思いますが
 2Dの座標はXYで表現されています。
 UVとは、このXとYをU(何の略でしょうね)と
V(vertical)に言い換えただけのものです。

 3Dになると、これに一つ「奥行き」というZ成分が増えちゃうので、
理解しにくくなったり、
 歪みの原因になるわけなんですが、
ある程度の歪みは無理矢理補正しちゃいましょう、
 なにしろ人間の目だって本来は2Dでしか視識出来ないわけで、
 それを脳内補間しているに過ぎません(^_^)

 さて、地球儀の話に戻すと、
 正二十面体(ずいぶんカクカクとした地球ですが)の球に、
世界地図を貼ろうとすれば

 20枚の三角形に世界地図を切り分けて用意するわけですが、
 現実的なCGとしては(変な言い方ですね)
 20枚のポリゴンを配置した一枚のテクスチャーを用意します。
 これがゲームなどでよく見かける、
パズルのようなUV展開されたテクスチャーというわけです
■さて、前置きが長くなったんですが、
 このUV展開が意外と手間がかかります。
 形の単純なローポリだと
 モデリングに3時間、UV展開に6時間、テクスチャー描きに10時間。
 比率的にはこんな感じかも。
 
 しかも時間というよりは、
 頭を使います、自分としてはこれがかなりツラかったりします(笑

■なんとか効率的な方法論はないものか?
 と、考えをまとめるために、自分のやり方を紹介します。
06_1_9.jpg
 
 ①UVに展開する部分を選定します。
(鏡面や繰り返しの部分は出来るだけまとめます)
 ②見た目の法線を元にXYZ軸に面を分けます。
 (画像は、ワカリヤスイように色分けしてありますが、普段はしません)
 ③オブジェクトを包む立方体を配置します。(バウンドボックスですね)
 ④XYZの三方向でUVを展開します。
 ⑤テクスチャを描きやすいように、チマチマと配置しなおします。
 ⑥チェック用のテクスチャを貼って、大きさや歪みなども調整します。
 ⑦UV値を画像に描き出して、反復するポリゴン用のアタリを描きます。
 ⑧反復するポリゴンをコピペして貼り付けます。
 ⑨全部貼り終わったら、グルグルまわして確認します。
 ⑩んで、レタッチソフトで本格的なテクスチャ描きに移ります。
06_1_10.jpg

■もっと効率的な方法もあるかもしれないんですが、
 一応僕はこん感じでやってます。
 バウンドボックスを作るのは、UVの縦横比の統一と、
大きさの統一が簡単だからです。

 ただ、この方法だと⑤の作業が異常に煩雑です。
 なので、モノによってはバウンドボックスを作らず
手作業で展開してくこともあります。
 にしてもやはり一番厄介なのは⑤の作業工程です。

■まず、プログラムとしてアルゴリズム化出来ないと思われる作業は、
 ①展開するポリゴンの選定。
 ⑤UVの配置の変更。
 ⑥UVの大きさや歪みの修正。
 ⑦テクスチャーのアタリを描く作業。
 ⑧UVをコピペする作業。
 ⑨確認する作業。
 ⑩テクスチャ描き全般。
 よーするに人間の決定が大きく関わる部分なんですが、

 ⑤の作業は、なんとなく自動化する方法もあるよーな気もするんすね。

 逆にプログラム化出来る作業は
 ②法線によるXYZ軸のサーフェイス分け。
 ③バウンドボックスの作成。
 ④XYZ軸へのUV焼付け。
 
 これはMeshBrainさんのUV立方体投影 Ver1.00でも実現されていることです。
 僕自身は法線をいまいち理解し切れていないので
面を6分岐させる部分がどーもタドタドシクテ
 プラグインを作れないのですが、
 作った方がいるということは、出来るし、
 ここからの応用も可能だということです。

06_1_11.jpg

■さてさて、ここから夢想(^_^)
 理想のUV自動展開は

 ・テクスチャを描ける面積が大きく配分されていて
 ・パーツごとに人間でも理解しやすく配置されていて
 ・歪みが少ない
 ・そして最低条件としてUVが重なっていない
 ・&ボタン一発(^_^)

 まず、考えるのは、
 UVを重ならないようにする方法。
 これもおそらくアルゴリズムはありそーかも。
 ゲームと同じXY値のアタリ判定でなんとかなりそーな。
 次に考えるのは、
 3Dの空間の中で座標的に近い位置にあるものは、
 UV座標の中でも、近い位置に配置出来るか否か?
 ここいら辺からヤヤコシクなってきますねー(^_^;)
 
 頂点が重なっているものを"接続しているモノ"として
 その3D座標にあるものは、UVに持っていくときも近い位置に
 グループ化する。
 その後で、UV展開図をアタリ判定で配置する。
 ただし、この工程で何か一つアルゴリズムを噛まさないと、
 面積的にはロスの多い配置になりますね。
 うーん・・。
 
 素直にLWでアトラス展開した方が速いのかにゃ?
 と、備忘録ですた。
スポンサーサイト
  1. 2006/01/27(金) 17:47:07|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:2

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。