スポンサーサイト

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

    Maya Matrix覚書

     今お世話になっている会社ではよくmatrixに関するノードを使用します。
     特にdecomposeMatrixとmultMatrixのボクの中での使用頻度は郡を抜いてるなぁと。

     しかしこのmatrix、理解すれば非常にリギングの高速化に貢献するすばらしいヤツなんですが、概念が非常に理解しづらいです。少なくともボクはしょっちゅう忘れます・・・(汗
     なので一度Mayaにおけるmatrixの簡単な概念をまとめておこうかと思います。ちなみにコレはお馬鹿な管理人の独自解釈によるまとめですので、間違ってる場合はご指摘頂けると助かります・・・(^^;


    ■あの数字の羅列は何を表しているのか


     まず適当なnullでもなんでもtransformノードを作ります。それを選んで
    getAttr .matrix;
    と入力すると
    // Result: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
    と返ってきます。これがmayaで扱われているmatrixなのですが、この数字の意味やいったい・・・?と言うのが今回のテーマ。

     これは全部で16個の数列ですが、まずは4つずつに区切ってみます。すると
    1 0 0 0
    0 1 0 0
    0 0 1 0
    0 0 0 1
    えぇ、まだ意味不明です。実はこれは1行1行がtransformに関する情報を保有しています。


    まず、一番手っ取り早くわかり易いのが4行目。結論から言うと4行目の頭3つはtransformノードのX,Y,Zの位置座標を表しています。試しにさっき作ったtransformノードの位置を10, 5, 0に動かしてからmatrixを取ると
    1 0 0 0
    0 1 0 0
    0 0 1 0
    10 5 0 1
    に変わってます!
     これは比較的わかりやすいですね。4行目4番目の数字については後ほど。


     さて、次に注目するのが左上から3×3の部分
    1 0 0 0
    0 1 0 0
    0 0 1 0
    0 0 0 1
    これをさらに一行ずつ解体すると・・・
    1 0 0
    0 1 0
    0 0 1
     またまた結論から言うと、この各行の3つの数字がそれぞれX、Y、Z各軸の方向を表すベクトルになっています。1行目は1、0、0なのでX軸はX方向に1の向き、2行目は0,1,0なのでY軸はY軸方向に1の向き、3行目は0,0,1なのでZ軸はZ軸方向に1の向き・・・といった具合です。

     試しにZ軸で+45°まわしてmatrixをとると
    0.707107 0.707107 0 0
    -0.707107 0.707107 0 0
    0 0 1 0
    0 0 0 1
    となり、
     一行目では0.707107, 0.707107, 0でX軸が右斜め上を向き、2行目は-0.707107 0.707107 0なのでY軸が左斜め上を向き、3行目は0,0,1なので変わらず。つまり軸が+45°傾いた状態を表しています。

     
     回転を元に戻し、今度はスケールYを2にしてmatrixをとると
    1 0 0 0
    0 2 0 0
    0 0 1 0
    0 0 0 1
    となり、2行目のY軸だけがY方向に2倍になっているのがわかります。
     因みにshearXYを1にすると
    1 0 0 0
    1 1 0 0
    0 0 1 0
    0 0 0 1
    となり、Y軸だけが斜めになっていることがわかります。結果このノードの形状がY軸で斜めになるわけです。
     昔から、なぜTransformの中にshearが入っていたのかが、浮いている気がして不思議だったんですが、この理論があるからtransformノードはshearもサポートしてたんですね。う~ん、考えたヤツ天才すぎる。

     最後に。各行の頭3列までの情報はわかったのですが、どの行も4列目だけは使用しませんでした。実際基本的にはMayaでは使用しないようです。
     では、使わないのに何故4行目の四列目の数字だけ1なのか? それは、そうすることによってこの行列が単位行列(identity matrix)になるからだそうです。昨日知りましたw(^^;)

     まぁ他にも深い理由がいっぱいあるのかもしれませんが、納得できる理由をゲットできたんで良しとします。
     ↑ほんま適当やな
    スポンサーサイト

    コメントの投稿

    非公開コメント

    プロフィール

    Eske

    Author:Eske
    萌えイラストレーターを目指す3DCGイラストレーター。
    現在ポケモンカードゲーム、ガンダムトライエイジ、ガンダムコンクエスト、妖怪ウォッチとりつきカードゲームなどで3DCGを使用したイラストレーターとして参加中。

    主にここでは日々気づいたメモなんかを残してます。
    イラストのお仕事も受け付けております。ココのメールアドレスからご連絡できますので、お気軽にご相談下さい。

    最新記事
    最新コメント
    カテゴリ
    最新トラックバック
    月別アーカイブ
    検索フォーム
    リンク
    QRコード
    QR
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。