Houdiniかんたんレシピ 9 ~ Pre Transform ~


~基本的すぎてあまり紹介されない、ちょっと便利な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は働きません。親と一緒に動きます。