こんにちは、エンジニアのオオバです。
ParticleSystemのShapeにSkinnedMeshRendererを指定しNoiseを組み合わせる
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
ShapeモジュールにSkinnedMeshRendererを設定する
ParticleSystemのShapeモジュールにはSkinnedMeshRendererを設定できます。
アニメーションするメッシュ上からパーティクルを発生させることが可能です。
Noiseモジュールで複雑な動きを追加する
Noiseモジュールを使うと、デフォルトでは表現できなかった複雑なパーティクルの動きを実現できます。
2つを組み合わせた結果
SkinnedMeshRendererとNoiseモジュールを組み合わせると、以下のような表現になります。
指定したアニメーションメッシュからパーティクルが発生し、Noiseで自然な動きが付きます。
Simulation Spaceの設定に注意
1つ注意点があります。メインモジュールのSimulation SpaceがデフォルトのLocalだと、メッシュのローカル座標が適用されて意図しない表現になります。
Worldに変更することでこの問題は回避できます。
設定手順のまとめ
SkinnedMeshRendererからパーティクルを発生させる手順を整理します。
- ParticleSystemコンポーネントをGameObjectに追加する
- Shapeモジュールを開き、ShapeをMesh Rendererに変更
- Mesh Renderer欄に対象のSkinnedMeshRendererを設定
- Noiseモジュールを有効にし、StrengthやFrequencyを調整
- メインモジュールの
Simulation SpaceをWorldに変更
この手順で、アニメーションするメッシュ表面から複雑な動きのパーティクルを発生させることができます。
Noiseモジュールの主要パラメータ
Noiseモジュールを効果的に使うために、主要なパラメータを押さえておきましょう。
| パラメータ | 効果 | 推奨値の目安 |
|---|---|---|
| Strength | ノイズの強さ。大きいほどパーティクルが激しく動く | 0.1〜1.0 |
| Frequency | ノイズの周波数。大きいほど細かく振動する | 0.5〜2.0 |
| Scroll Speed | ノイズパターンのスクロール速度 | 0〜1.0 |
| Quality | ノイズの品質。Highにすると3Dノイズになる | Low〜Medium |
StrengthとFrequencyのバランスで表現が大きく変わります。
Strengthを大きくしすぎるとパーティクルが暴れてしまうため、小さい値から調整していくのがおすすめです。
どんな表現に使える?
SkinnedMeshRenderer + Noiseの組み合わせは、さまざまな演出に応用できます。
- キャラクターのオーラ表現: 体表面からパーティクルを発生させて力の放出を表現
- ダメージエフェクト: 被弾したメッシュ部分から火花やヒットエフェクトを発生
- 魔法詠唱: 手や杖のメッシュからマジカルなパーティクルを放出
- 環境表現: 木のメッシュから葉が落ちる、水面から水しぶきが上がるなど
Noiseモジュールを使うことでランダムかつ自然な動きが加わり、パーティクルの表現力が格段に上がります。
パフォーマンスへの影響と対策
SkinnedMeshRendererをShapeに指定すると、毎フレームメッシュの頂点位置を取得する処理が走ります。
頂点数が多いメッシュを使う場合はパフォーマンスに注意が必要です。
Max Particlesを制限する
メインモジュールのMax Particlesを必要最小限に設定しましょう。
デフォルトの1000は多すぎるケースがほとんどです。演出の見た目を確認しながら、100〜300程度に抑えるとモバイルでも安定します。
Emission Rateを調整する
EmissionモジュールのRate over Timeを下げることで、1秒あたりの生成数を制御できます。
Noiseモジュールで動きを付けている場合、パーティクル数が少なくても十分なビジュアルになることが多いです。
LODメッシュを活用する
パーティクルのShapeに使うメッシュは、ゲームで描画するメッシュと同じである必要はありません。
頂点数を減らしたLODメッシュを別途用意してShapeに設定すると、見た目を維持しつつ負荷を抑えられます。
MeshRendererとの違い
ShapeにはSkinnedMeshRenderer以外に、通常のMeshRendererも設定できます。
両者の違いを整理しておきます。
| 項目 | SkinnedMeshRenderer | MeshRenderer |
|---|---|---|
| アニメーション対応 | ボーンアニメーションに追従 | 静的メッシュのみ |
| パフォーマンス | やや高負荷(毎フレーム頂点取得) | 低負荷 |
| 用途 | キャラクターの体表面、動く物体 | 建物、地形、静的オブジェクト |
アニメーションに追従する必要がない場合は、MeshRendererを使うほうが軽量です。
用途に応じて使い分けましょう。
まとめ
ParticleSystemのShapeにSkinnedMeshRendererを指定し、Noiseモジュールを組み合わせることで複雑なパーティクル表現が実現できます。
設定時の注意点はSimulation SpaceをWorldにすることです。Localのままだとメッシュのローカル座標が適用されて意図しない結果になります。

筆者のXをフォローしよう
- Unity6000.1.17f1












