カテゴリー別アーカイブ: houdini

タイリング出来るタイル

前回のノイズを使ってタイリング出来るタイルにノイズを与えてHDAとして公開してみました。

HoudiniIndieを契約しているインディーゲーム開発者の方は有用だと思います。

当初クリップで四角く区切ってたんですが無駄な頂点が発生するのとノイズによる境界線の断裂が
ひどかったので現状の自然な形にまとめました。

 

 

 

 

 

 

 

 

 

 

 

 

 

houdini indie ライセンスを お持ちならhdalcをotlsフォルダに入れることで使用可能です。

/objのレベルでTabを押してDigitalAssetsの中にEzLoopVoronoiTileという項目が増えていれば成功です。UE4やUnityなどで使用する場合hdalcファイルをそのままエンジンに読み込んで下さい。
マテリアルとテクスチャはお好きなものをお使い下さい。
Indie版以外のライセンス形態との同時使用は出来ません。

ゲームエンジン上でもHDAを直接読み込んでパラメータをいろいろいじれるのですがパフォーマンスを気にするのであればhoudiniやMayaなどで調整したうえでOBJとして出力して使うのがよいかもしれません。

以下パラメータ詳細になります。

 

Peakは破片同士の隙間の幅です。
Resampleは破片の周囲をどれくらいの間隔で分割するかという値です。

RemoviePiecesの中のパラメータに関しては
Threshoold of Area は その値より小さい面積のタイルは消されます。
RemoveRateはタイルを削除する比率です。削除する破片の組み合わせはRandomseedで調整出来ます。

Noise of Piecesの中のパラメータに関しては見ればなんとなく分かるかと。
ノイズタイプがいろいろ選べます。
Amountとかに大きい値を入れるとすぐに破綻します。要注意です。

X TileとZ Tileに関してはタイリングした時にどう見えるかを確認する為であり実際に使用する際には
1を入れて出力するのが妥当でしょう。

 

このアセットを作った際の学び

  1. polyExtrudeもPrimitiveの@zscaleのアトリビュートを渡すことでDistanceを制御することが可能に。
  2. HDAでパラメータをフォルダに区切った際TabとSingleなどの設定で挙動が変わるということ。
  3. HDAでOrderedMenuを使用する場合スイッチなどのインテジャー型のパラメータに対応する形で選択肢のリスト記述すること動作する。

Houdiniでノイズをループさせる

Houdiniでとある用途で必要になった為XZ平面に対してかけるノイズをループさせたいと思いました。

で思いついたのが新人の頃からやってるタイリングテクスチャを作る手法です。

簡単に言うと半分ずらしてアルファフェードをかけるという実に乱暴なやり方ですがノイズならあまりバレないだろうということで実践してみました。

hiplcファイルはこちら

シーンの中にあるloopNoiseという名前のpointwrangleにこんな感じの

コードを記述してあります。

頂点カラーにanoiseをかけて3×3でタイリングするとこんな感じになりました。

3×3なのに6×6に見えるのは半分ずらして重ねている以上ひとつの中に

2つ描いてしまっているのが原因かなと。

 

もっと良いやり方があれば是非ご連絡下さい。

プロシージャルモデリング超入門

今回はhoudiniのプロシージャルモデリングの初歩的なお話をしようと思います。

グリッドの端っこだけ外側に押し出して上にちょっと上げただけの簡単な例です。

まずgridSOPを出します。端っこのエッジを一つダブルクリックしてボーダーエッジ全部を選びます。

Mayaとかで結構ありがちな罠ですよね。履歴のパラメータをいじるとグチャります。houdiniでも同じことが起きます。

これは迂闊な非プロシージャルな作り方ですね。houdiniらしくないです。

では何故グチャったのでしょうか?それは

polyExtrudeSOPのGroupのところに元のボーダーエッジを表すエッジナンバーが固定値で羅列されているのが原因です。最初のgridSOPのRowsやColumnsを変更すると番号はコロコロと変わっていきます。これではずれますよね。

RowsやColumnsを変えてもグチャらせない為にはボーダーエッジを正しく取得してpolyExtrudeに渡してやる必要があります。

ではどのようにすれば良いのでしょうか?

同じことをhoudiniらしくプロシージャルにやってみましょう。

常に正しいボーダーエッジを得る為にはgroupSOPを使います。

gridSOPのすぐ下にgroupSOPを追加して

これで常に正しいボーダエッジのグループが取れました。

このグループ名を使ってpolyExtrudeSOPにボーダーエッジを渡してあげられます。

polyExtrudeSOPには生成した内容を幾つかのGroupとして記録してくれる機能があります。FrontGroupをチェックしてGroupとして登録しておけば上に持ち上げる時に利用出来ます。

手動でエッジを移動するのではなくtransformSOPに先程登録したグループを渡して上げてtranslateYの値を入れて持ち上げてあげましょう。

これで最初のgridSOPのRowsやColumnsをいくら変えてもグチャらなくなりました。

後からの変更に強く臨機応変に対応出来るプロシージャルモデリングの簡単な例をご紹介致しました。

他のDCCツールとは考え方が全然違いますね。

Softimageで言う所のロトスコープをHoudiniで

16もそろそろ出ようかという時にhoudini15.5メモ:
ビューポート上でdを押してdisplay optionをだしておいてから

この様に指定すればいい
perspではビルボード的な挙動になるがAuto-Place Imageのチェックを外すとXY平面になる。

実モデルの板でやりたい場合はgridにconstantシェーダを指定。
tgaではαが抜けなかったがpic(indie版ならpiclc)にすればαは抜けてくれる

houdiniのTIPSいろいろ