XGRIDSドキュメント
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Lixel PortalCam シリーズ

    • PortalCam P1

      • 製品概要
      • デバイスの基本操作
      • LCC Scan App の使用
      • メンテナンスとお手入れ
      • FAQ
  • Lixel K シリーズ

    • Lixel K1

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得する
      • マップフュージョン
      • 典型的なシーンにおける経路計画の推奨
      • 注意事項
      • FAQ
    • Lixel K2

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得
      • マップフュージョン
      • 典型的なシーンにおける経路計画の推奨
      • 注意事項
      • FAQ
  • Lixel L シリーズ

    • Lixel L2 Pro

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得する
      • 実時計測機能
      • 付録
      • FAQ
    • Lixel L3

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標点群データの取得
      • 付録
  • アクセサリー

    • Stick Light

      • 取り付けガイド
      • 基本操作
      • よくある質問
  • Lixel Studio

    • バージョンと著作権
    • インストールとアクティベーション
    • ソフトウェアインターフェース
    • ファイル操作
    • プロジェクト処理
    • ツール
    • 2D 作図
    • 業界応用
    • 設定
    • デバイス接続
    • よくある質問
  • Lixel CyberColor

    • LCC Studio

      • はじめに
      • バージョンと更新
      • ダウンロードとインストール
      • インターフェース概要とナビゲーション
      • 再構築前の準備
      • モデル再構築
      • 単一モデル再構築
      • 地図合成
      • 空地融合
      • 航空撮影再構築
      • マイモデル
      • その他の機能
      • 設定とアカウント
      • Converter
      • 動画再構築
      • よくある質問 / FAQ
    • LCC Scene Editor

      • バージョンと更新情報
      • アカウントとサインイン
      • 製品概要とホーム画面
      • エディター画面
      • ナビゲーションモード
      • ファイル
      • 設定
      • 編集
      • ウィンドウ
      • グローバルツールバー
      • アセットとプロパティ
      • 左ツールバー
      • ビューポイント
      • ポータル
      • スカイボックス
      • アノテーション
      • 測定
      • フライスルー
      • シーンレポート
      • 3D レイアウト
      • ミニマップ
      • プレビューモード(Viewer)
      • ヘルプ
      • よくある質問(FAQ)
      • スポーンポイント
    • LCC Model Editor

      • バージョンと更新
      • ユーザーガイド
      • 概要とインターフェース
      • ファイル操作
      • セレクター
      • モデルの編集
      • 測定
      • カラーグレーディング
      • アセット管理
      • 設定とヘルプ
      • よくある質問
    • Capture Guide

      • 概要
      • 撮影デバイス概要
      • 一般的な撮影の原則
      • 屋内シーンの撮影
      • 屋外シーンの撮影
      • 大規模撮影(マップフュージョン)
      • 空地マップフュージョン撮影
      • オブジェクト撮影
      • 人物撮影
      • ビデオ再構築撮影
      • HD Enhancement
      • 制御点(Lixel P1)
      • FAQ とトラブルシューティング
    • LCC Studio Linux

      • 製品概要説明
      • 基本アーキテクチャマニュアル
      • インストールと展開説明書
      • コンテナ起動パラメータ説明書
      • CodeMeter オフラインライセンス展開説明書
      • APIコマンドセット
      • 付録-開発者データマニュアル
      • 付録-エラーコード一覧
      • シングルノードマルチGPUクラスタ展開QuickStart
    • 活用テクニック

      • 複数の大規模 3DGS モデルの統合ワークフロー
    • バージョン履歴
  • プラグインと SDK

    • Unreal

      • 概要
      • クイックスタート - Windows
      • クイックスタート - Linux
      • クイックスタート - Quest3
      • エディションとライセンス
      • レンダリング
      • Tiled ラスタライズ(実験的機能)
      • 画面調節
      • 法線とライティング
      • シーン編集
      • パフォーマンスパラメーター
      • パフォーマンス最適化ガイド
      • サードパーティおよびエンジンプラグインとの連携
      • プロキシメッシュ
      • 読み込みアニメーション
      • コリジョン
      • ナビゲーションシステム対応
      • Single layer water 対応
      • ローカライズ
      • よくある質問
      • トラブルシューティング
      • ログと診断
      • お問い合わせ
      • ベストプラクティス

        • LixelStudio メッシュで 3DGS をリライティングする
      • API リファレンス

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG / SPZ / PLY Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • 更新履歴

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • Unity

      • Unity SDK の概要
      • 技術的特徴
      • 開発環境の要件
      • PC クイックスタートガイド
      • プロジェクト設定の最適化ガイド
      • Pico 4 Ultra 開発ガイド
      • Pico 4 Ultra PC ストリーミングガイド
      • Quest 3 開発ガイド
      • Quest 3 PC ストリーミングガイド
      • OpenXR 開発ガイド
      • Pico 4 Ultra Business Streaming ガイド
      • 用語集
      • FAQ
      • お問い合わせ
      • 機能開発ガイド

        • 複数シーン混合レンダリング開発ガイド
        • 影の受光開発ガイド
        • リアルタイムライティング開発ガイド
        • マルチカメラレンダリング開発ガイド
        • 高解像度画像レンダリング開発ガイド
        • LCC / LCC2 データ形式互換性開発ガイド
        • 読み込みエフェクト開発ガイド
        • Mip レンダリングモード切り替え開発ガイド
        • エッジ・コーナースナップ開発ガイド
        • 投影デカール開発ガイド
        • ビデオ投影デカール開発ガイド
        • ハイライト開発ガイド
        • リアルタイムクリッピング開発ガイド
        • カラー調整開発ガイド
        • シーン Mesh データ取得開発ガイド
        • エディターモード開発ガイド
        • レンダリングパフォーマンスパラメータ設定ガイド
        • アプリケーションとデータの同梱パッケージ開発ガイド
        • コリジョンシステム開発ガイド
        • macOS 開発の権限問題ガイド
        • iOS デバイスのコンパイル・パッケージ化開発ガイド
      • API リファレンス

        • LCCManager
        • Renderer
        • データ型
      • 変更履歴

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
    • Web

      • はじめに
      • レンダリング性能最適化ガイド
      • グラフィックス設定
      • よくある質問
      • API リファレンス

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • 更新履歴

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0

影の受光開発ガイド

LCC Unity SDK は、Mesh オブジェクトから 3DGS サーフェスへ動的に影を落とすことで、より良いライティング効果を実現します。以下に動的な影を実装する完全な手順を説明します。

手順 1:シーンと GameObject を作成する

Unity で新しいシーンを作成します。Unity はデフォルトで Main Camera と Directional Light を作成します。

Main Camera をセットアップする

Hierarchy ウィンドウで Main Camera を選択し、Inspector ウィンドウでそのプロパティを以下のとおり設定します。

Main Camera のプロパティを設定

Main Camera のプロパティを設定

LCCManager を作成する

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

LCCManager GameObject を作成し LCCManager スクリプトを追加

LCCManager GameObject を作成し LCCManager スクリプトを追加

LCCRenderer を作成する

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

LCCRenderer を作成し Transform を設定

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 で影が有効であることを確認

Directional Light で影が有効であることを確認

手順 2:Render Feature を追加する

  1. Unity メニューバーで File → Project Settings を選択し、左側の Graphics を選び、現在の Default Render Pipeline Asset を確認します。この例では URP(Universal Render Pipeline Asset)を使用します。
Graphics 設定で Default Render Pipeline Asset を確認

Graphics 設定で Default Render Pipeline Asset を確認

  1. その Asset をクリックし、Project ウィンドウで対応するアセットファイルを特定し、関連付けられた Renderer(この例では URP_Renderer.asset)を見つけます。

  2. その Renderer アセットファイルを選択し、Inspector ウィンドウで Add Renderer Feature をクリックし、Splat Shadow Mask Feature を追加します。

URP Renderer に 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:スクリプトをアタッチしてデータパスを設定する

  1. LCCShadow.cs スクリプトを Hierarchy ウィンドウの LCCRenderer GameObject にアタッチします。
  2. Inspector ウィンドウで LCCManager GameObject をスクリプトの Manager プロパティへドラッグします。
  3. スクリプトの File Path プロパティに LCC ファイルパスを入力します。

手順 5:影を落とす Mesh オブジェクトを作成する

  1. シーンに Cube オブジェクトを作成し、Cast Shadows = On であることを確認します。
  2. Cube を適切な位置に移動して、3DGS サーフェスに落ちる影を観察できるようにします。

手順 6:実行する

Game ウィンドウの Play ボタンをクリックし、Cube をリアルタイムに移動して落とす動的な影を観察します。

実行後に Cube が 3DGS サーフェスへ動的な影を落とす様子

実行後に Cube が 3DGS サーフェスへ動的な影を落とす様子

FAQ:互換モードを無効にする

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

Render Graph 互換モードにチェックしない

Render Graph 互換モード(Render Graph Disabled)にチェックしない

重要な手順

Mesh オブジェクトから 3DGS サーフェスへ影を落とすための重要な手順は以下のとおりです。

  1. シーンに影を有効にした Directional Light があることを確認します。
  2. シーンに Cast Shadows = On で影を落とす Mesh オブジェクト があることを確認します。
  3. URP Renderer に Splat Shadow Mask Feature が追加されていることを確認します。
  4. 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 点群サーフェスに落とせます。

パラメータ型説明
enablebool影を受光するかどうか

使用例:

m_manager.SetShadowReceive(true);

注:

  • デフォルトでは無効です。
  • シーンに影を落とす Mesh オブジェクトと Directional Light が必要です。
  • 有効にすると、_SPLAT_SHADOW_ON シェーダーキーワードが有効になります。

SetShadowColor

// 戻り値: void
public void SetShadowColor(Color color)

影領域の色を設定します。

パラメータ型説明
colorColor影の色(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 は最も強い影を意味します。

パラメータ型説明
strengthfloat影の強さ。範囲 [0, 1]

使用例:

m_manager.SetShadowStrength(0.8f);

注:

  • デフォルト値は 1.0 です。
  • 範囲 [0, 1]。範囲外の値は自動でクランプされます。
  • 先に SetShadowReceive(true) を有効化する必要があります。