D日記

モーションアーティストの技術ブログだよ。日常も書くよ。

MENU

【保存版】decomposeMatrix を使用してCVを制御【Maya】

過去にEvernoteに纏めたやつを発掘。せっかくだから記事にしておこう。シェアシェア。

あ、最近Netflixのテラスハウスにハマってます。
あれってほんとにノンフィクションなのかな?やたら面白い展開になるから逆に怪しい(笑)

まずはダメな例

IKSpline の CV( controlPoint ) の移動を、他のノードのトランスレートで制御するとする。
コレで、locator を動かすことにより、カーブを動かすことができるようになる。 f:id:ponta565:20180208223412p:plain



が、しかし問題がひとつある。
locator 同士をペアレントすると、カーブの形状が壊れるのだ。
f:id:ponta565:20180208223718p:plain

なぜ壊れるのか??

ペアレント化することにより(青枠内)、座標変換が行われ、トランスレート値が変わってしまっている。(赤枠内) ワールド空間(worldSpace)は、そのままである。CV を動かす場合は、ワールド空間を使用するのがいいだろう。

f:id:ponta565:20180208223818p:plain



ちなみに、locator2 のトランスレートを( 0 , 0 , 0 )にした場合、そのトランスレートを参照している CV の座標も( 0 , 0 , 0 )になるため、以下の画像のようになる。
数字だけ見ると、ちゃんとピッタリ移動しているのだが・・・ビューポート上では好き放題移動しているように見える(笑)

f:id:ponta565:20180208223954p:plain

Matrix を取得して、ワールドトランスレートに変換する!

プラグインエディタで、matrixNodes.bundle を読み込む。 f:id:ponta565:20180208224101p:plain

ノードエディターを開いて、TABを押下して、「decom・・・」と入力し、候補からノードを作成。
出力移動を CV に接続する。そうすることで、locator1 のワールド空間座標を CV に代入できる。
ワールド空間なので、ペアレントしても、CV がぶっ飛ぶことはなくなるはずだ! f:id:ponta565:20180208224129p:plain