Steam版 Houdini indie 20.5.684
はじめに
Houdini Apprentice Advent Calendar 2025の2日目の記事です。
ゲームエフェクトのメッシュをhoudiniで作成する情報がほとんど無く、需要あるかなと思い書きました。
すべてのノードついて解説しているとすごく長い記事になるので、今回は要点だけ解説してます。詳細を確認したい場合は添付データを見ながら進めてください。
今回紹介するのは以下の7つです!多い!
また、基本的にはsweepノードを使用して作成しています。(UVを楽に設定できるため)
・スラッシュメッシュ
・クロス(ライン状)のメッシュ
・雷メッシュ
・サークル状のメッシュ
・ビームメッシュ
・竜巻メッシュ
・トレイルメッシュ
houdiniデータ:https://medianky.booth.pm/items/7624157
ゲームエフェクトとは
本題に入る前に、ゲームエフェクトの作り方について軽く説明します。
世の中のゲームエフェクトは、モデルに貼ってあるテクスチャを動かすことで作られています。(最初知ったときびっくりしました)

見ての通り、ゲームエフェクトにはテクスチャを貼るためのモデル(メッシュ)が必要です。なので、今回はそのメッシュの作り方について解説していきます。
スラッシュメッシュ
bendをlineに繋ぎ、 bendの CaptureDirection をlineと同じ向きにして曲げる

slash状にしたいので、line側にtransfromとmatchsizeを入れて形を調整

!ここがポイント!
sweepの UVs and Attributes タブを開き、Compute UVs Normalize ComputedVsのチェックをいれる。そうすることでUVをキレイに貼れる。Sweepを使用する一番の理由がこれ。

この段階でほぼ完成だが、カラーとアルファの設定もしようと思う。
カラーとアルファの設定をする準備として、line側とcircle側にそれぞれpointIDを割り振る。今回はライン側にpid_U、circle側にpid_Vのアトリビュートをattributewrangleで作成している。この時0~1の範囲でpointIDを設定することで、その後設定するランプが上手く認識する
- line側
f@pid_U = float(@ptnum)/(@numpt-1);
- circle側
f@pid_V = float(@ptnum)/(@numpt-1);
VEXわからないよ!っていう方は以下のリンク先のものを見てみてください。神々の方々がとても分かりやすく解説しています。特にさつき先生のVEX解説動画がわかりやすいです。
https://youtu.be/U9At8VAhJDo?si=xwaN_o51eWQoztHI
https://qiita.com/TF_siri/items/e189932d76f40bb56284
次に、attributewrangleをsweepにつなぎ、以下コードを入力する。
(先ほど割り振ったidで、カラー(Cd)とアルファ(Alpha)のランプを設定している)
vector color_U = chramp("color_U", @pid_U);
float alpha_U = chramp("alpha_U", @pid_U);
vector color_V = chramp("color_V", @pid_V);
float alpha_V = chramp("alpha_V", @pid_V);
v@Cd = color_U * color_V;
f@Alpha = alpha_U * alpha_V;
edit parameter interfaceを開いて、作成したランプをカラータイプにする。

カラーとアルファの設定はこれで終わり。
あとは出力する前にtriangulate normal clean transform null rop fbx output をつなぐ
- tariangulate
└ ゲームエンジンにインポートすると勝手に三角形化されるので、予期せぬ挙動をしないようあらかじめ三角形化させる - normal
└ なくても良いが念のため入れる - clean
└ 必ず入れる。いらないアトリビュートやグループを消すことでデータ容量を軽くする。 - transfrom
└ ゲームエンジンにもっていくとサイズが1/100になるため、トランスフォームでサイズを100倍にする。ゲームエンジンに書き出すときにサイズをそろえる機能もあるが、挙動が怪しいので素直に100倍にしている - null
└ 必ず入れる。そしてrop fbx outputの一つ前に繋ぐ。nullを繋ぐ理由としては、ゲームエンジンやmaya等にもっていったときに、rop fbx outputにつながれているノード(今回だとnull)の名前がそのままFBXの名前になるため。 - rop fbx output
└ 書き出すノード。個人的には絶対パスより相対パスがおすすめ。
クロス(ライン状)のメッシュ
やりかたはスラッシュメッシュとほぼ一緒。
まず、lineを作成

twistを繋ぎ、CaptureDirectionをlineと同じ向きにしたあと、TpaerとTwistでねじる

次はsweepさせる物を作成する。
line transfrom mergeノードを使用して十字形を作成。

ここで伝家の宝刀sweepをつなぐ
(太かったのでScaleCrossSectionを0.3にしてます)

sweepの UVs and Attributes タブを開き、Compute UVs と Normalize Computed Vsのチェックをいれる。そうすることでUVがキレイに貼れる。

あとはスラッシュメッシュと同じ流れでカラーとアルファを入れ、tariangulateやnormalを入れていく。詳細は添付データをみていただけると。
雷メッシュ
edit > Legacy Presets > Crack を選択

Generationsのエクスプレッションを外して任意の数字を入れる。今回は24
(Ctr + Shift + LMB でエクスプレッションを外せます)

sweepの UVs and Attributes タブを開き、Compute UVs と Normalize Computed Vsのチェックをいれる。そうすることでUVがキレイに貼れる。

あとはスラッシュメッシュと同じ流れでカラーとアルファを入れ、tariangulateやnormalを入れていく。詳細は添付データをみていただけると。
サークル状のメッシュ
bendをlineに繋ぎ、 bendの CaptureDirection をlineと同じ向きにして45度曲げる

ここで伝家の宝刀sweepをつなぐ
(裏返っていたのでReverseCrossSecetionにチェックを入れてます)

sweepの UVs and Attributes タブを開き、Compute UVs と Normalize Computed Vsのチェックをいれる。そうすることでUVがキレイに貼れる。

あとはスラッシュメッシュと同じ流れでカラーとアルファを入れ、tariangulateやnormalを入れていく。詳細は添付データをみていただけると。
ビームメッシュ
外周のエッジにlineとsweepをつないでビーム部分を作成

sweepの UVs and Attributes タブを開き、Compute UVsとNormalize Computed VsとOverride Any Exisiting UVsのチェックをいれる。そうすることでUVがキレイに貼れる。

UVが重なっているので、uvtransformで重ならないよう調整する
(今回はnullのコントローラーをつくって、UVを調整できるようにしてます)

あとは、カラーとアルファを設定するためにpointIDを割り当てる

割り振ったpointIDの値を0~1の範囲に収め、カラーとアルファのランプを設定
float pid = @pid_U/@pid_U_max;
v@Cd = chramp("color_U", pid);
f@Alpha = chramp("alpha_U", pid);
竜巻メッシュ
カラーとアルファを設定
float pid = @P.y;
v@Cd = chramp("color_V", pid);
f@Alpha = chramp("alpha_V", pid);
あとはスラッシュメッシュと同じ流れでtariangulateやnormalを入れていく。詳細は添付データをみていただけると。

トレイルメッシュ
今回はcragを使用してトレイルメッシュを作成します。作る流れとしてはクロス(ライン状)のメッシュとほぼ一緒です。
まず、crag unpack balst をつないで、追従させたいポイント以外を消す

trailを作成し以下の設定にする。Trail Lengthでトレイルの長さを変更できる。

ここで伝家の宝刀sweep!
sweepのCompute UVsとNormalize Computed VsとOverride Any Exisiting UVsのチェックをいれることでUVがキレイに貼れる。

あとはスラッシュメッシュと同じ流れでカラーとアルファを入れ、tariangulateやnormalを入れていく。詳細は添付データをみていただけると。

おわりに
すごく長い記事になりました。
ここまで見て下さりありがとうございます!
この記事を数年前の自分に紹介したい....
































