影の受光開発ガイド
LCC Unity SDK は、Mesh オブジェクトから 3DGS サーフェスへ動的に影を落とすことで、より良いライティング効果を実現します。以下に動的な影を実装する完全な手順を説明します。
手順 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 データの座標系」を参照してください。
Directional Light の影を有効にする
Hierarchy ウィンドウで Directional Light GameObject を選択し、Inspector ウィンドウで影が有効であることを確認します。

Directional Light で影が有効であることを確認
手順 2:Render Feature を追加する
- Unity メニューバーで File → Project Settings を選択し、左側の Graphics を選び、現在の Default Render Pipeline Asset を確認します。この例では URP(Universal Render Pipeline Asset)を使用します。

Graphics 設定で Default Render Pipeline Asset を確認
その Asset をクリックし、Project ウィンドウで対応するアセットファイルを特定し、関連付けられた Renderer(この例では
URP_Renderer.asset)を見つけます。その Renderer アセットファイルを選択し、Inspector ウィンドウで Add Renderer Feature をクリックし、Splat Shadow Mask Feature を追加します。

URP Renderer に Splat Shadow Mask Feature を追加
手順 3:影の受光を有効にするスクリプトを書く
LCCShadow.cs という名前の新しい C# スクリプトを以下のコードで作成します。
using LCCCore;
using UnityEngine;
public class LCCShadow : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);
Debug.Log("開始しました ");
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] ファイルを読み込みました");
m_manager.SetShadowReceive(true);
//m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
//m_manager.SetShadowStrength(0.5f);
}
}
注:
影の受光は LCC シーンの読み込み完了後 に有効化する必要があるため、
SetShadowReceive(true)はonCompleteコールバックで呼び出します。
手順 4:スクリプトをアタッチしてデータパスを設定する
LCCShadow.csスクリプトを Hierarchy ウィンドウの LCCRenderer GameObject にアタッチします。- Inspector ウィンドウで LCCManager GameObject をスクリプトの Manager プロパティへドラッグします。
- スクリプトの File Path プロパティに LCC ファイルパスを入力します。
手順 5:影を落とす Mesh オブジェクトを作成する
- シーンに Cube オブジェクトを作成し、Cast Shadows = On であることを確認します。
- Cube を適切な位置に移動して、3DGS サーフェスに落ちる影を観察できるようにします。
手順 6:実行する
Game ウィンドウの Play ボタンをクリックし、Cube をリアルタイムに移動して落とす動的な影を観察します。

実行後に Cube が 3DGS サーフェスへ動的な影を落とす様子
FAQ:互換モードを無効にする
Unity の Console ウィンドウにエラーが報告され、影が表示されない場合は、互換モードを無効にします。Edit → Project Settings → Graphics から設定パネルを開き、URP タブを選択し、Render Graph → Compatibility Mode (Render Graph Disabled) の後ろのチェックボックスにチェックを入れないでください。

Render Graph 互換モード(Render Graph Disabled)にチェックしない
重要な手順
Mesh オブジェクトから 3DGS サーフェスへ影を落とすための重要な手順は以下のとおりです。
- シーンに影を有効にした Directional Light があることを確認します。
- シーンに Cast Shadows = On で影を落とす Mesh オブジェクト があることを確認します。
- URP Renderer に Splat Shadow Mask Feature が追加されていることを確認します。
- LCC シーンの読み込み完了後 にコードで影の受光が有効化されていることを確認します(
SetShadowReceive(true))。
影関連 API
LCC Unity SDK は、LCCManager を通じて以下の 3 つの影関連 API を提供します。いずれも LCC シーンの読み込み完了後(つまり onComplete コールバック内)に呼び出す必要があり、SetShadowColor() / SetShadowStrength() は SetShadowReceive(true) を有効化した後でのみ効果があります。
SetShadowReceive
// 戻り値: void
public void SetShadowReceive(bool enable)
点群の影受光を切り替えます。有効にすると、シーン内の Mesh オブジェクトの影を 3DGS 点群サーフェスに落とせます。
| パラメータ | 型 | 説明 |
|---|---|---|
enable | bool | 影を受光するかどうか |
使用例:
m_manager.SetShadowReceive(true);
注:
- デフォルトでは無効です。
- シーンに影を落とす Mesh オブジェクトと Directional Light が必要です。
- 有効にすると、
_SPLAT_SHADOW_ONシェーダーキーワードが有効になります。
SetShadowColor
// 戻り値: void
public void SetShadowColor(Color color)
影領域の色を設定します。
| パラメータ | 型 | 説明 |
|---|---|---|
color | Color | 影の色(RGBA) |
使用例:
m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));
注:
- デフォルト値は
(0.3, 0.3, 0.3, 1)です。 - 先に
SetShadowReceive(true)を有効化する必要があります。
SetShadowStrength
// 戻り値: void
public void SetShadowStrength(float strength)
影の強さを設定します。0 は影なし、1 は最も強い影を意味します。
| パラメータ | 型 | 説明 |
|---|---|---|
strength | float | 影の強さ。範囲 [0, 1] |
使用例:
m_manager.SetShadowStrength(0.8f);
注:
- デフォルト値は
1.0です。 - 範囲
[0, 1]。範囲外の値は自動でクランプされます。 - 先に
SetShadowReceive(true)を有効化する必要があります。