【Maya】行列(Matrix)の取得・作成と要素の取得

Tech

はじめに

この記事では、Mayaのノードベースで行列(Matrix)を取得・作成し、各要素を取り出す方法を解説します。リギングやプロシージャルな制御で行列を扱う際の基本操作をまとめています。

変換行列の取得

ノードエディタ等で transform ノードを表示します。「〇〇 Matrix」という名前のアトリビュートから、それぞれの変換行列を取得できます。

ただし、配列になっているもの(画像の青枠部分)もあるため、行列アトリビュート横の+ボタンを押して展開してください。

MayaのノードエディタでTransformノードのMatrix系アトリビュートを表示した画面

行列の作成

SRTから作成する

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

MayaのcomposeMatrixノードでSRTから行列を作成する設定

TransformノードでShearを表示したいときは、ノードのアイコン付近で右クリック > 「Show All Attributes」を実行した後、アイコン下の検索欄に「sh」と入力すると見つけやすいです。

数値から作成する

fourByFourMatrix ノードを作成し、任意の数値を接続します(ノードのアイコン付近で右クリック > 「Show All Attributes」で入力アトリビュートを表示できます)。または、Attribute Editorで直接入力することも可能です。

MayaのfourByFourMatrixノードで数値から行列を作成する設定

行列の値の確認

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

MayaのdecomposeMatrixノードで行列の値を確認する画面

行・列・要素の取得

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

MayaのrowFromMatrix・columnFromMatrixノードで行列の行・列を取得する画面

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

MayaのaxisFromMatrixノードで軸要素を取得する画面

たとえば「2行目・0列目」の要素を取得したい場合は、以下のいずれかから取得できます。

  • rowFromMatrix(index=2)の OutputX
  • columnFromMatrix(index=0)の OutputY
  • axisFromMatrix(Axis=Z)の OutputX

まとめ

Mayaでは composeMatrix(SRTから作成)や fourByFourMatrix(数値から作成)で行列を構築し、decomposeMatrix で値を確認、rowFromMatrix / columnFromMatrix / axisFromMatrix で個別要素を取り出せます。ノードベースで行列を操作する基本パターンとして覚えておくと、リギングやプロシージャルな処理で役立ちます。

コメント

タイトルとURLをコピーしました