あれこれ計算してフリップしたUVを見つける!! part1

UV Texture Editorで、表裏を表示する機能(そのUV大丈夫!?)をご紹介いたしましたが、今回は、プログラムでUVの表裏を見つけ出す方法をご紹介したいと思います!

こちらの機能は、Amaterasuに搭載されています!!

取っ掛かりは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で拡散お願い致します!