On this page |
概要 ¶
オブジェクトはシーンでトップレベルの階層に位置する物体を表現したものです。 オブジェクトにはワールド空間の位置、回転、スケールの情報をもっています。
ジオメトリコンテナとサーフェスノード ¶
Houdiniのモデルは、シーンレベルのジオメトリオブジェクトで表現されます。ジオメトリコンテナオブジェクト内部でジオメトリ(サーフェス)ノードがオブジェクトのジオメトリを定義します。ジオメトリコンテナオブジェクトでは、オブジェクト内部の個々のサーフェスとは別に、移動、回転、スケール、オブジェクト全体をシェーディングすることができます。
シェルフツールを使うと、Houdiniはジオメトリコンテナオブジェクトを作成し、その内部にサーフェスノードを作成します。例えば、シェルフの Sphere ツールをクリックすると、新しくobject_sphere1
の名前のジオメトリコンテナオブジェクトと、その内部にsphere1
の名前のSphere SOPが作成されます。
コンテナオブジェクトとその中のサーフェスノードには、それぞれ独自のパラメータがあります。場合によっては機能的にパラメータが重複しているように見えます。例えば、コンテナオブジェクトの中にSphereノードが1つあるとします:
-
Sphereノードの Center パラメータは、球の位置を設定します。これは、オブジェクト全体を移動させるコンテナオブジェクトの Translate パラメータと同じ効果です。
-
Sphereノードの Radius パラメータは、コンテナオブジェクト内の球のサイズを設定するのに対して、コンテナオブジェクトの Scale パラメータはオブジェクト全体のサイズを設定します。
コンテナオブジェクトとサーフェスノード間の移動 ¶
Houdiniにはジオメトリコンテナとサーフェスノード間を行き来する方法がいくつか用意しています。
選択モード
オペレーションコントロールツールバーのジャンプアイコン
シーンレベルでジオメトリコンテナを選択すると、オペレーションコントロールツールバー(ビューアの上部)はそのジオメトリコンテナ内のディスプレイフラグが付いたサーフェスノードのコントロールを表示します。
ツールバーのジャンプボタンをクリックするとコンテナ内部のジオメトリレベルにジャンプすることができます。
パスガジェット
ペインのパスガジェットにあるobj
をクリックすると、シーン(オブジェクト)レベルに戻ることができます。
ネットワークエディタ内
ネットワークエディタ内でジオメトリコンテナノードをダブルクリックすると中に入ることができます。また、ノードを選択してIやEnterを押すことでも可能です。または、ノードをクリックして 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ビューポートでオブジェクトを親子化する |
|
ネットワークエディタでオブジェクトの親子を解除する |
|
3Dビューポートでオブジェクトの親子を解除する |
|
位置の保持と子の補正 ¶
オブジェクトを親子化すると、そのトランスフォームは、親のトランスフォームを基準にします。 つまり、そのオブジェクトがシーン内で新しい位置/向きに飛躍します。 親を変更すると、その子の位置が影響を受け、子のトランスフォームの変更は、その親を基準とします。
Houdiniのプリファレンス( Edit ▸ Preferences ▸ Objects and Geometry )の以下の設定で、これらの挙動を変更することができます。
Keep Position When Parenting
オブジェクトを親子化した時に、Houdiniは自動的にそのトランスフォームを修正して、その古い位置と向きを維持します。
Child Compensation
親オブジェクトを移動させると、Houdiniは自動的にその子のトランスフォームを修正して、(その親に追従して移動せずに)その子の現在の位置を維持します。
オブジェクトの原点/ピボットの編集 ¶
すべてのトランスフォームはオブジェクトの ピボットポイント を基準にしています。オブジェクトはピボットポイントを基準にスケール、回転します。
To... | Do this |
---|---|
ビューポートでオブジェクトのピボットポイントを設定する |
|
オブジェクトのピボットポイントを数値で設定する |
|
オブジェクトのピボットポイントをそのオブジェクトの中心に移動させる |
|
オブジェクトの中心をそのピボットポイントに移動させる |
|
プリトランスフォーム ¶
プリトランスフォームは、各オブジェクト内にある目に見えない親のNullのようなものです。オブジェクトのパラメータの位置、回転、スケールの値は、プリトランスフォームの値(通常は隠れています)を基準とします。
プリトランスフォームは、特にキャラクタリグにおいて、“rest”や“zero”の状態にて、ある特定の位置、回転、スケールを設定するときに役に立ちます。それから、あなたが入力した数値はプリトランスフォームの値に比例します。
プリトランスフォームでは、トランスフォームの順番が 固定であり変更できません 。もし均一でないスケールをプリトランスフォームにコピーしようとすると、ずれてしまいます。
To... | Do this |
---|---|
オブジェクトのプリトランスフォームの値を見る |
ネットワークエディタのオブジェクトタイル上でを押します。 |
オブジェクトの現在のトランスフォームを“zero”の状態にする |
これは、オブジェクトの現在のトランスフォームをプリトランスフォームに移し、トランスフォームパラメータを“identity”(位置と回転 = 0、スケール = 1)にリセットします。 この反対のアクションは、 Extract Pre-transform (以下参照)です。 |
オブジェクトの現在の位置、回転、スケールのどれかを“zero”の状態にする |
|
プリトランスフォームを削除する |
Note これは、おそらくオブジェクトの位置、回転、スケールを変更してしまいます。 なぜなら、パラメータの現在の値はもはやプリトランスフォームを基準としなくなるからです。 |
プリトランスフォームの値をパラメータに移す |
これは、オブジェクトの現在のプリトランスフォームをパラメータに移動し、プリトランスフォームをリセットします。 この反対のアクションは、 Clean Transform (上記参照)です。 |