Houdini 19.5 基本

オブジェクト

どのようにオブジェクト、ジオメトリコンテナ、サーフェスノードがHoudiniで動いているのか説明します。

On this page

概要

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

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

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

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

オブジェクトコンテナとサーフェスノードには、それぞれ独自のパラメータがあります。場合によっては機能的にパラメータが重複しているように見えます。Sphereノードの Center パラメータは、球の位置を設定し、コンテナオブジェクトの Translate パラメータと同じです。同様にコンテナオブジェクトの Scale パラメータはオブジェクトのサイズを設定しますが、Sphereノードの Radius パラメータも球のサイズを設定します。

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

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

選択モード

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

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

シーンレベルでジオメトリコンテナを選択すると、オペレーションコントロールツールバー(ビューアの上部)がコンテナ内のジオメトリネットワーク内の最後のサーフェスノード(技術的に、ディスプレイフラグ付きのサーフェスノード)のコントロールを表示します。

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

オブジェクトの“Jump to”コンテキストメニュー

ビューアのジオメトリオブジェクトをクリックし、コンテキストメニューから Jump to サブメニューを開きます。このメニューにはオブジェクトに関係するノードのリストが表示されます。 Contained geometry を選択するとディスプレイフラグ付きのサーフェスノードにジャンプします。

ネットワークエディタ内

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

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

パスガジェット

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

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

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

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

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

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

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

親子化

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

オブジェクトAの出力をオブジェクトBの入力に接続すると、オブジェクトAがオブジェクトBの になります。例えば、特定のオブジェクトの視点でシーンを見たい場合は、カメラをPOVオブジェクトの子にします。すると、カメラはオブジェクトのトランスフォームに追従します。

Note

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

他のオブジェクトに親子化されるオブジェクト(つまり、子)は、親のオブジェクトのトランスフォームを引き継ぎます。親を移動/回転すると、同様に子も移動/回転します。

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

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

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

How to

To...Do this

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

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

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

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

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

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

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

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

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

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

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

位置の保持と子の補正

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

それらの挙動を変更するための設定が2つあります。

Keep Position When Parenting

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

Child Compensation

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

個々のオブジェクトに両方の設定を変更したり、メインのプリファレンスの“Objects and Geometry”のページで全体的にそれらの設定をオン/オフすることができます。

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

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

To...Do this

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

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

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

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

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

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

オブジェクトのピボットポイントをセンターにする

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

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

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

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

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

プリトランスフォーム

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

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

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

To...Do this

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

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

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

オブジェクトのパラメータで、 Transform タブをクリックして、 Pre-transform ▸ Clean transforms を選択します。

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

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

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

オブジェクトのパラメータで、 Transform タブをクリックして、 Pre-transform ポップアップメニューを開き、 Clean translates, Clean rotates, Clean scales を選択します。

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

オブジェクトのパラメータで、 Transform タブをクリックして、 Pre-transform ▸ Reset pretransform を選択します。

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

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

オブジェクトのパラメータで、 Transform タブをクリックして、 Pretransform ▸ Extract pretransform を選択します。

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

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

基本

はじめよう

次のステップ

カスタマイズ

導師レベル