マルチカメラレンダリング開発ガイド
LCC Unity SDK は、単一シーンの 全量レンダリング モードで複数のカメラを同時にレンダリングすることに対応しています。以下では、メインカメラ 1 台とサブカメラ 2 台の例を使って、マルチカメラレンダリングを実装する完全な手順を説明します。
手順 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 ウィンドウの空の領域を右クリックして 2 台の追加レンダリングカメラを作成し、それぞれ Camera01 と Camera02 と名前を付け、これら 2 台のカメラのプロパティを以下のとおり設定します。

Camera01 のプロパティを設定

Camera02 のプロパティを設定
この例では、2 台のカメラの Viewport Rect を、メインレンダリングウィンドウの 左下隅 と 右下隅 に配置するよう設定します。
手順 2:マルチカメラスクリプトを書く
MultiCamera.cs という名前の新しい C# スクリプトを以下のコードで作成します。
using LCCCore;
using UnityEngine;
public class MultiCamera : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath01;
public Camera m_camera01;
public Camera m_camera02;
public Transform m_transform01;
private LCCCore.Renderer m_renderer01;
private int m_currentFileIndex = 0;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);
Debug.Log("開始しました ");
m_renderer01 = m_manager.GetRender(m_transform01);
m_currentFileIndex = 0;
m_renderer01.Load(m_FilePath01, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] ファイル {m_currentFileIndex} の読み込み進捗: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] ファイル {m_currentFileIndex} を読み込みました");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
注:
- サブカメラは LCC シーンの読み込み完了後 に登録する必要があるため、
AddCameraはonCompleteコールバックで呼び出します。- スクリプトファイル名はクラス名と一致させる必要があります(
MultiCamera.csはclass MultiCameraに対応)。一致しないと GameObject にアタッチできません。- メインカメラは
SetMainCameraで設定し、サブカメラはAddCameraで追加します。メインカメラをサブカメラとして追加することはできません。
手順 3:スクリプトをアタッチしてプロパティを設定する
MultiCamera.csスクリプトを Hierarchy ウィンドウの LCCRenderer GameObject にアタッチします。- Inspector ウィンドウで LCCManager GameObject をスクリプトの Manager プロパティへドラッグします。
- Camera01 と Camera02 GameObject を、それぞれスクリプトの Camera01 と Camera02 プロパティへドラッグします。
- スクリプトの File Path01 プロパティに LCC ファイルパスを入力します。

MultiCamera スクリプトをアタッチして Inspector でプロパティを設定
手順 4:実行する
Game ウィンドウの Play ボタンをクリックすると、シーン内の複数レンダリングカメラによるリアルタイムレンダリング効果を確認できます。

実行後に複数のレンダリングカメラが同時にレンダリングする様子
重要な手順
マルチカメラレンダリングを実装するための重要な手順は以下のとおりです。
- シーンが 単一シーンの全量レンダリング モードであることを確認します(
SwitchRenderPass(ActiveRenderMode.SingleRender)かつデータが Full Load パスを通ること)。 - メインカメラは
SetMainCameraで設定し、サブカメラは シーンの読み込み完了後(onCompleteコールバック内)にAddCameraで登録します。 - 各カメラの画面上のレンダリング領域を Viewport Rect で制御します。
- オブジェクト破棄時(
OnDestroy)にはRemoveCameraでサブカメラを削除し、ぶら下がり参照を防ぎます。
マルチカメラレンダリングの注意事項
全量レンダリングモードのみ対応。 LCC SDK は現在、単一シーンでの全量レンダリングモードのマルチカメラレンダリングのみ対応しています。パフォーマンス最適化のため、チャンクレンダリングモードでは SDK はカメラフラスタム内の可視データのみを読み込み・レンダリングし、高性能を追求するため CPU 側のシーンノードデータフィルタリング、データ組み立て、CPU から GPU へのデータアップロードはすべて非同期のため、同一フレーム内で複数カメラのデータを個別に処理・レンダリングできません。
シーンが全量レンダリング状態であることを確認する。 完全なマルチカメラレンダリング機能を使用するには、シーンを全量レンダリング(Full Load)モードに設定します。
ActiveRenderMode.SingleRenderを使用し、Renderer で全量レンダリングを有効にします(Renderer.SetRenderAll(true)。これは次のLoad()で有効になります)。レンダリングモードとパフォーマンスパラメータの詳細は PC クイックスタートガイド を参照してください。カメラが多いほどパフォーマンスコストが高い。 追加のレンダリングカメラごとに 1 つの完全なレンダリングパスが追加されるため、性能が相応に低下します。マルチカメラレンダリングは高性能な PC デバイスで推奨します。
PC/Mac のみ対応。
AddCamera/RemoveCameraは PC/Mac プラットフォームでのみ有効です。
マルチカメラ API
LCC Unity SDK は、LCCManager を通じて以下のカメラ関連 API を提供します。サブカメラは LCC シーンの読み込み完了後(つまり onComplete コールバック内)に AddCamera で登録する必要があります。
SetMainCamera
// 戻り値: void
public void SetMainCamera(Camera _cam)
メインレンダリングカメラを設定します。LCC はこのカメラをフラスタムカリング、LOD 選択、ソートなどの操作に使用します。
| パラメータ | 型 | 説明 |
|---|---|---|
_cam | Camera | メインレンダリングカメラ。null を渡すとクリア |
使用例:
m_manager.SetMainCamera(Camera.main);
注:
Renderer.Load()の前に設定する必要があります。- カメラを切り替える際に再度呼び出します。
- PC/Mac のみ対応。
nullを渡すとメインカメラをクリアします。
AddCamera
// 戻り値: void
public void AddCamera(Camera _cam)
サブカメラを追加します。サブカメラはレンダリングに参加しますが、LOD 選択には影響しません。
| パラメータ | 型 | 説明 |
|---|---|---|
_cam | Camera | サブカメラ |
使用例:
m_manager.AddCamera(m_camera01);
注:
- PC/Mac のみ対応。
- メインカメラをサブカメラとして追加することはできません。
- LOD 選択はメインカメラのみで決定されます。サブカメラはメインカメラがフィルタリングしたデータを再利用してレンダリングします。
RemoveCamera
// 戻り値: void
public void RemoveCamera(Camera _cam)
以前追加したサブカメラを削除します。
| パラメータ | 型 | 説明 |
|---|---|---|
_cam | Camera | 削除するサブカメラ |
使用例:
m_manager.RemoveCamera(m_camera01);
注:
- PC/Mac のみ対応。
- オブジェクト破棄時(
OnDestroy)に呼び出してサブカメラ参照をクリーンアップすることを推奨します。