シーンファイルはこちらからダウンロード (パスワードあり)
Houdiniで多く見られるカーブを元にレベルを作成する手順。このチュートリアルはその初心者向けチュートリアルです。
初めにフェンス部分を作成します。最初にwire部分を作成します。
Wireの元を作成する
Geoノードの中を空にし、Lineを作成します。
Lineにresampleを追加します。
Lengthを0.01にするとポイント数を増やすことができる。
次にAttribute Wrangleノードを追加します。
Attribute Wrangleに関しては下記に詳しい記載がございます。
サルにもわかる Houdini「attribute wrangle 01」
Attribute Wrangleで、下記の2行を追加します。
@P.x=sin(@ptnum*ch("Frq"))*ch("Mag");
@P.z=cos(@ptnum*ch("Frq"))*ch("Mag");
入力後、下記のボタンを押すと
” ”で囲んだパラメーターを作成することができます。
FrqとMagを調整するとコイル数とコイル半径を変更することができます。
Transformを追加し、Rotate Yを180に設定、元のカーブとマージします。
上からみると完全な正円なので、フェンスのようには見えません。
Transformを追加し、Scale Xを0.2に設定したカーブを少しつぶします。
作成したWireカーブをカーブにそって配置する
次にこのカーブをもう一つのカーブにそって複製します。この段階では、カーブであればよいので、Circleを作ります。
Primitives TypeはPolygon、OrientationはZXに設定します。
Arc TypeはOpen Arcに設定します。
Copy to Pointを使用して、カーブのポイントにワイヤをコピーします。
エッジは本質的な方向性をもっていないので下記のように求める方向にコピーできていません。
そこでCircleの下にPolyframeを追加します。
このノードは、ユーザが選択したフレームスタイルに基づいて、ポイントおよび頂点の座標フレームアトリビュートを生成します。 計算されたフレームは、法線ベクトル、接線ベクトル、および接ベクトルです。
これでカーブのタンジェントを計算できるので、Tangent NameをNとします。
Copy to Pointはジオメトリの+Z方向がNまたはvアトリビュートを向くように設定されているので、タンジェントの名前をNにすることで、ジオメトリの+Zを任意の方向に向かせることができます。
参考:https://www.sidefx.com/forum/topic/6679/
更にCircleのSポイント数を調整できるようにResampleを追加します。
Attribute WrangleのFrqとMagでコイルの形状を調整し、Resampleでワイヤの数を変更します。
実際に自分が必要なルックになるように調整してください。
ワイヤをポリゴン化するためにPolywireを追加します。
Wire Radiusを調整し、ワイヤの太さを調整します。
Normalを追加し、法線を調整します。
これでワイヤジオメトリを作成することができました。
フェンスの柱を作成
次にフェンスとフェンスの間の柱を作成します。
先ほどのCircleを利用して、Tubeを配置します。
TubeのRadiusを調整し、下記のようにCircleにTubeが配置されるようにします。
ResampleとつなぐとTubeの数が多すぎるので、Polyframeの結果をCopy to Pointに接続します。
フェンスとマージします。
ビューポートで確認すると位置があっていません。
そこでTubeノードでHeightを右クリック>Copy Parameterを選択
Center YにPaste Relative Referenceした後に、それを2で割ります。
最初のLineもTubeもHeightを1.0で作成しているので同じ位置になります。
ここではフェンスを作る形状をCircleを元にしています。
そこで、Curveノードを作成し、Show Handleを使用してカーブを描きます。
そのカーブのCircleの代わりにPolyframeに接続します。
接続したカーブに沿ってフェンスが作成されます。
このままだとクリックした位置に柱が追加されるため間隔が等間隔ではありません。
そこで、CurveとPolyframeの間にResampleを追加します。
ResampleでLengthを調整し、柱が等間隔に配置します。
大本のカーブの長さやポイントの位置を変更してもResampeされるため、常に固定間隔で柱が追加されることがわかります。
土台を作成する
フェンスの形状を決めているカーブをresampleしたものにpolywireをつなぎ、ポリゴン化します。
これを全体を統合しているMergeに接続します。
polyWireのRadiusを調整し、Normalを追加します。
フェンスの上のフレームがないので、polyWireの下にTransformを追加し、Translate Yを1.0にします。
Mergeを追加し、他のジオメトリとマージします。
この状態だと完全にフェンスが柱に潜り込んでいるので、修正する必要があります。
オフセットする方向をカーブに持たせるためにPolyframeを追加します。
Bitangentのみを有効にして、Nという名前にします。
その下にAttribute Wrangleを追加し、下記のように記述します。
横のボタンを押し、Offsetをパラメータ化してください。
これでフェンスのカーブからオフセットしたカーブを作成することが可能になりました。
これをフェンスフレームを作っているPolywireと柱を配置するCopy to Pointに接続します。
Attribute WrangleのOffsetを調整することでフェンスのフレームと柱をフェンスの外に配置することができました。
現在フェンスの高さは一番初めのLineのLengthで決まっています。
そのため、LineのLengthを変更するとフェンスの高さとフレームの高さが合わなくなります。
そこでまず柱を作っているTubeのHeightにLineのHeightをCopy Parameter、Paste Relative Referenceを行います。
これでフェンスの高さと柱の高さが同じとなります。
同様にフェンスの上フレームの位置を決めているTransformにPaste Relative Referenceを行い位置を合わせます。
これでフェンスの形状を変更しても常にそれに沿った状態のフェンスを作成することができました。