Houdini 20.0 基本

オブジェクトの扱い方

On this page

概要

オブジェクトはシーンでトップレベルの階層に位置する物体を表現したものです。 オブジェクトにはワールド空間の位置、回転、スケールの情報をもっています。

ジオメトリコンテナとサーフェスノード

Houdiniのモデルは、シーンレベルのジオメトリオブジェクトで表現されます。ジオメトリコンテナオブジェクト内部でジオメトリ(サーフェス)ノードがオブジェクトのジオメトリを定義します。ジオメトリコンテナオブジェクトでは、オブジェクト内部の個々のサーフェスとは別に、移動、回転、スケール、オブジェクト全体をシェーディングすることができます。

シェルフツールを使うと、Houdiniはジオメトリコンテナオブジェクトを作成し、その内部にサーフェスノードを作成します。例えば、シェルフの Sphere ツールをクリックすると、新しくobject_sphere1の名前のジオメトリコンテナオブジェクトと、その内部にsphere1の名前のSphere SOPが作成されます。

コンテナオブジェクトとその中のサーフェスノードには、それぞれ独自のパラメータがあります。場合によっては機能的にパラメータが重複しているように見えます。例えば、コンテナオブジェクトの中にSphereノードが1つあるとします:

  • Sphereノードの Center パラメータは、球の位置を設定します。これは、オブジェクト全体を移動させるコンテナオブジェクトの Translate パラメータと同じ効果です。

  • Sphereノードの Radius パラメータは、コンテナオブジェクト内の球のサイズを設定するのに対して、コンテナオブジェクトの Scale パラメータはオブジェクト全体のサイズを設定します。

コンテナオブジェクトとサーフェスノード間の移動

Houdiniにはジオメトリコンテナとサーフェスノード間を行き来する方法がいくつか用意しています。

選択モード

オブジェクトモードと コンポーネント間を切り替えるには、左側のツールバーのモードアイコンをクリックするかF8を押します。シーン(オブジェクト)レベルとジオメトリ(コンポーネント)レベル間を切り替えると、ネットワークペインとパラメータペインも切り替わります。

オペレーションコントロールツールバーのジャンプアイコン

シーンレベルでジオメトリコンテナを選択すると、オペレーションコントロールツールバー(ビューアの上部)はそのジオメトリコンテナ内のディスプレイフラグが付いたサーフェスノードのコントロールを表示します。

ツールバーのジャンプボタンをクリックするとコンテナ内部のジオメトリレベルにジャンプすることができます。

パスガジェット

ペインのパスガジェットにあるobjをクリックすると、シーン(オブジェクト)レベルに戻ることができます。

ネットワークエディタ内

ネットワークエディタ内でジオメトリコンテナノードをダブルクリックすると中に入ることができます。また、ノードを選択してIEnterを押すことでも可能です。または、ノードをクリックして Dive into Network を選択します。

ネットワークエディタ内でUを押すと、コンテナネットワークに戻ることができます。

バック/フォワードボタン

一度オブジェクト内のジオメトリレベルにアクセスすると、ペインの上部にあるパスガジェットの隣りにあるバックとフォワードボタンを使ってシーン(オブジェクト)レベルとジオメトリレベル間を行き来することができます。

詳細は、ネットワークエディタを参照してください。

オブジェクトとサーフェスのトランスフォームの違い

通常行なうトランスフォーム(移動、回転、スケール)は オブジェクト です。ジオメトリレベルでサーフェスをトランスフォーム(例えば、Transform SOPを使う場合)すると、適切に 変形 できますが、シーンレベルでオブジェクトを変形するよりは計算がかかります。

これは、ジオメトリレベルでトランスフォームするのが悪いと言うことではありません。よく何度もオブジェクトの形状をジオメトリでトランスフォームする場合がよくあります。ここで言いたいのは、 サーフェス のトランスフォーム以外にも オブジェクト のトランスフォームで目的を達成できることを知っておいてほしいのです。

親子化

親子化は、子のオブジェクトのトランスフォームを親のオブジェクトのトランスフォームを基準にします。

オブジェクトAの出力をオブジェクトBの入力に接続すると、オブジェクトAがオブジェクトBの になります。

Note

コンピュータグラフィックスの専門用語では、AをBの親にするをwe “parented” B to Aと言います。これは逆の意味に思えるかもしれませんが、そういうものだと思ってください。

他のオブジェクトに 親子化 されるオブジェクト(つまり、子)は、親のオブジェクトのトランスフォームを引き継ぎます。親を移動/回転すると、同様に子も移動/回転します。 例えば、特定のオブジェクトの視点でシーンを見たい場合は、カメラをPOVオブジェクトの子にします。すると、カメラ(子)はオブジェクト(親)のトランスフォームに追従します。

オブジェクトサブネットワーク(Tabメニュー使ってオブジェクトレベルにSubnetノードを作成します)内にオブジェクトを置くことが可能です。サブネットワーク内のオブジェクトすべては、サブネットの親のトランスフォームを引き継ぎます。

トランスフォームだけでなく、子はいくつかの他の情報を親オブジェクトから引き継ぎます。例えば、モーションブラーは親オブジェクトから引き継がれます。もし、レンダリングパラメータがオブジェクトで無効になっていれば、その情報も親オブジェクトから引き継がれます。

各オブジェクトには、親は1つのみ持つことができます。しかし、Blendオブジェクトによって、複数の親のトランスフォームをブレンドすることができます。

How to

To...Do this

ネットワークエディタでオブジェクトを親子化する

  • 親オブジェクトの出力を子のオブジェクトの入力に接続します。

3Dビューポートでオブジェクトを親子化する

  1. ビューアで子のオブジェクトを選択します。

  2. Modify シェルフのParentツールをクリックします。

  3. 親のオブジェクトを選択して、Enterを押します。

ネットワークエディタでオブジェクトの親子を解除する

3Dビューポートでオブジェクトの親子を解除する

  1. Modify シェルフタブで、Parentツールをクリックします。

  2. 子オブジェクトを選択して、Enterを押します。

  3. 何も選択しないで、Enterを押します。

位置の保持と子の補正

オブジェクトを親子化すると、そのトランスフォームは、親のトランスフォームを基準にします。 つまり、そのオブジェクトがシーン内で新しい位置/向きに飛躍します。 親を変更すると、その子の位置が影響を受け、子のトランスフォームの変更は、その親を基準とします。

Houdiniのプリファレンス( Edit ▸ Preferences ▸ Objects and Geometry )の以下の設定で、これらの挙動を変更することができます。

Keep Position When Parenting

オブジェクトを親子化した時に、Houdiniは自動的にそのトランスフォームを修正して、その古い位置と向きを維持します。

Child Compensation

親オブジェクトを移動させると、Houdiniは自動的にその子のトランスフォームを修正して、(その親に追従して移動せずに)その子の現在の位置を維持します。

オブジェクトの原点/ピボットの編集

すべてのトランスフォームはオブジェクトの ピボットポイント を基準にしています。オブジェクトはピボットポイントを基準にスケール、回転します。

To...Do this

ビューポートでオブジェクトのピボットポイントを設定する

  • Insまたは"を押すと、ピボットポイントを移動するハンドルが使えるようになり、再度Insまたは"を押すと、通常のハンドルに戻ります。

  • スケールや回転をするときに一時的にハンドルを移動させるには、'(アポストロフィー)を押します。再度'(アポストロフィー)を押すと通常のハンドルに戻ります。これは実際のピボットポイントを動かすわけではありません。

オブジェクトのピボットポイントを数値で設定する

  1. パラメータエディタTransform タブをクリックします。

  2. Pivot テキストフィールドを使ってピボットポイントの位置X,Y,Zをオブジェクトの原点から相対的に設定します。

オブジェクトのピボットポイントをそのオブジェクトの中心に移動させる

  1. オブジェクトを選択します。

  2. Modify シェルフタブの Move Pivot to Centerツールをクリックします。

オブジェクトの中心をそのピボットポイントに移動させる

  1. オブジェクトを選択します。

  2. Modify シェルフタブの Move Center to Pivotツールをクリックします。

プリトランスフォーム

プリトランスフォームは、各オブジェクト内にある目に見えない親のNullのようなものです。オブジェクトのパラメータの位置、回転、スケールの値は、プリトランスフォームの値(通常は隠れています)を基準とします。

プリトランスフォームは、特にキャラクタリグにおいて、“rest”や“zero”の状態にて、ある特定の位置、回転、スケールを設定するときに役に立ちます。それから、あなたが入力した数値はプリトランスフォームの値に比例します。

プリトランスフォームでは、トランスフォームの順番が 固定であり変更できません 。もし均一でないスケールをプリトランスフォームにコピーしようとすると、ずれてしまいます。

To...Do this

オブジェクトのプリトランスフォームの値を見る

ネットワークエディタのオブジェクトタイル上でを押します。

オブジェクトの現在のトランスフォームを“zero”の状態にする

  1. オブジェクトのパラメータで、 Transform タブをクリックします。

  2. Modify Pre-Transform ポップアップメニューから Clean Transform を選択します。

これは、オブジェクトの現在のトランスフォームをプリトランスフォームに移し、トランスフォームパラメータを“identity”(位置と回転 = 0、スケール = 1)にリセットします。

この反対のアクションは、 Extract Pre-transform (以下参照)です。

オブジェクトの現在の位置、回転、スケールのどれかを“zero”の状態にする

  1. オブジェクトのパラメータで、 Transform タブをクリックします。

  2. Modify Pre-Transform ポップアップメニューから Clean TranslatesClean RotatesClean Scales を選択します。

プリトランスフォームを削除する

  1. オブジェクトのパラメータで、 Transform タブをクリックします。

  2. Modify Pre-Transform ポップアップメニューから Reset Pre-transform を選択します。

Note

これは、おそらくオブジェクトの位置、回転、スケールを変更してしまいます。 なぜなら、パラメータの現在の値はもはやプリトランスフォームを基準としなくなるからです。

プリトランスフォームの値をパラメータに移す

  1. オブジェクトのパラメータで、 Transform タブをクリックします。

  2. Modify Pre-Transform ポップアップメニューから Extract Pre-transform を選択します。

これは、オブジェクトの現在のプリトランスフォームをパラメータに移動し、プリトランスフォームをリセットします。

この反対のアクションは、 Clean Transform (上記参照)です。

基本

はじめよう

次のステップ

カスタマイズ

導師レベル