コンポーネント選択は、特定のhou.Geometryに縛られていません。 そのため、それぞれのコンポーネントに関する情報を調べるためには、このクラスのほとんどのメソッドをGeometryオブジェクトに渡す必要があります。 この明示的な区別により、このSelectionクラスを、ジオメトリトポロジーを処理する(コンポーネントのセットを拡大させたり、縮小させたり、境界を見つけるなどの)ユーティリティクラスとして使用することができます。 この区別により、選択オブジェクトの内容を変更しても、ビューポート内のいくつかのジオメトリの選択の可視性を更新する必要がありません。 可視ビューポート選択の設定は、Houdiniが適切に変更を追跡できるように、hou.SopNodeに対して常に明示的な操作でなければなりません。
hou.Geometry.selection,hou.GeometrySelection.selections,hou.SopNode.selectionをコールして、選択オブジェクトが返された場合、
その選択を修正することができません。
まず最初にfreeze()
メソッドを使用して、選択のコピーを作成しなければなりません。
この新しい選択は、必要に応じて修正することができ、hou.SopNode.setSelectionに戻すことができます。
各SOPはコンポーネントタイプ毎に選択を持っているので、新しい選択を設定すると、そのコンポーネントタイプの既存選択を置換します。
ビューポートがそのコンポーネントタイプを選択するように現在設定されていない場合は、
これは結果としてビューポート内の可視選択が変更されません。
ビューポート選択タイプは、hou.SceneViewerクラスを使って制御することができます。
hou.Selection()
初期化メソッドをコールして作成された選択は、修正可能な状態で作成されるので、
freeze()
をコールする必要はありません。
hou.Geometryまたはhou.SopNodeから返された選択は、ソース選択を参照しているので、
ソースジオメトリの選択を変更すると、変わります。
これは、特定のジオメトリと選択オブジェクトを区別する差のように見えます。
しかし、SOPノードから返されるhou.Geometryクラスの挙動に一致します。
これは、大元の選択データがコピーではなくSOPと共有しているからです。
freeze()
メソッドを使用することで、選択データのコピーを強制的に特定のSOPから接続を解除することができます(選択内容を修正することもできます)。
メソッド ¶
__init__(selection_type)
この選択の一部になるコンポーネントのタイプを制御するために、selection_type
にhou.geometryType値のどれかを指定して、新しい空っぽのSelectionオブジェクトを作成します。
__init__(geo, selection_type, selection_string)
特定のGeometryオブジェクトに対して評価されるグループ文字列によって定義された初期内容を使って、新しいSelectionオブジェクトを作成します。
geo
選択文字列を評価する時に使用されるhou.Geometryオブジェクト。
selection_type
このSelectionに表示されるコンポーネントのタイプを意味するhou.geometryType値。
selection_string
選択に含めるコンポーネントを記述したSOP Groupパラメータに表示される文字列。 この文字列は、グループ名、数値範囲、アトリビュート値テストなどのSOPグループ解析でサポートされている特徴を含みます。
__init__(prims)
指定したhou.Primオブジェクトのシーケンスから、新しいプリミティブコンポーネント選択を作成します。
__init__(points)
指定したhou.Pointオブジェクトのシーケンスから、新しいポイントコンポーネント選択を作成します。
__init__(vertices)
指定したhou.Vertexオブジェクトのシーケンスから、新しい頂点コンポーネント選択を作成します。
__init__(edges)
指定したhou.Edgeオブジェクトのシーケンスから、新しいエッジコンポーネント選択を作成します。
freeze()
→ hou.Selection
Selectionオブジェクトのコピーを返します。このコピーは、選択を修正する関数を使って修正することができます。
invert(geo)
参照するhou.Geometryオブジェクトを指定して、その現行選択を反転させます。 この選択には、このメソッドをコールする前の選択に含まれていなかったコンポーネントだけを含めます。
convert(geo, selection_type, select_only_whole=False)
参照するhou.Geometryオブジェクトを指定して、その現行選択を新しいhou.geometryTypeに変換します。
select_only_whole
がTrueの場合、選択されているすべてのポイントを所有しているエッジまたはプリミティブのみが選択されます。
boundary(geo, uv_connectivity = False)
参照するhou.Geometryオブジェクトを指定して、現行選択の境界上のコンポーネントを含んだ選択に変更します。
uv_connectivity
パラメータは、繋がっているコンポーネントを判断するために、トポロジーまたはUVアトリビュート値のどれを使用するのか制御します。
grow(geo, uv_connectivity = False)
参照するhou.Geometryオブジェクトを指定して、現行選択と繋がっているコンポーネントを選択に追加します。
uv_connectivity
パラメータは、繋がっているコンポーネントを判断するために、トポロジーまたはUVアトリビュート値のどれを使用するのか制御します。
shrink(geo, uv_connectivity = False)
参照するhou.Geometryオブジェクトを指定して、現行選択の境界上のコンポーネントを選択から除去します。
uv_connectivity
パラメータは、繋がっているコンポーネントを判断するために、トポロジーまたはUVアトリビュート値のどれを使用するのか制御します。
combine(geo, selection, modifier)
参照するhou.Geometryオブジェクトを指定して、この選択と他の選択を組み合わせます。
geo
選択を変換した時に使用されるhou.Geometryオブジェクト。
selection
現行選択と組み合わせるhou.Selectionオブジェクト。 この選択に現行選択と同じコンポーネントタイプがなければ、その選択を組み合わせる前に、暗黙的に現行コンポーネントタイプに変換されます。
modifier
選択の結合方法を制御するhou.pickModifier。 これは、選択のペアに対して、和、積、他の演算を実行することができます。
clear()
現行選択からすべてのコンポーネントを除去します。
selectionType()
この選択で参照されているコンポーネントのタイプを意味するhou.geometryType値を返します。
numSelected()
選択内のコンポーネントの数を返します。
prims(geo)
→ tuple
of hou.Prim
選択内のすべてのプリミティブのタプルを返します。この選択にプリミティブが含まれていなければ、戻り値を生成するために暗黙的にプリミティブに変換されます。
points(geo)
→ tuple
of hou.Point
選択内のすべてのポイントのタプルを返します。この選択にポイントが含まれていなければ、戻り値を生成するために暗黙的にポイントに変換されます。
vertices(geo)
→ tuple
of hou.Vertex
選択内のすべての頂点のタプルを返します。この選択に頂点が含まれていなければ、戻り値を生成するために暗黙的に頂点に変換されます。
edges(geo)
→ tuple
of hou.Edge
選択内のすべてのエッジのタプルを返します。この選択にエッジが含まれていなければ、戻り値を生成するために暗黙的にエッジに変換されます。
selectionString(geo, force_numeric = False, collapse_where_possible = True, asterisk_to_select_all = False)
→ str
選択されるコンポーネントを指定した文字列を返します。この文字列の形式は、SOP Groupパラメータフィールドの使用に適しています。
geo
選択文字列(例えば、すべてのコンポーネントを選択するかどうかを決めます)を生成する時に使用されるhou.Geometryオブジェクト。
force_numeric
たとえ選択がグループやアトリビュートに基づいて選択が構築されていても、生成される文字列に強制的に数値範囲だけを含めるようにするなら、これをTrue
に設定します。
collapse_where_possible
選択順に関係なく、できるだけ数値範囲を折り畳むなら、これをTrue
に設定します。
例えば、ユーザがプリミティブ番号3,2,1の順で選択すると、その生成される選択文字列は、このパラメータに応じて、'3 2 1'または'1-3'のどちらかになります。
asterisk_to_select_all
指定したジオメトリ内のすべてのコンポーネントが選択に含まれていれば、このパラメータをFalse
に設定すると、その結果の値は空っぽの文字列になります。
これは、SOPノードのGroupパラメータにその結果の文字列を使用するのに適しています。
このパラメータをTrue
に設定すると、代わりにすべての選択は、'*'の値を返します。