タイトル: Mesh FIlter
本稿は Unity の Mesh Filter コンポーネントに関する記事です。

Mesh Filter は、ゲームオブジェクトが描画するときに使うメッシュ (3Dモデルの形状データ)を指定するコンポーネントです。実際の描画は別コンポーネントの Mesh Renderer が担当します。
つまり、Mesh Filter = 形状を持つ係、Mesh Renderer = それを画面に描く係という分業構造になっています。
Mesh Filter の役割
| 項目 | 内容 |
|---|---|
| クラス | UnityEngine.MeshFilter |
| 役割 | 使用する Mesh アセットへの参照を保持 |
| 主なプロパティ | mesh (実行時のインスタンス) / sharedMesh (アセット共有) |
| セットになる | Mesh Renderer (描画) + マテリアル |
Mesh Filter / Mesh Renderer / Skinned Mesh Renderer の関係
| 用途 | 必要コンポーネント |
|---|---|
| 静的・剛体メッシュ (壁、家具、小物等) | Mesh Filter + Mesh Renderer |
| ボーンアニメーションするキャラ/生物 | Skinned Mesh Renderer 単独 (Mesh Filter は不要) |
| 2D スプライト | Sprite Renderer (Mesh Filter 不使用) |
基本的な使い方
- Hierarchy で対象 GameObject を選択
- Inspector で「Add Component」→「Mesh」→Mesh Filter を追加
- 同じく Mesh Renderer を追加 (3D Object メニューから作るとセットで付与される)
- Mesh Filter の Mesh 欄に使いたいメッシュアセット (Cube、Sphere、または FBX 内のメッシュ等) をアサイン
- Mesh Renderer の Materials にマテリアルを設定
mesh プロパティと sharedMesh プロパティの違い
スクリプトから Mesh Filter のメッシュを変更/参照する際は、用途に応じて使い分けが必要です。
| プロパティ | 挙動 | 使うとき |
|---|---|---|
mesh | 初回アクセス時にそのインスタンス専用のコピーを生成 | この GameObject のメッシュだけを動的変形したい (頂点位置を書き換える等) |
sharedMesh | アセット本体への直接参照 | 読み取りだけ/全インスタンス一括で変えたいとき。エディタ拡張 |
注意: sharedMesh をスクリプトから書き換えると同じメッシュを参照している全 GameObjectに影響します。意図しない場合は mesh を使用してください。
動的にメッシュを差し替える例
|
using UnityEngine; |
よくある落とし穴
- マテリアルが付いていない — Mesh Filter だけで Mesh Renderer が無い、または Material 未設定でピンク色のオブジェクトに見える
- 法線が反転 — インポート時のNormals 設定や、両面表示用シェーダの利用を検討
- 大量の同一形状 — GPU Instancing 対応シェーダで Draw Call を削減
- 頂点数が多すぎる — LOD Group や ProBuilder のメッシュ最適化を活用
- sharedMesh を書き換えて全インスタンスに波及 — 意図しないなら
meshを使う
関連
- 親カテゴリ: メッシュ
- セットで使う: Mesh Renderer / マテリアル / シェーダ
- 類似コンポーネント: Skinned Mesh Renderer