On this page |
概要 ¶
オブジェクトはシーンでトップレベルの階層に位置する物体を表現したものです。オブジェクトにはワールド空間の位置、回転、スケールの情報をもっています。オブジェクトの例を以下に示します:
ジオメトリコンテナとサーフェスノード ¶
Houdiniのモデルは、シーンレベルのジオメトリオブジェクトで表現されます。ジオメトリコンテナオブジェクト内部で
ジオメトリノードがオブジェクトのジオメトリを定義します。ジオメトリコンテナオブジェクトでは、オブジェクト内部の個々のサーフェスとは別に、移動、回転、スケール、オブジェクト全体をシェーディングすることができます。
シェルフツールを使うと、Houdiniはジオメトリコンテナを作成し、その内部にサーフェスノードを作成します。例えば、シェルフの Sphere ツールをクリックすると、新しくobject_sphere1
の名前のコンテナと、その内部にsphere1
の名前のSphere SOPが作成されます。
オブジェクトコンテナとサーフェスノードには、それぞれ独自のパラメータがあります。場合によっては機能的にパラメータが重複しているように見えます。Sphereノードの Center パラメータは、球の位置を設定し、コンテナオブジェクトの Translate パラメータと同じです。同様にコンテナオブジェクトの Scale パラメータはオブジェクトのサイズを設定しますが、Sphereノードの Radius パラメータも球のサイズを設定します。
コンテナオブジェクトとサーフェスノード間の移動 ¶
Houdiniにはジオメトリコンテナとサーフェスノード間を行き来する方法がいくつか用意しています。
選択モード
オペレーションコントロールツールバーのジャンプアイコン
シーンレベルでジオメトリコンテナを選択すると、オペレーションコントロールツールバー(ビューアの上部)がコンテナ内のジオメトリネットワーク内の最後のサーフェスノード(技術的に、ディスプレイフラグ付きのサーフェスノード)のコントロールを表示します。
ツールバーのジャンプボタンをクリックするとコンテナ内部のジオメトリレベルにジャンプすることができます。
オブジェクトの“Jump to”コンテキストメニュー
ビューアのジオメトリオブジェクトをクリックし、コンテキストメニューから Jump to サブメニューを開きます。このメニューにはオブジェクトに関係するノードのリストが表示されます。 Contained geometry を選択すると
ディスプレイフラグ付きのサーフェスノードにジャンプします。
ネットワークエディタ内
ネットワークエディタ内で、 ジオメトリコンテナノードをダブルクリックすると中に入ることができます。また、ノードを選択してIやEnterを押すことでも可能です。または、ノード上で
クリックして 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ビューポートでオブジェクトを親子化する |
|
ネットワークエディタでオブジェクトの親子を解除する |
|
3Dビューポートでオブジェクトの親子を解除する |
|
位置の保持と子の補正 ¶
オブジェクトを親子化すると、そのトランスフォームは、親のトランスフォームを基準にします。 つまり、そのオブジェクトがシーン内で新しい位置/向きに飛躍します。 それ以降は、親を変更すると、その子の位置が影響を受け、子のトランスフォームの変更は、その親を基準とします。
それらの挙動を変更するための設定が2つあります。
Keep Position When Parenting
これをオンにすると、オブジェクトを親子化した時に、Houdiniは、自動的にそのトランスフォームを修正して、その古い位置と向きを維持します。
Child Compensation
これをオンにして、親オブジェクトを移動させると、Houdiniは、自動的にその子のトランスフォームを修正して、(その親に追従して移動せずに)その子の位置を維持します。
個々のオブジェクトに両方の設定を変更したり、メインのプリファレンスの“Objects and Geometry”のページで全体的にそれらの設定をオン/オフすることができます。
オブジェクトの原点/ピボットの編集 ¶
すべてのトランスフォームはオブジェクトの ピボットポイント を基準にしています。オブジェクトはピボットポイントを基準にスケール、回転します。
To... | Do this |
---|---|
ビューポートでオブジェクトのピボットポイントを設定する |
|
オブジェクトのピボットポイントを数値で設定する |
|
オブジェクトのピボットポイントをセンターにする |
|
オブジェクトの中心をそのピボットポイントに移動させる |
|
プリトランスフォーム ¶
プリトランスフォームは、各オブジェクト内にある目に見えない親の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 (上記参照)です。 |