8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Houdini】ゲームエフェクトのメッシュ作成

Last updated at Posted at 2025-12-01

Steam版 Houdini indie 20.5.684

はじめに

Houdini Apprentice Advent Calendar 2025の2日目の記事です。

ゲームエフェクトのメッシュをhoudiniで作成する情報がほとんど無く、需要あるかなと思い書きました。
すべてのノードついて解説しているとすごく長い記事になるので、今回は要点だけ解説してます。詳細を確認したい場合は添付データを見ながら進めてください。

今回紹介するのは以下の7つです!多い!
また、基本的にはsweepノードを使用して作成しています。(UVを楽に設定できるため)

・スラッシュメッシュ
・クロス(ライン状)のメッシュ
・雷メッシュ
・サークル状のメッシュ
・ビームメッシュ
・竜巻メッシュ
・トレイルメッシュ

houdiniデータ:https://medianky.booth.pm/items/7624157

2025-11-22_17h32_05.png

ゲームエフェクトとは

本題に入る前に、ゲームエフェクトの作り方について軽く説明します。
世の中のゲームエフェクトは、モデルに貼ってあるテクスチャを動かすことで作られています。(最初知ったときびっくりしました)
2025-11-21_12h58_26.gif

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

スラッシュメッシュ

lineとcircleを作成
2025-11-20_13h46_07.png
2025-11-20_13h46_28.png

bendをlineに繋ぎ、 bendの CaptureDirection をlineと同じ向きにして曲げる
2025-11-20_13h44_57.png

sweepをつなぐ
2025-11-20_23h29_09.png

slash状にしたいので、line側にtransfromとmatchsizeを入れて形を調整
2025-11-20_23h30_54.png

slashメッシュの幅を調整したい場合はsweepのScaleCrossSectionsを調整、
slashメッシュの太さを調整したい場合はlineに繋いでいるtransformのscaleYを調整すると良い。
2025-11-21_00h19_20.png
2025-11-21_00h20_20.png

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

この段階でほぼ完成だが、カラーとアルファの設定もしようと思う。
カラーとアルファの設定をする準備として、line側とcircle側にそれぞれpointIDを割り振る。今回はライン側にpid_U、circle側にpid_Vのアトリビュートをattributewrangleで作成している。この時0~1の範囲でpointIDを設定することで、その後設定するランプが上手く認識する

  • line側
f@pid_U = float(@ptnum)/(@numpt-1);

2025-11-21_00h02_11.png

  • circle側
f@pid_V = float(@ptnum)/(@numpt-1);

2025-11-21_00h09_40.png

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;

2025-11-21_00h34_33.png

edit parameter interfaceを開いて、作成したランプをカラータイプにする。
スクリーンショット 2025-11-21 003803.png

カラーとアルファの設定はこれで終わり。
あとは出力する前に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
    └ 書き出すノード。個人的には絶対パスより相対パスがおすすめ。

2025-11-21_01h06_02.png

nullをつながずに書き出すとこうなる
2025-11-21_01h01_11.png

クロス(ライン状)のメッシュ

やりかたはスラッシュメッシュとほぼ一緒。
まず、lineを作成
2025-11-22_13h51_40.png

transfromをつなぎ、X軸方向に1移動
2025-11-22_13h52_57.png

twistを繋ぎ、CaptureDirectionをlineと同じ向きにしたあと、TpaerTwistでねじる
2025-11-22_13h55_20.png

次はsweepさせる物を作成する。
line transfrom mergeノードを使用して十字形を作成。
2025-11-22_14h03_00.png

ここで伝家の宝刀sweepをつなぐ
(太かったのでScaleCrossSectionを0.3にしてます)
2025-11-22_14h06_43.png

sweepの UVs and Attributes タブを開き、Compute UVsNormalize Computed Vsのチェックをいれる。そうすることでUVがキレイに貼れる。
2025-11-22_14h12_03.png

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

雷メッシュ

L-Systemを作成
2025-11-22_14h36_16.png

edit > Legacy Presets > Crack を選択
スクリーンショット 2025-11-24 012605.png

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

Rndom ScaleAngleでねじれ具合を調整できます。
2025-11-24_01h56_42.png
2025-11-24_01h57_50.png

また、Seed値を変更することで雷のバリエーションを作れます。
2025-11-24_01h59_22.png

resampleをつないで任意のポイント数に変更
2025-11-24_01h46_13.png

lineとsweepを作成して、resampleとつなぐ
2025-11-24_02h02_21.png

sweepの UVs and Attributes タブを開き、Compute UVsNormalize Computed Vsのチェックをいれる。そうすることでUVがキレイに貼れる。
2025-11-24_02h05_09.png

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

サークル状のメッシュ

circlelineを作成
2025-11-25_01h52_34.png
2025-11-25_01h53_16.png

bendをlineに繋ぎ、 bendの CaptureDirection をlineと同じ向きにして45度曲げる
2025-11-25_01h56_37.png

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

circleのunoform scaleやbendのBendAngleを調整することで幅や曲がり具合を変更できる。
2025-11-25_02h05_58.png
2025-11-25_02h06_49.png

sweepの UVs and Attributes タブを開き、Compute UVsNormalize Computed Vsのチェックをいれる。そうすることでUVがキレイに貼れる。
2025-11-25_02h04_30.png

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

ビームメッシュ

まず、サークル状のメッシュを流用(コピー&ペースト)
2025-11-25_22h20_37.png

blastaddをつないで外周のエッジを取り出す。
2025-11-25_22h30_14.png

外周のエッジにlinesweepをつないでビーム部分を作成
2025-11-25_22h40_30.png

sweepの UVs and Attributes タブを開き、Compute UVsNormalize Computed VsOverride Any Exisiting UVsのチェックをいれる。そうすることでUVがキレイに貼れる。
2025-11-25_22h55_40.png

mergefuseをつないでcircle部分とくっつける
2025-11-25_22h44_15.png

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

あとは、カラーとアルファを設定するためにpointIDを割り当てる
2025-11-25_23h16_02.png

割り振ったpointIDの値を0~1の範囲に収め、カラーとアルファのランプを設定

float pid = @pid_U/@pid_U_max;

v@Cd = chramp("color_U", pid);
f@Alpha = chramp("alpha_U", pid);

2025-11-25_23h25_37.png

下の画像のような形をそのままsweepしてビームメッシュを作ると、UVの調整がすごくやりずらかった。そのため今回は、一度Sweepして形を作ってから、パーツ同士を後でくっつける方法にしている。
2025-11-25_23h32_41.png

竜巻メッシュ

tubeを作成
2025-11-25_23h48_50.png

uvtextureをつなぎ、UVを設定
2025-11-25_23h50_34.png

カラーとアルファを設定

float pid = @P.y;

v@Cd = chramp("color_V", pid);
f@Alpha = chramp("alpha_V", pid);

2025-11-25_23h54_27.png

Attribute Noiseで歪ませる
2025-11-26_00h10_35.png

twistでねじる
2025-11-26_00h12_57.png

あとはスラッシュメッシュと同じ流れでtariangulatenormalを入れていく。詳細は添付データをみていただけると。
2025-11-26_00h14_26.png

トレイルメッシュ

今回はcragを使用してトレイルメッシュを作成します。作る流れとしてはクロス(ライン状)のメッシュとほぼ一緒です。

まず、crag unpack balst をつないで、追従させたいポイント以外を消す
2025-11-26_00h22_08.png

trailを作成し以下の設定にする。Trail Lengthでトレイルの長さを変更できる。
2025-11-26_00h35_14.png

lineで十字形を作成
2025-11-26_00h36_30.png

ここで伝家の宝刀sweep!
sweepのCompute UVsNormalize Computed VsOverride Any Exisiting UVsのチェックをいれることでUVがキレイに貼れる。
2025-11-26_00h40_03.png

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

おわりに

すごく長い記事になりました。
ここまで見て下さりありがとうございます!

この記事を数年前の自分に紹介したい....

8
3
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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?