UV Texture Editorで、表裏を表示する機能(そのUV大丈夫!?)をご紹介いたしましたが、今回は、プログラムでUVの表裏を見つけ出す方法をご紹介したいと思います!
取っ掛かりはTangentとBinormal
普段、法線(Normal)は意識されている方は多いと思いますが、それ以外にも「Tangent」と「Binormal」という物があります。
MayaのViewPortで表示するには、ポリゴンをAttribute Editorで表示して、「Mesh Component Display」の項目を開き「Display Tangent」のチェックをONにします。
すると、頂点から、青と赤の線が表示されます。コレがTangentとBinormalになります!
UVを動かすと、この赤の線と青の線の方向が変化します!!(゚A゚;)ゴクリ
このUVを動かして、フリップした状態にすると、、、
U方向にFlipするとTangentが逆を向き、V方向にFlipするとBinormalが逆を向くんです!!(゜o゜;
っということは、3Dではおなじみの、、、
「外積」と「内積」
を使ってFlipしたUVを見つけることができそうです!!
外積を使うと?
外積を使うと、2つのベクトル「v1」「v2」から、どちらにも垂直なベクトル「v3」を求めることができます!外積は「Cross Product」とも言います!(`・ω・´)ゞ
今回の例に当てはめて見ると、以下のようになります!Uか、VがFlipした場合は、「v3」が逆方向を向きます。
UVが表の場合は、法線と同じ方向を向いて、裏を向く場合は法線の逆を向くようになりそうですね!!(゚∀゚)
内積を使うと?
内積を使うと、2つのベクトル「v1」「v2」がどれくらい同じ方向を向いているか調べることができます。内積は「Dot Product」とも言います!∠( ゚д゚)/
この値は「-1~1」の範囲で取得することができます!「1」の時は同じ方向(0°)で、「-1」で逆方向(180°)になります。
っということは!?
TangentとBinormalの外積を求めて、フェイスの法線と内積を求めれば、UVが表か裏か調べることができます!改めて画像にすると、以下のような感じです!
ちょっと記事が長くなってしまったので、プログラムに落とし込む部分はPart2でご紹介したいとおもいます!!(*´ω`*)
この記事がイイネ!っと思ったら、ぜひSNSで拡散お願い致します!