Mip レンダリングモード切り替え開発ガイド
Mip と Non-Mip は、3DGS を再構築・レンダリングする 2 つの技術パスです。再構築とレンダリングが同じ技術パスを使用する場合に、レンダリング効果が最も良くなります。LCC Unity SDK は実行時にレンダリングモードを動的に切り替えることに対応しています。完全な手順を以下に説明します。
手順 1:シーンと GameObject を作成する
Unity で新しいシーンを作成します。Unity はデフォルトで Main Camera と Directional Light を作成します。
Main Camera をセットアップする
Hierarchy ウィンドウで Main Camera を選択し、Inspector ウィンドウでそのプロパティを以下のとおり設定します。

Main Camera のプロパティを設定
LCCManager を作成する
Hierarchy ウィンドウの空の領域を右クリックし、ポップアップメニューから Create Empty を選択して空の GameObject を作成し、LCCManager と名前を付け、その Transform を正規化し、Add Component で LCCManager スクリプトを追加します。

LCCManager GameObject を作成し LCCManager スクリプトを追加
LCCRenderer を作成する
Hierarchy ウィンドウの空の領域を右クリックし、Create Empty を選択して空の GameObject を作成し、LCCRenderer と名前を付け、その Transform を Rotation.x = -90、Scale.x = -1 に設定します。

LCCRenderer を作成し Transform(Rotation.x = -90、Scale.x = -1)を設定
注:
LCCRenderer GameObject の Transform 設定(Rotation.x = -90、Scale.x = -1)は、LCC データ座標系にアライメントするためのものです。座標系アライメントの詳細は Unity SDK の概要 の「LCC データの座標系」を参照してください。
切り替えボタンを作成する
Hierarchy ウィンドウの空の領域を右クリックし、ポップアップメニューから UI → Button を選択して、BtnMipSwitch という名前の Button を作成します。
手順 2:レンダリングモードを切り替えるスクリプトを書く
MipSwitch.cs という名前の新しい C# スクリプトを以下のコードで作成します。
using LCCCore;
using UnityEngine;
using UnityEngine.UI;
public class MipSwitch : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
public Button m_BtnMipSwitch;
private LCCCore.Renderer m_renderer;
private MipMode m_mipMode;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
Debug.Log("開始しました ");
// Edit モードに入る必要がある
m_manager.SetEditorMode(true);
m_mipMode = MipMode.Mip;
m_BtnMipSwitch.onClick.AddListener(onMipSwitch);
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] ファイルの読み込み進捗: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] ファイルを読み込みました");
}
private void onMipSwitch()
{
if (m_mipMode == MipMode.Mip)
{
m_mipMode = MipMode.Non_Mip;
}
else
{
m_mipMode = MipMode.Mip;
}
m_manager.SetMipMode(m_mipMode);
}
}
注:
この例では
StartでMipMode.Mipに初期化し、BtnMipSwitch のクリックイベントをバインドします。クリックごとにMipとNon_Mipを切り替え、SetMipMode()で即時反映されます。
手順 3:スクリプトをアタッチしてプロパティを設定する
MipSwitch.csスクリプトを Hierarchy ウィンドウの LCCManager GameObject にアタッチします。- Inspector ウィンドウで LCCManager GameObject をスクリプトの Manager プロパティへドラッグします。
- スクリプトの File Path プロパティに LCC ファイルパスを入力します。
- BtnMipSwitch ボタンをスクリプトの Btn Mip Switch プロパティへドラッグします。

MipSwitch スクリプトをアタッチして Manager、File Path、BtnMipSwitch プロパティを設定
手順 4:実行する
Game ウィンドウの Play ボタンをクリックし、BtnMipSwitch ボタンをクリックすると、シーンのレンダリングが Mip モードと Non-Mip モードの間でリアルタイムに切り替わります。

実行後、ボタンをクリックすると Mip / Non-Mip レンダリングモードがリアルタイムに切り替わる
選定の推奨
- 3DGS の再構築と 3DGS のレンダリングが同じ技術パスを使用する場合のみ、レンダリング効果が最も良くなります。
- Non-Mip モードに切り替えると、通常はレンダリングの詳細が良くなりますが、レンダリング性能はある程度影響を受けます。
Mip 関連 API
LCC Unity SDK は、LCCManager を通じて Mip レンダリングモード切り替えに関連する以下の API を提供します。
SetMipMode
// 戻り値: void
public void SetMipMode(MipMode _mipMode)
Mip レンダリングモードを切り替えます。Mip モードはミップマップサンプリングを使用し(デフォルト)、Non_Mip モードはミップマップを無効化します。
| パラメータ | 型 | 説明 |
|---|---|---|
_mipMode | MipMode | 目標モード。Mip または Non_Mip |
使用例:
m_manager.SetMipMode(MipMode.Non_Mip); // ミップマップを無効化
m_manager.SetMipMode(MipMode.Mip); // ミップマップを復元
注:
- 現在のモードが渡されたモードと同じ場合は、繰り返しオーバーヘッドなしで直接戻ります。
MipMode 列挙型は以下のように定義されています。
public enum MipMode { Mip, Non_Mip }
SetEditorMode
// 戻り値: void
public void SetEditorMode(bool _isEditor)
エディターモードを切り替えます。この例ではデータ読み込み前に SetEditorMode(true) を呼び出します。
| パラメータ | 型 | 説明 |
|---|---|---|
_isEditor | bool | エディターモードを有効にするかどうか |
使用例:
m_manager.SetEditorMode(true);
注:
- PC / Mac プラットフォームのみ対応。