Houdini 18 SOP No.24 “Sweep:2.0 SOP”


~“Sweep:2.0 SOP”~

前回に引き続きHoudini18.0のSOPノードの解説を行います。
今回のノードは新しく追加されたものではなく、機能が追加されたノードになります。
前回の記事をご覧になられていない方はこちらからご覧ください。

※本記事ではHoudini 18.0.460を使用しています。

今回はSweep:2.0 SOPについて説明していきます。

 

Sweep:2.0 SOP

このノードは、Houdini 18.0にアップデートされた際に非常に大きな機能変更がありました。
非常に大きい変更点として入力するスウィープを行うための元の形となるジオメトリ(以降は断面ジオメトリとする)を必要とせずに、カーブのみで円や四角といったような形状を押し出すことが可能になり、ノード内でUVを扱うことができるようになりました。
また、従来のHoudini 17.5までのSweep SOPと入力が変わっていたりと多くの変更が加えられました。

では詳しく説明していきます。

まず初めに従来同様に他のジオメトリ断面を利用したSweep SOPの基本的な使い方を説明していきます。

今回は下の画像のようなポリゴンのサークルを用いてスウィープを行います。

このジオメトリを下の画像のようなカーブを参照してスウィープさせます。

Sweep SOPを作成し、第一入力に作成したカーブ、第二入力に断面ジオメトリを入力します。

そうすることにより、下の画像のようにカーブを参照したスウィープを行うことができます。

以上が従来同様の簡単な使い方になります。

 

次にHoudini17.5とHoudini18.0の変更点を説明していきます。

まず初めに非常に重要な変更点としてノードのインプットについて説明します。

下の画像が各バージョンのノードを比較したものとなります。

このように入力が3つから2つに変更されました。
また、Houdini17.5 では
 第一入力:断面ジオメトリ
 第二入力:参照するカーブ
でしたが、Houdini18.0では
 第一入力:参照するカーブ
 第二入力:断面ジオメトリ
となり入力が逆になっているので注意が必要です。

では次にパラメータについて説明します。

このようにパラメータが非常に大きく変更されました。

パラメータには共通部分もありますがそのほとんどが変更され新しいものとなっています。下の画像の赤く囲われた部分が引き継がれたパラメータになります。

上側の赤く囲われたグループを指定するパラメータは使用方法は変わりませんが、名前が変更されています。

「Path Group」→「Backbone Curve Group」
  指定したグループが参照するカーブとなります。
  (何も指定していない場合は第一入力のカーブ全てを参照します。)
「X-Section Group」→「Cross Section Group」
  指定したグループを断面ジオメトリとして使用します。
  (何も指定していない場合は第二入力の全てのジオメトリを使用します。)

また、下側にあるパラメータはサイズの変更、回転を行うことが可能なパラメータとなります。

このように名前の変更が行われていますが、機能が変わらず引き継がれているパラメータがあります。

 

それではそのほかのパラメータの説明を行います。

まずは、「Surface」タブについて説明します。
このタブではスウィープを行う際のジオメトリの形状の調整を行うことができます。

まず初めにこの赤く囲われている「Surface Shape」はスウィープを行う断面ジオメトリの種類を設定することができます。その下の「Surface Type」はジオメトリを出力する際の種類を設定することができます。

「Surface Shape」
 「Second Input Cross Sections」
  第二入力の断面ジオメトリを利用してスウィープを行います。
 「Round Tube」
  円形の断面ジオメトリを使用してスウィープを行います。
 「Square Tube」
  四角形の断面ジオメトリを使用してスウィープを行います。
 「Ribbon」
  直線の断面ジオメトリを使用してスウィープを行います。

各設定でのアウトプットの例が下の画像になります。

この項目の中で第二入力の断面ジオメトリを参照する設定は「Second Input Cross Sections」のみとなります。それ以外を選択した場合は断面ジオメトリを参照せずにこのノードを使うことができます。つまり、「Second Input Cross Sections」以外を選択している場合は第二入力に何もつながなくてもスウィープを行うことができます。

「Surface Type」は「Revolve SOP」と同様にアウトプットを変更することができます。

下の画像が実際にアウトプットした際の結果になります。

 

この下の赤く囲われたパラメータにあるトグルではポリゴンの表裏の入れ替え、カーブを設定した際に作成されたポイントであるカーブが曲がる部分(カーブの角)に対応する部分のサイズの肥大化を避けることができます。

上側の「Reverse Cross Sections」を有効にすることでポリゴンの向きを反転させることができます。

その下の「Stretch Around Turns」では下の画像のようにカーブの曲がり角が肥大化するのを避けることができます。

また、このサイズは「Max Stretch」によってサイズを変更することができます。

 

下の画像の赤く囲われている部分はスウィープを行った際の端を閉じることができます。

「End Cap Type」を変更することによってポリゴンの端を閉じることができます。
(デフォルトでは「None」になっているのでポリゴンの端は閉じられません)
このプルダウンは
「None」
 端は閉じられません。
「Single Polygon」
 単一ポリゴンで端を閉じます。
「Grid」
 ドーム状のポリゴンで端を閉じます。
「Side Single Polygon」
 入力されたエッジが開いている際は作成されるサーフェスの側面が閉じられません。

各設定の結果は下の画像のようになります。

このように、ジオメトリの端の面をを閉じることができます。

 

下の画像の赤色で囲われた部分ではスウィープを行った際のジオメトリの太さをランプパラメータによって調整することができます。

「Apply Scale Along Curve」を有効にすることによってランプパラメータでサイズを調整することができます。

下の画像はランプパラメータを変更した結果となります。

このようにランプパラメータを変更することによって太さを変更することができます。

 

この赤く囲われているパラメータはスウィープされたジオメトリに対して回転などを加えることができます。

この仕様は「Copy to Curves SOP」と同じで、
 Rall:接線方向を軸とした回転
 Yaw:Upベクトルを軸とした回転
 Pitch:法線接線ベクトルとUpベクトルに垂直なOutベクトルを軸とした回転を加えることができます。

以上が「Surface」タブの説明となります。

次に「Construction」タブの説明を行います。
このタブでも「Surface」と同様にジオメトリの形状を調整することができます。

このタブでは大きく分けて3つの設定項目があります。

「Cross Sections」
 ジオメトリの形状の設定
「Up Vectors」
 ベクトル方向の設定
「Tangents」
 接線方向の設定
を行うことができます。

それでは各設定の詳細を説明します。

まず初めに「Cross Sections」について説明します。

このタブではジオメトリの形状の調整を行うことができます。

「Cross Section Order」
 断面ジオメトリを複数使用することによってスウィープの方法を変更します。

 ※この項目では入力断面ジオメトリにプリミティブが2つ以上必要となります。

 例として下の画像のような2つのプリミティブを持つジオメトリを断面ジオメトリとして使用します。 

 各プルダウンの結果は下の画像のようになります。

※上の画像で同じ結果になっているジオメトリがありますが、「Each Cross Section At All Curve Vertices」と「Cycle Through Cross Section Primitives per Primitive」、また、「Cycle Through Cross Section Primitives per Vertex」と「Choose Cross Section Primitives by Attribute」 は別で設定できるパラメータを変更しなければ同様の結果になります。

「Primitive Type」
 出力の際の形状を調整することができます。
 デフォルトの「Automatic」の場合は入力ジオメトリのTypeを参照してスウィープを行います。

例として入力が“Polygon”の際の各プルダウンの形状を紹介します。

このように出力形状を変更することが可能です。

それ以外の3つトグルは「Ensure Unique Seam Vertices」、「Swap Rows and Columns」、「Close Implicit Backbone Curve if No Curve Input」の3つになります。
このトグルのうちの「Ensure Unique Seam Vertices」,「Swap Rows and Columns」の2つは「Remesh SOP」と共通となっています。

「Ensure Unique Seam Vertices」
 「Surface Type」 が “Rows”、“Columns”、“Rows and Columns” のどれかで、「Revolve Type」 が “Closed” または“Closed Arc”、もしくは入力カーブが閉じている場合、パラメトリックカーブのUV座標値で0と1が存在するように頂点を分けるために、各カーブに余分に頂点を追加します。
「Primitive Type」が“Polygon Soup” 、“NURBS Surface ”、“Bezier Surface” 、“Bilinear Mesh” の場合、UVシームが正しく生成するのに必要となる頂点を余分に追加します。

「Swap Rows and Columns」
有効にすると、グリッド内のポイントとプリミティブの並びを、横並び順の行優先から、縦並び順の列優先になるように変更します。 これを切り替えると法線も逆になります。

「Close Implicit Backbone Curve if No Curve Input」
 第一入力にカーブが入力されていなかった場合、断面毎に1個の原点位置の頂点を持った単一曲線があると仮定して断面ジオメトリをスイープします。

 

次に「Up Vectors」について説明します。

この設定はベクトルの方向を任意に指定することができます。

「Target Up Vector」
プルダウンによってベクトルの方向を設定することができます。
 “Curve Normal”
  入力されたカーブのUpベクトルを入力されたカーブの法線に合わせます。
 “X/Y/Z Axis”
  入力されたカーブのUpベクトルをX、Y、Z軸に合わせます。
 “Attribute”
  カーブごとにPrimitiveやDetailのアトリビュートの値からUpベクトルを取得します。 
 “Custom”
  入力されたカーブのUpベクトルをVector型のパラメータを用いて変更します。

 

次に「Tangents」の説明を行います。

このフォルダでは接線の方向を設定することが可能です。

この設定は「Copy to Curves SOP」と同様の設定となります。

「Tangent Type」によって接線方向を設定することができます。
その設定方法は「Copy to Curves SOP」と同様で下のよう接線方向を変更することができます。

このように接線の方向を調整することができます。

そのほかにも「Extrapolate End Tangents」を有効にすることで、始点と終点に法線を作成することができます。そうすることにより、下の画像のように円形のスウィープを行った際に始点と終点の形を整えるのに役立ちます。

以上が「Construction」タブの説明となります。

 

最後に「UVs and Attributes」の説明を行います。

このタブではUV関係の設定を行うことができます。

このタブでの設定は前回説明した「Revolve SOP」と同様の設定項目があります。

このタブの「UV Coordinates」フォルダが共通の項目となります。

「Compute UVs」
 有効にすると、以下で説明するパラメータを有効にし、uvVertexアトリビュートを生成します。 U座標は、入力カーブのパラメトリック座標に相当し、V座標は、回転軸のパラメトリック座標に相当します。
  Surface Type が Points の時、これはuvPointアトリビュートになります。

「Override Any Existing UVs」
 有効にすると、既存のuvVertexアトリビュートに新規のuvVertexアトリビュートを上書きします。

「Length-Weighted UVs」
 有効にすると、他のエッジを基準に、該当するエッジ長によって、UとVの座標の距離がスケールされます。

「Normalize Computed Us」
 有効にすると、U座標が0から1の範囲に収まるようにスケーリングされます。
 無効にすると、Uはメッシュ上の断面に沿った平均距離にスケーリングされます。
 下の画像が有効になっている場合と無効になっている場合のUVの比較となります。

「Normalize Computed Vs」
 有効にすると、V座標が0から1の範囲に収まるようにスケールされます。 
 無効にすると、Vはメッシュ上のV方向に沿った平均距離または入力されたカーブに沿った距離にスケールされます。

「Flip Computed Us」
 これを有効にすると、計算されたU値がmax-uに変換され、テクスチャが裏返しになるのを回避します。 前面から見た際にテクスチャをサーフェス上に正しく表示するには、これを有効にする必要があります。
  背面から見た際にテクスチャをサーフェス上に正しく表示するには、これを無効にする必要があります。

「UV Scale」
 生成されるUV座標に対してスケールを変更することができます。

「Snap U to Nearest Boundary」
このトグルは「Copy to Curves SOP」の「Make Computed Us Wrap Seamlessly」と同様の設定項目となります。
 Normalize Computed Us が無効でこのトグルが有効な時、テクスチャがU方向で正しく循環するように、Uの範囲が一番近いプラスの整数値にスケールされます。    
 Normalize Computed Us と Normalize Computed Vs の両方が無効であれば、 UV Scale は小さなジオメトリに対してスケールを指定することができます。 

「Snap V to Nearest Boundary」
このトグルは「Copy to Curves SOP」の「Make Computed Vs Wrap Seamlessly」と同様の設定項目となります。
 Normalize Computed Vs が無効でこのトグルが有効な時、テクスチャがV方向で正しく循環するように、Vの範囲が一番近いプラスの整数値にスケールされます。
 これは、 Normalize Computed Us と Normalize Computed Vs が両方とも無効の場合、 UV Scale は小さなジオメトリに対してスケールを指定することができます。 

「Attributes」のフォルダではインプットするアトリビュートとアウトプットする項目を設定することができます。

以上が「Sweep:2.0 SOP」の説明となります。

 

この機能を使うことにより、Houdini17.5のSweep SOPよりも自由度が高くモデリングを行うことができるようになります。

例としてSweep SOPを2つ用いることにより下の画像のような編み込みロープのようなものを簡単に作成することができます。

今回配布するhipファイルの中に作成されたデータがありますので興味のある方はご確認ください。

このように設定項目が増えたことにより自由度が高くかつ速くモデリングを行うことができるようになります。

 

こちらの記事のhipファイルが以下のURLからダウンロードできますので興味のある方はご確認ください。
https://www.dropbox.com/sh/b2hgoq7rcic9mxl/AADuj9B50EF3ks5Hd-W8yO98a?dl=0