複数シーン混合レンダリング開発ガイド
複数シーン混合レンダリングとは、複数の LCC シーンを同時に作成し、それらのレンダリングをリアルタイムに混合して、正しいオクルージョンとブレンドを実現することです。レンダリングに参加する各 LCC シーンを独立して制御するには、複数の Renderer を作成し、各 Renderer を独立した GameObject にアタッチして、各 LCC シーンの Transform を個別に制御できるようにします。
手順 1:シーンと GameObject を作成する
Unity で新しいシーンを作成します。Unity はデフォルトで Main Camera と Directional Light を作成します。
LCCManager を作成する
Hierarchy ウィンドウの空の領域を右クリックし、ポップアップメニューから Create Empty を選択して空の GameObject を作成し、LCCManager と名前を付け、その Transform を正規化し、Add Component で LCCManager スクリプトを追加します。

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

LCCRenderer01 を作成し Transform(Rotation.x = -90、Scale.x = -1)を設定
LCCRenderer02 を作成する
同じ方法で別の空の GameObject を作成し、LCCRenderer02 と名前を付け、同様にその Transform を Rotation.x = -90、Scale.x = -1 に設定します。

LCCRenderer02 を作成し Transform(Rotation.x = -90、Scale.x = -1)を設定
注:
LCCRenderer GameObject の Transform 設定(Rotation.x = -90、Scale.x = -1)は、LCC データ座標系にアライメントするためのものです。座標系アライメントの詳細は Unity SDK の概要 の「LCC データの座標系」を参照してください。
手順 2:複数シーンレンダリングスクリプトを書く
MultiRenderer.cs という名前の新しい C# スクリプトを以下のコードで作成します。
using LCCCore;
using UnityEngine;
public class MultiRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath01;
public Transform m_transform01;
public string m_FilePath02;
public Transform m_transform02;
private LCCCore.Renderer m_renderer01;
private LCCCore.Renderer m_renderer02;
private int m_currentFileIndex = 0;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
// MultiRender モードに切り替えて複数の Renderer を同時にアクティブ化・混合できるようにする
m_manager.SwitchRenderPass(ActiveRenderMode.MultiRender);
Debug.Log("開始しました ");
m_renderer01 = m_manager.GetRender(m_transform01);
m_renderer02 = m_manager.GetRender(m_transform02);
m_currentFileIndex = 0;
m_renderer01.Load(m_FilePath01, onProgress, onComplete);
m_currentFileIndex = 1;
m_renderer02.Load(m_FilePath02, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] ファイル {m_currentFileIndex} の読み込み進捗: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] ファイル {m_currentFileIndex} を読み込みました");
}
}
手順 3:スクリプトをアタッチしてプロパティを設定する
MultiRenderer.csスクリプトを Hierarchy ウィンドウの LCCManager GameObject にアタッチします。- Inspector ウィンドウで、以下の表に従って参照とパスを割り当てます。
| スクリプトのプロパティ | 割り当て |
|---|---|
| Manager | LCCManager GameObject をこのプロパティへドラッグ |
| Transform01 | LCCRenderer01 GameObject をこのプロパティへドラッグ |
| Transform02 | LCCRenderer02 GameObject をこのプロパティへドラッグ |
| File Path01 | 1 つ目の LCC データソースのパス |
| File Path02 | 2 つ目の LCC データソースのパス |

Inspector で MultiRenderer スクリプトの参照とデータパスを設定
手順 4:実行する
Game ウィンドウの Play ボタンをクリックすると、2 つの LCC シーンが同時にレンダリングされ混合されます。LCCRenderer01 または LCCRenderer02 GameObject の Transform 値を変更すると、各レンダリングシーンがリアルタイムに更新されます。

実行後に 2 つの LCC シーンが同時にレンダリング・混合された様子
要点
複数 LCC シーン混合レンダリングの開発には 2 つの要点があります。
- MultiRender モードに切り替える:
m_manager.SwitchRenderPass(ActiveRenderMode.MultiRender);を使用して複数の LCC シーンの混合を許可します。デフォルトはSingleRenderモードで、複数 LCC シーンの混合は許可されません。 - 各 Renderer を独立した GameObject にアタッチする:
GetRender(Transform)を使用して各 Renderer を独立した GameObject にバインドし、各 LCC シーンの Transform を個別に制御できるようにします。