メッシュで作る斬撃エフェクトの考え方

はじめに

チュートリアルの多くは動画で、操作のテンポや手触りといったものは、AIには拾えない。だからこのシリーズでは、そういう内容をAIが読んで、理解して、自分で改良までできるテキストに起こしておきたい。要は、足りていない資料を文章で埋める試みだ。


方法論

攻撃に視覚的なフィードバックを足したり、攻撃範囲を示したりするために、ゲームではよく斬撃エフェクトを入れる。要するに、刀を振ったときの軌跡だと思えばいい。

エンジンで作りやすいのは大きく二通り。メッシュで作るか、トレイルで作るか。この記事ではメッシュ方式だけを扱う。

メッシュ方式の肝は役割分担にある。形と軌跡はメッシュ、絵柄はテクスチャ。 メッシュで斬撃のシルエットを作り、0〜1に正規化したまっすぐなUVを敷いてテクスチャを貼る。メッシュをどう曲げるかで軌跡が決まり、テクスチャに何を描くかで見た目が決まる。

仮にこれを全部スプライトでやろうとすると、1枚ずつ手描きするか、結局似たような仕組みを組んでベイクし、連番を量産するかしかない。パラメータはいじりにくいし、VRAMももったいない。メッシュ+テクスチャなら「軌跡」と「絵柄」を完全に切り離せる。どこから出てどこへ抜けるかはメッシュの仕事、きれいに見えるかどうかはテクスチャの仕事。お互い干渉しないから、後から何でも調整が効く。


輪郭

まず作るのはシルエットだ。

手作業でモデリングするとき、頭の中でやっているのは一種のパラメトリックな写像だ。欲しい状態はこう。UV空間では、テクスチャが0〜1の範囲にただの長方形としてまっすぐ敷かれている。一方でメッシュ自体は、3D空間の中で刀の軌跡に沿って曲がっている。矛盾しているようだが、これこそが役割分担で——UVの規則正しさはテクスチャのために残しておき、空間的な曲がりはメッシュに引き受けさせる。

いちばんよくある円弧状の斬撃なら、こう考えると分かりやすい。U方向=振りの軌跡を展開した方向で、極座標でいう角度。V方向=斬撃の内側から外側への幅で、極座標でいう半径。こうして、もともとまっすぐだった一枚の平面が、扇形や三日月形に化ける。UVは崩れていないのに、形だけが曲がっている。

変わった形の斬撃も、やることは同じ。「規則的なUV」から「目標の形」への対応関係を、別のものに差し替えるだけだ。


テクスチャ

ここは工夫のしどころが多い。凝るならチャンネルを分けて、Rに形状、Gにハイライト、というふうにアーティスト側へ制御を渡す手もある。ただ今回は原理の話なので、いちばん素朴な形でいく。グレースケール1枚、もしくは描き上げたRGB画像を、そのまま貼るだけ。

テクスチャの本体は、UとVそれぞれの方向のグラデーションだ。いちばん単純なのは、左上が1で、右と下に向かって0へ落ちていくもの。斬撃はふつう片側から伸びてくるし、右利きの斬りは右から左へ走ることが多い。明るい側と空の側をあらかじめ決めておくのは、あとでテクスチャをスクロールさせる向きに合わせるためだ。

とはいえ、ここはどうとでもなる。向きを逆にしたければ、シェーダーのサンプリング時にflipするか、テクスチャをミラーして終わりだ。


アニメーション

エフェクトの命は動きにある。メッシュとテクスチャが揃ったら、あとは動かすだけ。アニメーション全体を駆動するのは、たった一つの値——斬撃の進行度(0〜1) だ。以降のすべてはこれに従う。

手っ取り早いのは、進行度を不透明度やスケールにつないで、出入りの唐突さを和らげるやり方で、普通のエフェクトはだいたいこれで済ませる。でもこの斬撃は、軌跡をすでにメッシュへ預けてある。だからもっと筋のいい方法がある。テクスチャを、その軌跡に沿ってスクロールさせて入れてくるのだ。ここで、ずっとこだわってきた「まっすぐなUV」がようやく効いてくる。

仕組みは単純で、テクスチャをスライドさせて入れるだけ。進行度=どれだけ滑り込んだか。0なら画像はまだ丸ごと外にいて、斬撃は空っぽ。1ならちょうど収まりきって、斬撃が完成する。実装は、サンプリング時にUへ offset = 1 − 進行度 を足すだけ。これがそのままスライドになる。

ただし、この出し入れが成立するには条件が二つある。サンプリング元が有界であること、そして押し込まれていく先の縁が空であること。いちばん手軽に満たせるのは、画像テクスチャを使うことだ。

進行度はリニアでなくていい。斬撃の気持ちよさは「振りは速く、収めはゆっくり」。その感覚どおりに、進行度へカーブを一本噛ませればいい。


おわりに

試した範囲だと、CODEX APPでGPT5.5+BlenderMCP、思考強度を中くらいにした構成で、すでにけっこういい結果が出る。OPENCODEでDEEPSEEKV4PROをMAX思考強度で回した場合は、大枠は問題ないものの、細部でよくつまずく。プロシージャルテクスチャに固執するわりに使いこなせない、といった類いの問題だ。

とはいえ理屈の上では、どこが違うかを伝えて何度か回せば直るはずだ。これはGPT5.5でも、その先のモデルでも、たぶん変わらない。AIは人の頭の中を読めない。技術や手順では間違えなくなっても、「欲しい絵」を決めるのは、結局のところ人間の側の仕事だからだ。