見出し画像

[mayaで、目で見る、matrix]その2 「トランスフォーム」ノードを構成する階層を見てみる(移動/回転/スケール以外のmatrixを構成するすべて)

トランスフォームノードのアトリビュートでなじみ深い、
「移動(translate)」「回転(rotate)」「スケール(scale)」。
次は、これら以外の隠れたアトリビュートの階層順番を見てみたいと思います。

※「シア(shear)」というアトリビュートがでてきますが、
 とてもややこしい為、今回は扱わないことにします。
 しばらくしてから扱う予定です…!

上記なじみ深いアトリビュート以外に、座標を表現するアトリビュートとして、下記が隠れています。

「回転ピボットの移動(rotatePivotTranslate)」
「回転ピボット(rotatePivot)」
「回転軸(rotateAxis)」
「スケールピボットの移動(scalePivotTranslate)」
「スケールピボット(scalePivot)」
「シア(shear)」


階層として見てみる

では、上記のアトリビュートを含めた、
「移動(translate)」「回転(rotate)」「スケール(scale)」、
これらを階層として見てみると、下記の順番になります。

「移動(translate)」
「回転ピボットの移動(rotatePivotTranslate)」
「回転ピボット(rotatePivot)」
「回転(rotate)」
「回転軸(rotateAxis)」
「回転ピボットの逆値(inverseRotatePivot)」
「スケールピボットの移動(scalePivotTranslate)」
「スケールピボット(scalePivot)」
「シア(shear)」
「スケール(scale)」
「スケールピボットの逆値(inverseScalePivot)」

文字では、分かりずらいですね。。
mayaで、階層として表現すると下記です。

う~ん…、、、、これでもまったく分かりにくいですね。。
実際にどういう挙動になるのか、目で見てみたいと思います。


初めに、
チャネルボックスにアトリビュートを表示してみます

チャネルコントロールから、
座標を表現するすべてのアトリビュートを表示しました。

「回転ピボットの移動(rotatePivotTranslate)」

まずは、
「回転ピボットの移動(rotatePivotTranslate)」の挙動を見てみます。

値を変更すると、下記挙動になります。

普段使用している、「移動(translate)」と全く同じ動きだと思います。
そうなんです。ただの移動を扱うアトリビュートなんですね。

いっぱいある移動を扱うアトリビュート

上図は先述した、アトリビュートを階層として表現したものですが、
赤で書かれているものはすべて、
「移動(translate)」と同じ、移動を扱うアトリビュートです。

なぜいっぱいあるのか?
それは、2つの役割があると思います。

①回転、スケールをする前(上)の階層で、移動をさせたい時に使用する
 ・「回転ピボットの移動(rotatePivotTranslate)」
 ・「スケールピボットの移動(scalePivotTranslate)」)

②回転、スケールをする起点(ピボット)を移動させたい時に使用する
 ・「回転ピボット(rotatePivot)」
 ・「スケールピボット(scalePivot)」

文字で書いても分かりにくいですので、
下で、目にで見ていきたいと思います。

アトリビュート階層を目で見てみる

ここからは、各アトリビュートを階層として表現した際に、
それぞれがどのように動いているかを目で見ていきたいと思います。

src

ただの「トランスフォーム」ノードに、
ロケータ的なshapeをあてたものです。
色を付けており、軸の向きが分かるようにしてみました。

アトリビュートの疑似的な階層

「トランスフォームノード」のmatrixに使用するアトリビュートを階層として表現したものです。
最下層に、色がついたキューブのshapeを配置しています。
srcの各アトリビュートを各階層にコネクションしました。
srcの各アトリビュートの値を変えた際に、どのような動きをしているか、
目で見えるようにしたものです。

こう見て頂ければ大丈夫です!

「src」の十字と、
「アトリビュートの疑似的な階層」のキューブが、
一緒の動きをしていれば、
「src」のアトリビュートを「アトリビュートの疑似的な階層」が、
ちゃんと表現できているんだな!と思って頂ければと思います。


ピボット関連のアトリビュートを見てみる

ではまずは、
「回転ピボット(rotatePivot)」と、
「スケールピボット(scalePivot)」の挙動を見てみます。

「回転ピボット(rotatePivot)」と、
「スケールピボット(scalePivot)」を動かすと…!

「回転ピボット(rotatePivot)」で設定した値分、移動し、
「回転ピボットの逆値(inverseRotatePivot)」で元の位置に戻っています。

「スケールピボット(scalePivot)」も同様です。

これは、
対象のアトリビュート(回転/スケール)を行う際の起点(ピボット)は、変更するけど、
その子階層の起点(ピボット)には影響しないよ!ということになります。

実際に見てみましょう!

「回転ピボット(rotatePivot)」を動かしても、
「スケールピボット(scalePivot)」の位置には影響していません。

回転とスケール、それぞれの起点(ピボット)を設定することができる、
ということですね。

「回転軸(rotateAxis)」

「回転(rotate)」と同じく、回転を扱うアトリビュートです。

アトリビュート階層で見ると、
「回転(rotate)」の子階層にあります。
その為、「回転(rotate)」した後に、さらに回転させることができます。


普段見ている、
移動/回転/スケール以外のアトリビュート

こちらで、「トランスフォームノード」での座標を表現するすべてのアトリビュートを見てきました。
(「シア(shear)」が残っていますが、今回は割愛します。。)

「回転ピボットの移動(rotatePivotTranslate)」
「回転ピボット(rotatePivot)」
「回転軸(rotateAxis)」
「スケールピボットの移動(scalePivotTranslate)」
「スケールピボット(scalePivot)」
「シア(shear)」

アトリビュートはいっぱいありましたが、
普段見ている、「移動(translate)」と「回転(rotate)」と同じことを、
複数の階層でも行っているんだな…!ということが見えたかと思います。

また、やっていることは、移動/回転ではあるけど、
その子階層の起点(ピボット)が変わるということも見えたのではないかと思います。


まとめ

①「トランスフォーム」ノードには、移動/回転/スケール以外にも、座標を表現するアトリビュートがある。
でも、やっていることは、ただの移動/回転ばかり。
②上の階層の座標が変われば、子階層の挙動も変わる。

この記事が気に入ったらサポートをしてみませんか?