はじめに
この記事では、Mayaのノードベースで行列(Matrix)を取得・作成し、各要素を取り出す方法を解説します。リギングやプロシージャルな制御で行列を扱う際の基本操作をまとめています。
変換行列の取得
ノードエディタ等で transform ノードを表示します。「〇〇 Matrix」という名前のアトリビュートから、それぞれの変換行列を取得できます。
ただし、配列になっているもの(画像の青枠部分)もあるため、行列アトリビュート横の+ボタンを押して展開してください。

行列の作成
SRTから作成する
composeMatrix ノードを作成し、TranslateやRotateを入力に接続します。または、Attribute Editorで直接Input Propertiesを入力することもできます。Output Matrixから作成された行列が出力されます。

TransformノードでShearを表示したいときは、ノードのアイコン付近で右クリック > 「Show All Attributes」を実行した後、アイコン下の検索欄に「sh」と入力すると見つけやすいです。
数値から作成する
fourByFourMatrix ノードを作成し、任意の数値を接続します(ノードのアイコン付近で右クリック > 「Show All Attributes」で入力アトリビュートを表示できます)。または、Attribute Editorで直接入力することも可能です。

行列の値の確認
decomposeMatrix ノードを作成し、行列の出力を接続します。Attribute Editorの DecomposeMatrix Attributes > Input Properties > Input Matrix > Matrix から、行列の各要素を確認できます。

行・列・要素の取得
行は rowFromMatrix、列は columnFromMatrix で取得できます。Inputアトリビュートで指定した行番号(または列番号)の要素が出力されます。

また、軸要素は axisFromMatrix で取得できます。たとえばAxisアトリビュートをXにすると、0行目のxyz成分が得られます。これは rowFromMatrix でindexを0にしたときに取得できるxyz成分の値と同じです。

たとえば「2行目・0列目」の要素を取得したい場合は、以下のいずれかから取得できます。
rowFromMatrix(index=2)の OutputXcolumnFromMatrix(index=0)の OutputYaxisFromMatrix(Axis=Z)の OutputX
まとめ
Mayaでは composeMatrix(SRTから作成)や fourByFourMatrix(数値から作成)で行列を構築し、decomposeMatrix で値を確認、rowFromMatrix / columnFromMatrix / axisFromMatrix で個別要素を取り出せます。ノードベースで行列を操作する基本パターンとして覚えておくと、リギングやプロシージャルな処理で役立ちます。


コメント