スポンサーサイト

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

"UV"のお話

【リンク】 ◆解説系TOP◆

ちょっと説明不足だったかな、と思う部分があったので、
今日はUVに関連する話をしたいと思います。
Xファイルの理解が深まること間違いなし!だと思う。多分・・・!(だんだん自信が無くなる)


先に断っておきますが、
UVと言うのはXファイルのテクスチャの座標を指定するUV座標の事であって、
紫外線UltraViolet Rays)の事ではありません。

関係無いのですが、高校の英語の授業で、
紫外線を"ウルトラヴァイオレット光線"と翻訳した友人が居ました。

「ウルトラヴァイオレット光線が人に当たり・・」みたいな和訳をしてたもんだから
英語の先生から、
--------------------------------------------------------------
「何でUltraVioletだけ翻訳しないの!?
"ウルトラヴァイオレット光線"って何なの!?兵器なの!?

--------------------------------------------------------------
とか叱られてました。

あと出かけるときは、白い傘に黒い服がいいらしいですよ。
※白い傘で光を反射し、黒い服で日光を吸収させるのです。
(白い服だと、反射した光が顔に当たって肌に良くないとか。)


------【本題】------
まず、Metasequoiaを使い、立方体を作ります。

【参考画像】
サンプル画像

で、それをXファイルとして出力し、その後 拡張子を.txtにして中身を見てみます。
【参考画像】
頂点数
これを見ると、下記のことが分かります。
-------------------------------------------------------------------
頂点の数 = 8個
頂点インデックス(面)の数 = 6個

-------------------------------------------------------------------
サイコロのような立方体は、頂点が8個、面の数が6個、当然ですね。

では、次にテクスチャを貼り付けてみます。

【参考画像】
サンプル画像2

その後、同じようにXファイルにして中身を見てみると・・・
頂点数2
はい、 頂点数が増殖しました。
(8個 ⇒ 20個)

自分は、始めは
「立方体の頂点は8個でしょ!? 何で20個になるの!?」
混乱しました。

しかし、後で頂点番号と頂点インデックスの対応関係を紙に書いてみたところ、
やっとこの現象が理解できました。

----------------------------------------------------------------------
頂点数が増えるのは3Dモデルの頂点を定義するためではなく、
UV座標の矛盾を解決する為のものだったのです。

----------------------------------------------------------------------

で、UV座標と言うのは最初で述べたとおり、
「テクスチャ(画像)のどの部分を表示するのか?」を指定する為の座標です。

【注意!】
UV座標は、(0,0)が左上、(1,0)が右上、(0,1)が左下、(1,1)が右下 になります。

【参考画像】
UV座標
---------------------------------
左上 = (0, 0)  右上 = (1, 0)
左下 = (0, 1)  右下 = (1, 1) 

---------------------------------
このように対応します。

ついでに上記の画像で、(0,0) (2,0) (0,2) (2,2)と指定すると、
↓こんな画像になります。
2倍
(変に画像をひねったりせずそのまま貼り付ける場合は、
     UV座標 = テクスチャを貼り付ける回数と考えていいでしょう。)

でUV座標というのはひとつの頂点に付きひとつです。
この制限こそが、頂点が増殖する原因です。

下記の画像を見てください。
UV矛盾
頂点0123によって面A
頂点2345によって面B
 が定義されています。


この時、頂点2
面Aにとっての左下(0, 1)でもあり、面Bにとっての左上(0, 0)でもあります。
頂点3も同じ問題を抱えてます)

しかし、複数のUV座標は持たせられません。
じゃあどうするか、というと、
全く同じ場所にもうひとつ頂点を作る
という事で、この問題を解決させています。

【参考画像】
UV矛盾2
-------------------------------------------------------
頂点2 = 左下(0,1)   頂点3 = 右下(1,1)
頂点7 = 左上(0,0)   頂点8 = 右上(1,0)

-------------------------------------------------------
このように定義し、
頂点0123 で 面A
頂点7845 で 面B

を描画するようにすれば解決!と言う訳です。
(そして、これが頂点が増殖する理由になる)


~おまけ~
「何故UV座標と言うのか?」というと、
適切なアルファベットが無かったからです。
X,Y,Zは三次元の座標軸で使われてますし、
Wは行列演算の時の4番目の要素として使われてます。
------------------------------------------------------------------
「既に使われているのなら、更に前のアルファベットを使えばいいじゃない」
------------------------------------------------------------------
と言うわけで、Wの前のUとVが使われる事になったのです。



今回のまとめ
-----------------------------------------------------------------
・テクスチャ一枚を普通に表示する時は、UV座標は0~1の範囲。
・テクスチャ情報を持たせた時、頂点が増えるのはUV座標の矛盾を解決させるため

-----------------------------------------------------------------

どうでもいいですが、
自分は始めUV座標は画像の横幅と縦幅を指定する勘違いしていて、
(0,0) (127,0) (0,127) (127,127)と設定し、

変なテレビの砂嵐みたいな画像を表示させた経験があります。



今日は比較的 基本的な事の解説でした。
しかし、初めてXファイルを見た人で混乱する人は居たのではないのでしょうか?
少なくとも自分は混乱した

これで頂点の数で困惑する事は無いでしょう。
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント
コメントの投稿
管理者にだけ表示を許可する



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