On this page

概要

グループとは、ポイント/フェースの集合体に名前を付けたものです。

Group SOPはジオメトリのポイント/フェースを色々な基準に基づいて並べ替えてから、グループ化します。他のオペレータでも、副作用としてグループを作成します。

ポイントやプリミティブを操作するノードのほとんどには、ノードの効果を追加するオプションがあり、入力としてグループしか対応していないものがあります。そのため、ある特性に基づいてポイントのグループを認識して、それをノードに適用します。

ポイントが削除されても、Houdiniは自動的にそのポイントのグループからポイントを除去します。

順番通りのグループと不規則なグループ

ポイントグループは、 順番通り または 不規則 に並べることができます。不規則なグループは、ポイントを作成順に記録し、順番通りのグループは、ポイントを選択順に記録します。

ビューアペインでポイントを選択するとき、シングルクリックで選択すると、順番通りの選択になります。一方、マウスドラッグで囲んで選択すると、不規則なグループになります。

To...Do this

ポイント/プリミティブのグループを作成する

  1. 選択タイプをポイント( Select ▸ Selection Type ▸ Points を選択するか、2を押します)/プリミティブ( Select ▸ Selection Type ▸ Primitives を選択するか、4を押します)に設定します。

  2. ビュアーで、タブメニューからGroupを選択します。

  3. 新しいグループにしたいポイント/プリミティブを選択して、クリックで選択を確定します。

  4. パラメータエディタの Create タブの Group Name フィールドで新しいグループの名前を付けます。

既存のグループを使ってポイント/プリミティブを選択して、新しいグループを作成する

  1. Groupノードを選択します。

  2. オペレーションコントロールツールバーで、ポップアップメニューから既存のグループ名を選択します。

  3. ツールバーのボタンを使って、ポップアップメニューで選択したグループに基づいて選択された現行選択を変更します。

グループの結合とフィルタリング

Groupノードのパラメータエディタの Combine タブから既存グループと組み合わせて新しいグループを作成します。

  1. Groupノードを作成します。どのコンポーネントもグループ化しておく必要はありません。

  2. パラメータエディタの Combine タブをクリックします。

  3. Groupフィールドの左側のテキストボックスに新しいグループの名前を入力します。

  4. 続いて、右側のテキストボックスには、コンポーネントを取得するグループの名前を入力("="ボタンがオンの場合は、左側のグループは、右側のグループの内容を引き継ぐことを意味します。また"≠"ボタンがオンの場合は、右側のグループの内容を反転して引き継ぐことを意味します)

    一度、最初の行を設定すると、追加で新しい行が利用できるようになるので、さらに別の結合/フィルタリングを行なうことができます。

  5. 追加した行では、右側には結合/フィルタリングしたいグループ名を入力します。

  6. 左側には、どのようにグループを結合/フィルタリングしたいのか指定します。

グループの構文

ほとんどのジオメトリオペレータ(SOP)は、特定のポイント/プリミティブのサブセットに対して機能します。ビューアでオペレータを使う時は、必要なポイント/プリミティブを選択します。パラメータエディタでは、このポイント/プリミティブのリストを、以下のパターンによって Group パラメータに指定します。

複数パターンは、スペースで区切って定義します。そして、各パターンにマッチしたものが結合されて、グループが作成されます。

パターン

意味

*

ポイント、プリミティブ、頂点、エッジすべて。どの要素にもマッチさせたくないのであれば、!*を使用してください。

?*

名前の付いたグループのどの要素にもマッチします。

n

コンポーネント番号n

group_name

Group SOP以外のSOPでは、名前の付いたPoint/Primitiveグループ(Group SOPで作成)を指定することができます。

グループ名にはパターンマッチング(*, ?, and [ ])を使用することができます。 例えばarm*は、グループ名がarmで始まるすべてのPoint/Primitiveグループを含みます。 パターンを{ }で閉じることで、そのパターンに^を使用することができます。 例えば{arm* ^arm3*}は、arm3を除くグループ名がarmで始まるすべてのグループを含みます。

n-m

コンポーネント番号nからmまで(nmを含む)。

n-m:step

step毎にスキップされたコンポーネント番号nからmまで(nを含む)。例えば、1-100:2は、1から100までを1つ飛ばしすることを意味するので、1,3,5,7,9,11,13,15・・・93,95,97,99となります。

n-m:keep,step

コンポーネント番号nからmまでをステップ値stepで定義したもので、さらに、それに該当する番号から連番でkeepの分(該当番号を含めた個数)だけ番号を確保します。例えば、0-20:3,5は、0から20の数字から5ステップの0,5,10,15,20で、さらに、連番をとるので、0,1,2,5,6,7,10,11,12,15,16,17,20となります。

!pattern

パターンにマッチするもの以外のポイント/プリミティブ。例えば、!1-10は、ポイント/プリミティブ番号が1から10以外のものを意味します。

patternには、数値パターン、アトリビュートパターン、グループ名パターンを指定することができます。

^pattern

前のパターンの結果からそのパターンを引いたもの。例えば、0-100:2 ^10-20は、0から100の1つ飛ばしの番号で、10から20までの番号を除いたものです。

patternには、数値パターン、アトリビュートパターン、グループ名パターンを指定することができます。

@attributeopvalue

attributevalueop(===!=><>=<=)でマッチしたコンポーネント。

例えば、@v>0は、Pointアトリビュートのv0よりも大きいポイントすべてをグループにします。

アトリビュート名の後に[index]を付けることで、その成分を指定できます。例えば、@Cd[2]は、拡散反射カラーアトリビュー(Cd)の青チャンネルを取得します。便利な使い方として、 [0][1][2]の代わりに.x/.y/.z.u/.v/.w.r/.g/.bを使うこともできます。ポジションアトリビュート(P)のX座標成分は、P.xで取得することができます(アトリビュート名[index]のような複数の成分を持つアトリビュートをアトリビュート名だけを指定した場合、最初の成分が使われます)。

例えば、@P.y>0はポイントのY成分が0よりも大きいポイントすべてがグループ化されます。

文字列アトリビュートに関してはvalueが空白を含んでいるなら、クォーテーションマークで囲わなければなりません。例えば、@myattr="foo bar"です。

文字列アトリビュートでop===!=を使う時は、valueにワイルドカード(*?)を使うことができます。

アトリビュートの構文と範囲の構文を組み合わせることができます:

@id=5-10

整数パターンを持つアトリビュートの構文を使うこともできますが、引用符でパターンを閉じる必要があります:

@id="5 8 10 15"

@id="0-4 78"

これを使用することで、Intrinsicアトリビュートを比較することもできます:

@intrinsic:indexorder<100

@attribute=val,val,...

指定したアトリビュートの中で、リストの値のどれかを含んだコンポーネント。 例:

@id=1,2,90,120

文字列アトリビュートに関しては、スペースを含んだ値はダブルクォーテーションで閉じなければなりません。例:

@path=/foo/*,/bar,"some string"

ジオメトリ

学ぼう

モデリング

地形

粉砕

ダイナミクスのRBD Fracturingを参照してください。

次のステップ

導師レベル