~基本的すぎてあまり紹介されない、ちょっと便利なTips紹介~
『Houdiniかんたんレシピ』は、Houdiniを使っていく上で、基本的なことですが基本すぎてチュートリアル等で紹介されないような、ちょっとしたTipsや、ニッチな機能を紹介していくシリーズです。
今回は第九回目として、 Pre Transformについて紹介します。
Pre Transform について
Sceneレベルでノードをワイヤでつなぐと親子関係になります。
通常、移動しているGeometryに対して親子関係を設定すると、子を親につないだ時に自動的に親からの相対位置に移動します。
子のKeep Position When Parentingオプションのチェックを入れると、移動せずに元の位置を保ったまま親子関係を作ることができます。
一見、子のTransformパラメータは変化してないように見えますが、インフォメーションを確認すると、実は内部にPre-Transformという形で移動のパラメータが設定されています。
Geometry内部にPre-Transformという形で、隠れたレベルの階層構造があると考えると良いかと思います。
このPre-Transformのパラメータは、Modify Pre-Transformメニューで操作することができます。
Clean Transform
現在のTransformパラメータ のTranslate、Rotate、Scale の数値をPre-Transformに格納して、Transformパラメータをリセットします。
Clean Translates
現在のTranslateパラメータのみをPre-Transformに格納して、Translateパラメータをリセットします。
Clean Rotates
現在のRotateパラメータのみをPre-Transformに格納して、Rotateパラメータをリセットします。
※この時Pre-Transformのtのパラメータに、微妙な数値がセットされているのは、Pre-Transform階層で回転させた時に、元と同じ位置に来るように調整されるためです。
Clean Scales
現在のScaleパラメータのみをPre-Transformに格納して、Scaleパラメータをリセットします。
※この時Pre-Transformのt、rのパラメータに、微妙な数値がセットされているのは、Pre-Transform階層でスケールさせた時に、元と同じ位置に来るように調整されるためです。
Extract Pre-Transform
現在のPre-TransformパラメータをTransformパラメータに戻してPre-Transformを削除します。
Transformパラメータに数値が設定されている時も、自動的に計算された数値になります。
Reset Pre-Transfrom
現在のPre-Transformパラメータを削除します。
※Modify Pre-Transformメニューの上の5つは見た目の位置は変わりません。こちらのReset Pre-Transfromだけ、見た目の位置が現在設定されているTransformパラメータ の位置に移動します。
Edit Parameter Interfaceで隠れているPre-Transformパラメータを表示させることもできます。
Edit Parameter InterfaceでNode PropertiesタブのPre-Transformフォルダを右側のExisting ParametersのTransformフォルダの下(どこでも可)にドラッグ&ドロップします。これでPre-Transformパラメータが表示され、直接操作できるようになります。
※こちらの隠しパラメータは、今後のバージョンで仕様の変更がある可能性があります。ご注意ください。
今回のPre-Transformはあくまで簡易的な階層構造ですので、アニメーションや複雑な階層構造を作る時は、Nullを作成し、明示的に階層構造を作る方が分かりやすく、安全です。
Keep Position When Parentingオプションも安易に使っていると、知らない間にPre-Transformのパラメータが設定されていて予期しない動きになる可能性もありますので、しっかりと管理して使用しましょう。
おまけ
Keep Position When Parentingオプションの下にChild Compensationオプションがあります。親のChild Compensationオプションをチェックすると、親の移動に子が影響されなくなります。親を動かしても子はついてきません。
アニメーションの有無で、以下のような挙動の違いがあります。
- 親子ともアニメーションが付いていない時 親を動かすと子のTransformのパラメータが変更されて位置をキープします。この時、Pre-transformはリセットされます。
- 子にアニメーションが付いている時、子のアニメーションはそのままで、Pre-Transformパラメータが変更され、位置をキープします。
- 親にアニメーションが付いている時は、Child Compensationは働きません。親と一緒に動きます。