タイトル: 3 Skyboxes
SEOタイトル: Unity 「3 Skyboxes」アセットの使い方と Skybox の基礎 (Material / Lighting / HDR)
| この記事の要点 |
|
3 Skyboxes アセットとは
Unity Asset Store にある無料の Skybox 素材パックです。3 種類の Skybox Material (青空 / 夕焼け / 夜空など) が同梱されており、Material をScene の Lighting Environment にセットするだけで背景が変わります。
初学者が Skybox の差替えを試す素材として丁度よく、URP/Built-in どちらでもそのまま動くケースが多いです。
Skybox の仕組み
Skybox はカメラの遠景に常に張り付く擬似的な「無限遠の壁」です。実体ジオメトリではなく、フラグメントシェーダで方向ベクトルから色をサンプリングします。
| Shader | 必要なテクスチャ | 用途 |
|---|---|---|
Skybox/6 Sided | +X/-X/+Y/-Y/+Z/-Z の 6 枚 | 箱型キューブ素材 |
Skybox/Cubemap | Cubemap 1 枚 | ★ 推奨。HDR 対応 |
Skybox/Panoramic | 正距円筒 (Equirect) 1 枚 | 360° 画像 |
Skybox/Procedural | 不要 | 時間帯シミュ可 |
適用手順
1. Asset Store または Package Manager から「3 Skyboxes」を Import
2. Project ウィンドウで Skybox Material (例: SkyDay) を選択
Inspector で Shader が "Skybox/6 Sided" 等になっていることを確認
3. Window > Rendering > Lighting
Environment タブ > Skybox Material に SkyDay をドラッグ
4. Scene ビューで反映を確認
Generate Lighting (Bake) → Reflection に反映
スクリプトから動的に切替
using UnityEngine;
public class SkySwitcher : MonoBehaviour
{
public Material daySky;
public Material nightSky;
public void SwitchToNight()
{
RenderSettings.skybox = nightSky;
DynamicGI.UpdateEnvironment(); // Ambient & Reflection 更新
}
}
Lighting の関連設定
| 項目 | 役割 |
|---|---|
| Environment > Skybox Material | 背景 Material そのもの |
| Environment > Sun Source | Procedural Skybox の太陽を駆動する Directional Light |
| Environment Lighting > Source | ★ Skybox にすると Skybox からアンビエントを計算 |
| Environment Lighting > Intensity Multiplier | 環境光全体の強さ |
| Environment Reflections > Source | Skybox / Custom Cubemap |
| Environment Reflections > Resolution | 反射の解像度 (256 / 512 / 1024) |
Procedural Skybox の時間帯シミュ
// Skybox/Procedural を Material に設定済みの想定
[ExecuteAlways]
public class TimeOfDay : MonoBehaviour
{
public Material proceduralSky;
public Light sun;
[Range(0, 24)] public float hour = 12f;
void Update()
{
float angle = (hour / 24f) * 360f - 90f;
sun.transform.localRotation = Quaternion.Euler(angle, 170f, 0f);
// Atmosphere パラメータ
proceduralSky.SetFloat("_AtmosphereThickness",
Mathf.Lerp(0.4f, 1.0f, Mathf.Cos(angle * Mathf.Deg2Rad) * 0.5f + 0.5f));
DynamicGI.UpdateEnvironment();
}
}
HDR Skybox
暗部と明部のレンジが広い HDR (.hdr/.exr) を Cubemap として読み込むと、反射や Bloom が現実的になります。Eevee や HDRP の HDRI Sky は標準で HDR を扱います。
.hdr / .exr ファイルをインポート
Texture Inspector:
Texture Shape: Cube
Mapping: Auto (Latitude-Longitude Layout)
Convolution Type: Specular (Glossy Reflection)
→ Apply
Skybox Material の Shader を Skybox/Cubemap に
HDR Cubemap をドラッグ
無料・有料の代替アセット
| アセット | 価格 | 特徴 |
|---|---|---|
| 3 Skyboxes | 無料 | 3 種類のみ。学習向け |
| AllSky Free | 無料 | 10 種類。商用 OK |
| Wispy Skybox | 無料 | 柔らかい雲表現 |
| AllSky | 有料 | 200+ 種類 |
| Real Skybox (Free) | 無料 | HDR 対応 |
| Polyhaven HDRI | 無料 (CC0) | ★ 公式外のサイトで HDR 多数 |
パフォーマンス上の注意
- 6 Sided より Cubemap のほうがメモリ効率が良い
- Reflection の解像度は必要十分に。1024 は重い
- Skybox を頻繁に切替えると
UpdateEnvironment()のコスト発生 → クロスフェードはシェーダ側で - HDR Skybox はメモリ消費大。モバイルは LDR + Procedural が無難
FAQ
Q: Skybox が真っ黒で表示されない
A: Camera の Clear Flags が Skybox になっているか確認。Solid Color のままだと描画されません。
Q: Skybox を変えても反射が古いまま
A: DynamicGI.UpdateEnvironment() を呼ぶか、Lighting ウィンドウから Generate Lighting で Bake してください。
Q: URP / HDRP でも使える?
A: URP はそのまま動きます。HDRP は HDRI Sky / Procedural Sky の Volume Override を使うのが標準です。