98
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Houdini ApprenticeAdvent Calendar 2019

Day 12

初心者向けノードサンプル集

Last updated at Posted at 2019-12-12

はじめに

この記事はHoudini Apprentice Calender 2019の12日目の記事です。

この記事ではHoudiniを始めたばかりの人を対象にしたサンプル集を紹介していきます。
紹介するサンプルではVop、VEX、Pythonなどのコードは一切使わず、ノードと簡単なエクスプレッション(四則演算など)で出来る構成となっています。

バージョンはHoudini18.0.287を使用しています。

※自分自身がモデラーなので、モデラー寄りの内容になっています。

パラメータのフィルタリング

サンプルを見る上で、知っておくと良いのはパラメータのフィルタリングです。
パラメータエディタ右上の虫眼鏡ボタンを押し、プルダウンメニューからParameters with Non-Default Valuesを選ぶとデフォルトから変更されたパラメータのみ表示出来ます。
Parameter Filter

ノードサンプル

初めに1~3種類程のノードを使っただけのサンプルを紹介していきます。

NodeSample.hipncをダウンロード

ファイルを開くと図のようにネットワークボックスごとに分かれています。

それでは一つずつ見ていきましょう。

トポロジを変えずに滑らかにする

Smoothノードで出来ます。もちろんパラメータでどれぐらい滑らかにするかの調整が可能です。

法線方向に頂点を移動

Peakノードで出来ます。

法線を反転

Reverseノードで出来ます。

円形化

Houdini18.0から入ったCircle from Edgesで出来ます。

カーブを切り取る

Carveノードで出来ます。
またExtractをアクティブにする事で切り取った場所にポイントを作る事も出来ます。

ペイントするようにジオメトリを配置する

Spray Paintノードで出来ます。Visualize as Spheresのチェックを外すことで第2インプットに繋いだジオメトリを配置する事が出来ます。

コンベックス形状を作成

Shrink Wrapでまとまったコンベックス形状を作れます。またConvex Decompositionを使えばしきい値に基づいて、分割されたコンベックス形状を作れます。

対象のジオメトリの形状に合わす。

Rayノードで出来ます。

ジオメトリの切断

Booleanノードで出来ます。ノイズを掛けるのにMoutainを使っています。

ポリゴンリダクション

Poly Reduceで出来ます。

移動、回転させながら複製

Copy and Transformノードで出来ます。

スプリング

Addノードでポイントを一つ出し、Copy and Transformで回転と移動をさせながら複製します。
そこにAddノードを繋げ、PolygonsタブのBy Groupをアクティブにする事でポイント番号順に繋いだパスが作られるので、最後にSweepで立体化します。

左右対称で編集

Clipで半分にしてから編集し、Mirrorノードを繋ぎます。

ランダムな色のドット

Scatterでポイントをばらまき、Colorノードに繋げます。
ColorノードのColor TypeをRandomにし、Attribute Transferを繋げます。

ジオメトリに沿ったパスを作る

Find Shortest Pathで2つのポイントを指定する事で最短距離でパスを作ってくれます。
立体化する場合はPoly WireもしくはSweepを使います。

文字を立体にする

FontノードにPoly Extrudeノードを繋げます。
またHoudini18.0からPoly Bevelノードで特殊なベベル形状を作りやすくなりました。

白黒画像からジオメトリを作る

Traceに白黒画像を指定すると白い箇所をアウトライン化したジオメトリを作れます。三角化するにはDivideを使います。

パスをオフセットさせる

Poly Expand 2Dで出来ます。

2Dコンベックスを作る

Triangurate 2Dで出来ます。内部のエッジを消すにはDivideのRemove Shared Edgeにチェックを入れます。

分かれているジオメトリを一体成型にする

VDB from Polygonsでボリューム化し、Convertノードでポリゴンに戻します。

画像をマスクにして、ジオメトリを配置する

GridAttribute from Mapを繋ぎ、画像を指定する事で、画像を頂点カラーに変換出来ます。
ScatterのDensity AttributeにCdと入力する事で頂点カラーの明るさに合わせて、ポイントを生成出来るので、Copy to Pointsでジオメトリをばらまきます。

3Dドット絵を作る

VDB from Polygonsでボリューム化し、Points from Volumeで等間隔のポイントを生成し、Copy to PointsBoxを並べます。
本当はここにAttribute from Mapでテクスチャを頂点カラーに変換し、元の色でボックスを作った方が良いんですが、今のサンプルでは対応していません。。

ジオメトリを破砕する

Iso Offsetでボリュームに変換し、Scatterに繋げます。
Voronoi Fractureに元ジオメトリと生成されたポイントをつなぐ事でポイントを母点としたボロノイ分割をする事が出来ます。割れ方を確認するのにはExploded Viewを使います。

ぐしゃぐしゃの紐を作る

Scatterで生成したポイントにAddノードを繋げ、PolygonsタブのBy Groupをアクティブにする事でポイント番号順に繋いだパスが作られます。
ConvertノードでNurbsに変換する事で滑らかになり、Resampleでポイント数の調整が出来ます。
Rest PositionDetangleを使う事でパス同士の衝突を緩和し、Sweepに繋ぐ事で立体化する事が出来ます。

ジオメトリの周りにネジを配置する

Rayで衝突した箇所のグループを作り、BlastScatterで衝突箇所以外にポイントをばらまきます。
そこにTubeから作成したネジをCopy to Pointsで配置します。

机を作ってみる

初心者が最初に作るプロシージャルモデリングとして机を選びました。
簡単なパラメータを追加、リンクさせて可変する机のサンプルになります。
※このサンプルの作り方が決して正解という訳ではありません。アプローチの一つとして参考にしていただければと思います。

Desk.hipncをダウンロード

UVとベベル

先ほど作った机を少し複雑にして、UVとベベルも適用しました。少し要素が足されるだけで考えることが増えて練習になると思います。

グループ作成のサンプル

モデリングする上で必ず必要になってくるのが、グループです。
グループとは選択状態を保存出来る物で、モデリングの際にグループに含まれてる箇所のみ変形させたりする事が出来ます。

GroupSample.hipncをダウンロード

このサンプルでは基本的なグループの作り方を紹介します。

手動で選択

Group CreateノードのBase Group横にある三角ボタンを押す事でビュー選択モードになるので、ビューポート上で選択し、Enterを押すとグループに選択が登録されます。

グループタイプの変換

Group Promoteでグループタイプを変換出来ます(PrimitiveからPointなど)

グループの拡張

Houdini18.0から付いたGroup Expandで出来ます。

バウンディングボックスで選択

Group CreateのKeep in Bounding RegionsのEnableにチェックを入れ、(Base Groupはチェックを外します)、バウンディングボックスに囲まれた箇所のみグループに追加出来ます。

グループの合成

すでに存在するグループと同じ名前で良い場合はGroup CreateのInitial Mergeを変更します。画像はSubtract from Existingにし、すでにあるグループから現在の選択を引き算しています。

違う名前のグループを合成するにはGroup Combineを使います。

ジオメトリが重なっている箇所を選択

Group CreateのKeep in Bounding RegionsのEnableにチェックを入れ、Bounding TypeをBounding Object(points or vertices only)にします。Group TypeがPointsもしくはVerticesの場合でしか機能しません。

法線方向を基に選択

Group CreateのKeep by Normalsにチェックを入れ、向きをベクトル値で指定します。
画像では0, 1, 0にすることで法線が上向きに近い箇所を選択しています。

穴が空いてる箇所の境界を選択

Group CreateのIncrude by EdgesのEnableにチェックを入れ、Unshared Edgesにチェックを入れます。画像ではエッジを選択していますが、Group Typeを変更する事で、PointやPrimitiveを選択する事が出来ます。

エッジ角度に基づいて選択

Group CreateのIncrude by EdgesのEnableとMin Edge Angleにチェックを入れ、角度を入力します。

エッジの長さに基づいて選択

Group CreateのIncrude by EdgesのEnableとMin Edge Lengthにチェックを入れ、基準となる長さを入力すると、その長さよりも短いエッジが選ばれます。

UVシームを選択

Houdini18.0から追加されたGroup from Attribute Boundaryで出来ます。

ハードエッジを選択

Group from Attribute BoundaryのAttributeをNにするとハードエッジになってる箇所が選択されます。

1個飛ばしで選択

Group by Rangeを使うと指定したステップ数分、飛ばして選択する事が出来ます。

2点間を選択

Houdini18.0から追加されたGroup Find Pathを使うことで指定した箇所の間を繋ぐように選択出来ます。

一周するように選択

Group Find PathのPath EndingをClose Pathにする事で一周するように選択する事が出来ます。

モデリングサンプル

具体的なモデリングのサンプルです。
ノード数も少し増え、グループやアトリビュートを少し利用しています。

ModelingSample.hipncをダウンロード

チュロス、雪、石、レンガ、石橋、壊れた木が入っています。

一つずつポイントになる箇所だけ説明していきます。

チュロス

Group by RangeCircleのポイントを一個飛ばしで選択し、Transformノードでスケールを掛けて星形形状を作っているところがポイントです。

Group Createで法線が上向きになってる箇所を取得し、その箇所だけにScatterでポイントをばらまき、VDB from Particelesでボリューム化してるのがポイントです。

SphereからMoutainで様々なノイズを掛けていくのがポイントです。

レンガ

BoxAttribute Randomizeでpscaleというアトリビュートを作り、Poly Bevelに指定することでベベルの幅をランダムにしているのがポイントです。

石橋

Circleを半分にしたものにスケールを掛け、Carveノードを使い、カーブの中心点を取得し、脚を配置しているのがポイントです。

壊れた木

Match Sizeで位置とスケールを合わせたLineに対して、Point Jitterでポイント位置をランダムにし、Copy to PointsGridを配置しているところがポイントです。

この後すると良いもの

今のところサンプルは用意出来ていませんが、Vop、For-Each、ベクトルのサンプルを用意出来ればと思ってます。
今後、余力があれば更新していければと思います。

まとめ

ざっくりとサンプルを紹介していきましたが、いかがでしたでしょうか?
Houdiniにはここでは紹介出来ないぐらいの沢山のノードがありますが、この記事が少しでもHoudiniの学習や導入のお役に立てれば幸いです。

もし記事内で間違いや不明点等あれば書き込んでいただけると幸いです。
最後までお読みいただき、ありがとうございました。

98
64
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
98
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?