過去にEvernoteに纏めたやつを発掘。せっかくだから記事にしておこう。シェアシェア。
あ、最近Netflixのテラスハウスにハマってます。
あれってほんとにノンフィクションなのかな?やたら面白い展開になるから逆に怪しい(笑)
まずはダメな例
IKSpline の CV( controlPoint ) の移動を、他のノードのトランスレートで制御するとする。
コレで、locator を動かすことにより、カーブを動かすことができるようになる。
が、しかし問題がひとつある。
locator 同士をペアレントすると、カーブの形状が壊れるのだ。
なぜ壊れるのか??
ペアレント化することにより(青枠内)、座標変換が行われ、トランスレート値が変わってしまっている。(赤枠内) ワールド空間(worldSpace)は、そのままである。CV を動かす場合は、ワールド空間を使用するのがいいだろう。
ちなみに、locator2 のトランスレートを( 0 , 0 , 0 )にした場合、そのトランスレートを参照している CV の座標も( 0 , 0 , 0 )になるため、以下の画像のようになる。
数字だけ見ると、ちゃんとピッタリ移動しているのだが・・・ビューポート上では好き放題移動しているように見える(笑)
Matrix を取得して、ワールドトランスレートに変換する!
プラグインエディタで、matrixNodes.bundle を読み込む。
ノードエディターを開いて、TABを押下して、「decom・・・」と入力し、候補からノードを作成。
出力移動を CV に接続する。そうすることで、locator1 のワールド空間座標を CV に代入できる。
ワールド空間なので、ペアレントしても、CV がぶっ飛ぶことはなくなるはずだ!