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 は、単一シーンの 全量レンダリング モードで複数のカメラを同時にレンダリングすることに対応しています。以下では、メインカメラ 1 台とサブカメラ 2 台の例を使って、マルチカメラレンダリングを実装する完全な手順を説明します。

手順 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 データの座標系」を参照してください。

サブレンダリングカメラを作成する

Hierarchy ウィンドウの空の領域を右クリックして 2 台の追加レンダリングカメラを作成し、それぞれ Camera01 と Camera02 と名前を付け、これら 2 台のカメラのプロパティを以下のとおり設定します。

Camera01 のプロパティを設定

Camera01 のプロパティを設定

Camera02 のプロパティを設定

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:スクリプトをアタッチしてプロパティを設定する

  1. MultiCamera.cs スクリプトを Hierarchy ウィンドウの LCCRenderer GameObject にアタッチします。
  2. Inspector ウィンドウで LCCManager GameObject をスクリプトの Manager プロパティへドラッグします。
  3. Camera01 と Camera02 GameObject を、それぞれスクリプトの Camera01 と Camera02 プロパティへドラッグします。
  4. スクリプトの File Path01 プロパティに LCC ファイルパスを入力します。
MultiCamera スクリプトをアタッチしてプロパティを設定

MultiCamera スクリプトをアタッチして Inspector でプロパティを設定

手順 4:実行する

Game ウィンドウの Play ボタンをクリックすると、シーン内の複数レンダリングカメラによるリアルタイムレンダリング効果を確認できます。

実行後に複数のカメラが同時にレンダリングする様子

実行後に複数のレンダリングカメラが同時にレンダリングする様子

重要な手順

マルチカメラレンダリングを実装するための重要な手順は以下のとおりです。

  1. シーンが 単一シーンの全量レンダリング モードであることを確認します(SwitchRenderPass(ActiveRenderMode.SingleRender) かつデータが Full Load パスを通ること)。
  2. メインカメラは SetMainCamera で設定し、サブカメラは シーンの読み込み完了後(onComplete コールバック内)に AddCamera で登録します。
  3. 各カメラの画面上のレンダリング領域を Viewport Rect で制御します。
  4. オブジェクト破棄時(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 選択、ソートなどの操作に使用します。

パラメータ型説明
_camCameraメインレンダリングカメラ。null を渡すとクリア

使用例:

m_manager.SetMainCamera(Camera.main);

注:

  • Renderer.Load() の前に設定する必要があります。
  • カメラを切り替える際に再度呼び出します。
  • PC/Mac のみ対応。
  • null を渡すとメインカメラをクリアします。

AddCamera

// 戻り値: void
public void AddCamera(Camera _cam)

サブカメラを追加します。サブカメラはレンダリングに参加しますが、LOD 選択には影響しません。

パラメータ型説明
_camCameraサブカメラ

使用例:

m_manager.AddCamera(m_camera01);

注:

  • PC/Mac のみ対応。
  • メインカメラをサブカメラとして追加することはできません。
  • LOD 選択はメインカメラのみで決定されます。サブカメラはメインカメラがフィルタリングしたデータを再利用してレンダリングします。

RemoveCamera

// 戻り値: void
public void RemoveCamera(Camera _cam)

以前追加したサブカメラを削除します。

パラメータ型説明
_camCamera削除するサブカメラ

使用例:

m_manager.RemoveCamera(m_camera01);

注:

  • PC/Mac のみ対応。
  • オブジェクト破棄時(OnDestroy)に呼び出してサブカメラ参照をクリーンアップすることを推奨します。