| On this page |
大規模で複雑なシーンでは、特定のプリミティブやオブジェクトグループを単独表示させることが難しい場合が多いです。 この限界を克服するために、Scene Graph Treeで、いわゆるExpansion State(展開状態)を定義することができます。 この展開状態によって、シーン内の要素の可視性を正確に制御することができます。 例えば、ポリゴンの多い部分を境界ボックスだけで表示したり、シーンの特定の部分を完全に不可視にすることができます。 展開状態は、簡単で直感的な方法でこれを行なうことができます。 また、重要な状態を保存して、いつでも復元することもできます。
Note
Scene Graph Treeの展開状態は、境界ボックスに対応しています。 この表示モードは、ペイロードだけでなく、 あらゆる コンポジションアークで動作します。
サンプルシーン ¶
以下の説明は、Pixarの無償のKitchen Set USDシーンに基づいています。 このサンプルシーンは公式のUniversal Scene Descriptionから直接ダウンロードすることができます。 OK でエンドユーザライセンス契約(EULA)に合意すると、2.6MBのZIPファイルが直接ダウンロードされます。 そのZIPファイルを任意のディレクトリに解凍し、Houdiniを起動します。
Note
この章でのすべてのUI関連の説明は、Houdiniの Solaris デスクトップに基づいています。 このデスクトップを適用するには、メインメニューバーに進み、最初のドロップダウンメニュー(デフォルトでは Build に設定されています)を開き、 Solaris または Solaris LookDev を選択します。
Houdiniで、File LOPを作成します。 このノードは、キッチンファイルを Sublayer または Reference のどちらで読み込むのか尋ねてきます。 この例では、コンポジションアークは関係ないので、 Sublayer を選択して進みます。
Houdiniでは、デフォルトの軸セットアップはYを高さ軸として使用します。 これが原因でキッチンが横に向いて表示されます。 これを修正するには、メインメニューに進んで、 Edit ▸ Preferences をクリックします。 そのメニューから、 3D Viewports を選択します。
パネルで Orientation を Z Up に変更します。 Accept をクリックすると、キッチンの向きが即座に変わります。
Scene Graph Tree ¶
Scene Graph Treeの一番上にあるアイコンバーを見ると、ボタンがあります。
このボタンをクリックすると、コンテキストメニューが開きます。
このコンテキストメニューは、ビューポートの右側にあるディスプレイツールバーの
Object type visibility ボタンからでもアクセスすることができます。
このメニューのデフォルトは、 Do Nothing で、シーンは、あなたが思っているように表示されて動作します。
Bounding Box Draw Mode ¶
コンテキストメニューから Bounding Box Draw Mode を選択します。 キッチンの代わりに1個のボックスだけが表示されます。 Bounding Box Draw Modeは、少なくともオブジェクトの配置場所を確認できることから、通常では Visibility モードよりも情報が多いです。 しかしながら、ビューポート内でシーンをレンダリングする場合、その境界ボックスはどのレンダーデリゲートでも動作するわけではありません。 例えば、Karmaは、完全なシーンセットアップを常に表示します。 しかし、呼応する Visibility 状態は、Karmaによって考慮されます。
Note
技術的には、この境界ボックス状態は、USD描画モードを変更しています。 これは Draw Mode 機能の Bounding Box オプションで以前からできていたことです。 しかし、新しいシステムはより快適です。
Draw Mode 項目を表示するには、Scene Graph Treeに移動します。
そこで、アイコンをクリックして、 Draw Mode チェックボックスをオンにします。
Scene Graph TreeのKitchen_setエントリを展開すると、Kindがcomponentになっているプリミティブに到達するまで境界ボックスが増えていきます。
そして、そのコンポーネントのみが実際のオブジェクトとして描画されます。
Visibility ¶
Visibility モードは、 Bounding Box Draw Mode と同じように動作します。 現在の展開状態を維持したまま、境界ボックスから可視に、またはその逆に切り替えることもできます。
上記の画像では、DiningTable_grpのコンポーネントが表示されています。
Visibility をオンにすると、上位グループのボックスが消えます。
そして、椅子とキッチンテーブルだけが表示されるようになりました:
TableTop_grpも存在しますが、Kindがcomponentでないので見えません。
しかし、このグループを展開すると、そのコンポーネントもビューポートに表示されます。
状態の項目 ¶
Scene Graph Treeの展開/折り畳みは、いくつかのオブジェクトのVisibility/Bound Box状態を制御したい場合には確かに迅速で確実な方法です。
裏を返せば、実際には見たくないオブジェクトがたくさんあるということです。
この解決策は、Scene Graph Treeの菱形のアイコンがある項目にあります。
この項目は、“スナップショット”と同様に、Scene Graph Treeが特定の状態にあるかのように展開効果をロックすることができます。
アイコン ¶
アイコンは重要な役割を果たし、現在の展開状態に応じてその形状を変えます。 以下のテーブルには、すべてのアイコンとその意味を載せています:
| アイコン | 説明 | |
|---|---|---|
| 1 |
|
1つ以上の 子孫 ブランチがロック状態であることを示しています。 |
| 2 |
|
このロックされたブランチが非表示または折り畳まれている場合でも、あたかも展開されているかのように動作します。 |
| 3 |
|
このロックされたブランチが展開されていても、あたかも折り畳まれているかのように動作します。 |
| 4 |
|
ブランチはロック解除されています。 |
| 5 |
|
プリミティブの 先祖 がロックされていることを示しています。プリミティブは、あたかも折り畳まれているかのように動作します(以下の技術情報を参照)。 |
| 6 |
|
プリミティブの 先祖 がロックされていることを示しています。プリミティブは、あたかも折り畳まれているかのように動作します(以下の技術情報を参照)。 |
技術系情報アイコンの5と6
これらの場合、 先祖 のロック状態がツリー内の展開状態を上書きするため、このアイコンを持つプリミティブの実際の展開は無視されます。 上記のテーブルのアイコン #5 と #6 、アイコン #2 と #3 の違いは、“ロック”が実際にどこに適用されたか、つまり、このプリミティブ自体に適用されたか、それとも、祖先プリミティブに適用されたかという点です。 この違いは、ロック状態をクリアするためにクリックする必要のある場所に影響します。
ロック状態 ¶
Bounding Box Draw Mode の基本的な例から始めましょう。
Props_grpブランチからDiningTable_grpグループを開きます。
椅子とテーブルのコンポーネントが表示され、その他のアイテムはボックスとして表示されています。
これは、上記の説明から予想されるとおりです。
次に、DiningTable_grpグループのアイコンを
クリックします。
いくつかのアイコンの状態が変わったことに気づくことでしょう。
ブランチを折り畳むと、テーブルと椅子のロック状態は維持されます。
この項目で押したボタン/アイコンによって、その影響を受けたアイテムがあたかも展開されているかのように表示されます。
-
Kitchen_setとProps_grpの新しいアイコンは、これらのブランチに少なくとも1つのロックされた展開状態が含まれていることを示しています。
-
DiningTable_grp自体にのアイコンがあり、これがロックされた状態のグループであることを示しています。
ロックされた状態を解決するには、再びを
クリックします。
椅子とテーブルは、シーンの他の部分と同様に境界ボックスとして表示されます。
Shiftクリックした状態 ¶
菱形のアイコンは、さらに多くの機能を備えており、グループ全体またはシーン全体の可視性を制御することができる⇧ Shiftクリックアクションにも対応しています。
再びDiningTable_grpを使用してみましょう。
ブランチを展開することで、オブジェクトをシェーディングアイテムとして表示することができます。
ブランチを折り畳むと、そのアイテムは再び境界ボックスとして表示されます。
⇧ Shiftクリックは、Scene Graph Treeの右クリックメニューの Expand to Components と基本的に同じです。
次に、DiningTable_grpグループのアイコンを⇧ Shift +
クリックします。
アイコンとビューポートは、
クリックと全く同じに見えますが、根本的な違いがあります:
-
1回の
クリックでは、3つのコンポーネントの状態をロックするだけです。
-
しかし、⇧ Shift +
クリックは、
TableTop_grpにも影響し、テーブル上にさらにいくつかのアイテムを表示します。一般的に、この操作はツリーをコンポーネントまで展開し、それをロックします。
もう一回クリックすることで、状態をロック解除することもできます。
この場合、すべてのアイテムは以前のように境界ボックスとして表示されます。
空っぽだったテーブル上にTableTop_grpのボウルや他のオブジェクトが表示されました。
Ctrlクリックした状態 ¶
状態項目のツールチップを読んだことがある方は、⌃ Ctrl + クリックオプションで、ブランチを完全に隠すことができることをご存知でしょう。
このアクションの効果を確認するには、モードを Visibility に設定します。
これでキッチンは見えなくなり、すべてのブランチの展開状態が
になるはずです。
Tip
まだキッチンの一部が見える場合は、Arch_grpとProps_grpが折り畳まれていることを確認してください。
-
キッチンが見えるようにするには、
kitchen_setグループのアイコンを⇧ Shift +クリックします。
-
Props_geoを展開し、DiningTable_grpの状態アイコンを⌃ Ctrl +クリックします。 そのアイコンが
に変わり、テーブルグループのすべてのアイテムが非表示になります。 ツリーを折り畳むと、テーブルとそのパーツは非表示のままになります。
コンポーネントの状態 ¶
ここまでは、最終的に関連するコンポーネントに影響を与えるグループのみを見てきました。 もちろん、コンポーネント自体の展開状態や可視性を変更することもできます。 デフォルトでは、コンポーネントは展開されると表示されます。
DiningTable_grpをもう一度見てみましょう。
1回のクリックでロックでき、
TableTop_grpを含むすべてのアイテムがあたかも展開されているかのように表示されます。
次に、TableTop_grpだけを見たいのですが、椅子とテーブルのコンポーネントは境界ボックスとして描画されているはずです。
⌃ Ctrlクリックの“ショートカット”がこれを可能にします。
-
3つのコンポーネントを選択し、それぞれの菱形のアイコンを⌃ Ctrl +
クリックします。 これでブランチは折り畳まれたものとして扱われ、コンポーネントが露出していても境界ボックスを描画できるようになります。
役立つ情報 ¶
複雑なシーンでは、ビューポートに表示されるのに非常に時間がかかるため、特定のパーツの表示を避けたい場合があります。
このような場合、⌃ Ctrl + クリックでトップレベル(ここでは、
Kitchen_set)をロックするのが効果的です。
これによって、コンポーネントを含むすべてのブランチが非表示になります:
そうすれば、ブランチを見て回り、作業したいプリミティブだけを表示させることができます。 残りは不可視のままか、境界ボックスとして描画されます。
展開状態の保存 ¶
Expansion Statesドロップダウンメニューで、展開状態を保存、復元することができます。
-
展開状態を定義します。
-
ボタンをクリックします。
-
ドロップダウンメニューから Save tree expansion… を選択します。
-
新しいパネルの入力フィールドに名前または簡単な説明を入力して、 OK をクリックします。
保存した状態は、 Saved Expansion States の下にあるドロップダウンメニューにも表示され、独自のコンテキストメニューが用意されます。 このメニューから、その保存した情報を Load または Delete することができます。 もう1つの機能は、その保存した状態をシーンの現在の状態で上書きすることです。 これを行なうには、 Replace With Current State を選択します。