ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Mesh まわりのコンポーネント
| コンポーネント | 役割 |
|---|---|
Mesh Filter | 形状データ (頂点・三角形) を保持 |
Mesh Renderer | 描画 (マテリアル・影・ライト設定) |
Mesh Collider | 物理判定 (任意形状の Collider) |
Skinned Mesh Renderer | ボーンに追従する変形メッシュ |
Mesh (アセット) | .fbx / .obj / .dae から生成される実データ |
Mesh Filter
3D モデルの形状情報を持つコンポーネント。Hierarchy に GameObject を配置し、Mesh Filter のスロットに .fbx 等のメッシュをアサインします。Mesh Filter 単体では何も表示されず、隣に Mesh Renderer が必要です。
Mesh Renderer
Mesh Filter のデータを画面に描画するコンポーネント。マテリアル・ライト設定・影設定を持ちます:
- Materials: 表面の質感 (シェーダー + テクスチャ)
- Lighting: Cast Shadows / Receive Shadows / Light Probes
- Probes: Reflection Probes / Light Probes の利用設定
- Additional Settings: Motion Vectors / Dynamic Occlusion
Mesh Collider
物理判定用。任意形状の Collider が作れますが、Convex (凸) で無いと Rigidbody と衝突できない制限があります:
// Mesh Collider 設定例
var mc = gameObject.AddComponent<MeshCollider>();
mc.sharedMesh = GetComponent<MeshFilter>().sharedMesh;
mc.convex = true; // Rigidbody と当てたいなら必須
mc.isTrigger = false;
// パフォーマンス目線では Box / Sphere / Capsule Collider のほうが軽い
対応するメッシュファイル形式
| 拡張子 | 対応 | 備考 |
|---|---|---|
| .fbx | ○ (推奨) | 業界標準、ボーン・アニメ・マテリアル |
| .obj | ○ | シンプル、ボーン・アニメ不可 |
| .dae (Collada) | ○ | レガシー |
| .blend | ○ (Blender 必要) | Blender インストール環境のみ |
| .max / .ma / .mb | ○ (DCC ツール必要) | 3ds Max / Maya がインストール済の場合 |
| .glb / .gltf | △ | パッケージで対応 (glTFast) |
Mesh のデータ構造
using UnityEngine;
Mesh mesh = GetComponent<MeshFilter>().mesh;
// 頂点座標 (ローカル空間)
Vector3[] vertices = mesh.vertices;
// 三角形 (頂点インデックス 3 つで 1 ポリゴン)
int[] triangles = mesh.triangles;
// 法線 (ライティング計算用)
Vector3[] normals = mesh.normals;
// UV (テクスチャ座標)
Vector2[] uv = mesh.uv;
// 接線 (ノーマルマップ用)
Vector4[] tangents = mesh.tangents;
// 頂点カラー
Color[] colors = mesh.colors;
// ボーンウェイト (Skinned Mesh)
BoneWeight[] weights = mesh.boneWeights;
Debug.Log($"頂点数: {vertices.Length}, 三角形数: {triangles.Length / 3}");
カスタムメッシュをスクリプトで生成
頂点・三角形配列を直接組むことで、プログラムから任意メッシュを作成できます:
using UnityEngine;
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class QuadMaker : MonoBehaviour {
void Start() {
Mesh mesh = new Mesh();
mesh.name = "MyQuad";
// 4 頂点 (四角形)
mesh.vertices = new Vector3[] {
new Vector3(0, 0, 0),
new Vector3(1, 0, 0),
new Vector3(0, 1, 0),
new Vector3(1, 1, 0),
};
// 2 トライアングル (CCW 表面)
mesh.triangles = new int[] {
0, 2, 1, // 左下三角
2, 3, 1, // 右上三角
};
// UV
mesh.uv = new Vector2[] {
new Vector2(0, 0),
new Vector2(1, 0),
new Vector2(0, 1),
new Vector2(1, 1),
};
mesh.RecalculateNormals();
mesh.RecalculateBounds();
GetComponent<MeshFilter>().mesh = mesh;
}
}
Skinned Mesh Renderer (キャラクター)
キャラクターやアニメーションするモデルは、ボーンに追従する頂点変形が必要なので Skinned Mesh Renderer を使います。Mesh Filter + Mesh Renderer の組み合わせとは別物:
- 各頂点がボーンと重み (BoneWeight) を持つ
- Mecanim / Animation Controller でボーンを動かすと頂点が追従
- Blend Shape (Morph Target) で表情アニメ可能
- CPU スキニング (デフォルト) と GPU スキニング (Project Settings → Player)
ProBuilder (エディタ内モデリング)
Unity 公式のエディタ内 3D モデラー。簡単な箱・床・壁を Unity 内で組めるので、プロトタイピングに最適:
- Package Manager で ProBuilder をインストール
- Tools → ProBuilder → ProBuilder Window
- Cube / Stairs / Cylinder などのプリミティブを配置
- 頂点・辺・面を選択して押し出し・分割・マテリアル設定
描画コールの最適化
Static Batching
静的なメッシュは Inspector で Static にチェック → Player 設定で Static Batching ON → ビルド時に自動結合されドローコールが減ります。
Dynamic Batching
頂点数 300 以下のメッシュは同マテリアルなら自動でバッチ化。条件は厳しいが効果大。
GPU Instancing
同じメッシュを大量に描画する場合 (草・木・パーティクル) は、マテリアルで Enable GPU Instancing をチェックすると 1 ドローコールに統合できます。
// 100 個の同じメッシュを高速描画
using UnityEngine;
public class GrassRenderer : MonoBehaviour {
public Mesh grassMesh;
public Material grassMat;
Matrix4x4[] matrices = new Matrix4x4[1023];
void Start() {
for (int i = 0; i < matrices.Length; i++) {
matrices[i] = Matrix4x4.TRS(
new Vector3(Random.value * 100, 0, Random.value * 100),
Quaternion.identity,
Vector3.one);
}
}
void Update() {
// 1 ドローコールで 1023 個描画
Graphics.DrawMeshInstanced(grassMesh, 0, grassMat, matrices);
}
}
Combine Meshes
using UnityEngine;
[RequireComponent(typeof(MeshFilter))]
public class MeshCombiner : MonoBehaviour {
void Start() {
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
CombineInstance[] combine = new CombineInstance[meshFilters.Length];
for (int i = 0; i < meshFilters.Length; i++) {
combine[i].mesh = meshFilters[i].sharedMesh;
combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
meshFilters[i].gameObject.SetActive(false);
}
var mesh = new Mesh();
mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
mesh.CombineMeshes(combine);
GetComponent<MeshFilter>().mesh = mesh;
gameObject.SetActive(true);
}
}
Mesh Compression
FBX をインポートしたとき、Inspector の Mesh Compression を設定するとファイルサイズが減ります (Off / Low / Medium / High)。ただし座標精度が落ちるので、大きいモデルでは見た目崩れに注意。
Optimize Mesh
Inspector の Optimize Mesh をチェックすると、GPU が効率良く扱える頂点順に並べ替えられます。デフォルト ON 推奨。
FAQ
Q: 表示されない
A: Mesh Filter にメッシュがアサインされていない、Mesh Renderer のマテリアルが未設定、法線が逆向き、カメラの Far Clip より遠い等を順に確認。
Q: 衝突しない
A: Mesh Collider 未追加 or convex 未チェック (Rigidbody との衝突は convex 必須)。
Q: ドローコールを減らしたい
A: Static Batching → GPU Instancing → Combine Meshes → LOD Group の順で導入を検討。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?