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 は高解像度画像レンダリング、つまり表示解像度を超えるシーン画像のレンダリングに対応しています。たとえば表示解像度が 1920×1080 の場合でも、LCC Unity SDK は 3840×2160(4K)、2560×1440(2K)、1920×1080(1080p)、1280×720(720P)などの解像度の画像をレンダリングして生成できます。さまざまな解像度の画像をレンダリングすれば、高精細な画像や高精細なビデオを生成できます。以下では、4K 画像をレンダリングして JPG として保存する例を使って、高解像度画像レンダリングを実装する完全な手順を説明します。

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

手順 2:高解像度レンダリングスクリプトを書く

HDRecord.cs という名前の新しい C# スクリプトを以下のコードで作成します。

using System.IO;
using System.Collections;
using LCCCore;
using UnityEngine;

public class HDRecord : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;
    public Camera m_camera;

    private LCCCore.Renderer m_renderer;

    private const int HD_WIDTH = 3840;
    private const int HD_HEIGHT = 2160;
    private const string OUTPUT_DIR = @"G:\output";

    void Start()
    {
        m_manager.SetPlatformType(PlatformType.PC);
        m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);

        if (m_camera == null)
            m_camera = Camera.main;

        m_manager.SetMainCamera(m_camera);

        Debug.Log("[HDRecord] 開始、データを読み込み中...");
        m_renderer = m_manager.GetRender(this.transform);
        m_renderer.Load(m_FilePath, onProgress, onComplete);
    }

    private void onProgress(float _progress)
    {
        Debug.Log($"[HDRecord] 読み込み進捗: {_progress:P1}");
    }

    private void onComplete()
    {
        Debug.Log("[HDRecord] 読み込み完了、4K 録画モードを有効化...");

        float verticalFov = m_camera.fieldOfView;
        m_manager.SetRecordMode(true, new Vector2(HD_WIDTH, HD_HEIGHT), verticalFov);
        StartCoroutine(CaptureFrame());
    }

    private IEnumerator CaptureFrame()
    {
        // カメラが 4K 解像度でシーンのレンダリングを完了するのを待つために少し時間を置く
        yield return new WaitForSeconds(10);

        RenderTexture tempRT = RenderTexture.GetTemporary(HD_WIDTH, HD_HEIGHT, 24);
        RenderTexture preTarget = m_camera.targetTexture;
        Rect preRect = m_camera.rect;

        m_camera.targetTexture = tempRT;
        m_camera.rect = new Rect(0, 0, 1, 1);

        yield return new WaitForEndOfFrame();
        yield return new WaitForEndOfFrame();
        yield return new WaitForEndOfFrame();

        RenderTexture.active = tempRT;
        Texture2D tex = new Texture2D(HD_WIDTH, HD_HEIGHT, TextureFormat.RGB24, false);
        tex.ReadPixels(new Rect(0, 0, HD_WIDTH, HD_HEIGHT), 0, 0);
        tex.Apply();
        RenderTexture.active = null;

        m_camera.rect = preRect;
        m_camera.targetTexture = preTarget;
        RenderTexture.ReleaseTemporary(tempRT);

        byte[] jpgData = tex.EncodeToJPG(95);
        Destroy(tex);

        if (!Directory.Exists(OUTPUT_DIR))
            Directory.CreateDirectory(OUTPUT_DIR);

        string timestamp = System.DateTime.Now.ToString("yyyyMMdd_HHmmss");
        string filePath = Path.Combine(OUTPUT_DIR, $"HD4K_{timestamp}.jpg");
        File.WriteAllBytes(filePath, jpgData);

        Debug.Log($"[HDRecord] 4K 画像を保存しました: {filePath} ({jpgData.Length / 1024}KB)");

        m_manager.SetRecordMode(false, new Vector2(Screen.width, Screen.height), m_camera.fieldOfView);
        Debug.Log("[HDRecord] 録画モードを無効化し、通常のレンダリングを復元しました。");
    }
}

注:

  • 録画モードは LCC シーンの読み込み完了後 に有効化する必要があるため、SetRecordMode(true, ...) は onComplete コールバックで呼び出します。
  • 録画モードに入ると、SDK は固定解像度と垂直 FOV でレンダリングします。フレームキャプチャ前に数フレーム/数秒待って、シーンが目標解像度でレンダリングを完了していることを確認することを推奨します。
  • キャプチャ後、SetRecordMode(false, ...) を呼び出して通常のレンダリングを復元します。
  • スクリプトファイル名はクラス名と一致させる必要があります(HDRecord.cs は class HDRecord に対応)。一致しないと GameObject にアタッチできません。
  • 例の HD_WIDTH と HD_HEIGHT は出力解像度を決定し、必要に応じて 2K(2560×1440)、1080p(1920×1080)、720P(1280×720)などに変更できます。OUTPUT_DIR は出力ディレクトリで、書き込み権限のあるパスに変更してください。

手順 3:スクリプトをアタッチしてプロパティを設定する

  1. HDRecord.cs スクリプトを Hierarchy ウィンドウの LCCManager GameObject にアタッチします。
  2. Inspector ウィンドウで LCCManager GameObject をスクリプトの Manager プロパティへドラッグします。
  3. スクリプトの File Path プロパティに LCC ファイルパスを入力します。
  4. その他のプロパティ(Camera など)は自由に設定できます。空のままにすると、スクリプトは自動的に Camera.main を使用します。
HDRecord スクリプトをアタッチしてプロパティを設定

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

手順 4:実行する

Game ウィンドウの Play ボタンをクリックします。データ読み込み完了後、スクリプトは 4K 録画モードに入り、1 フレームをキャプチャして出力ディレクトリに JPG 画像として保存します。

この例では、画像を 4K でレンダリングして直接 JPG 画像として保存します。高精細ビデオとして保存したい場合は、連続してキャプチャした高解像度画像をビデオエンコードで高精細ビデオにエンコードできます。

重要な手順

高解像度画像レンダリングを実装するための重要な手順は以下のとおりです。

  1. SetMainCamera でメインレンダリングカメラを設定し、Renderer.Load() で LCC データを読み込みます。
  2. シーンの読み込み完了後(onComplete コールバック内)に、SetRecordMode(true, renderSize, verticalFov) で録画モードに入り、目標解像度と垂直 FOV を指定します。
  3. RenderTexture でカメラを目標解像度にレンダリングし、Texture2D.ReadPixels でピクセルを読み戻し、画像にエンコードして保存します。
  4. キャプチャ後、SetRecordMode(false, ...) で通常のレンダリングを復元します。

高解像度画像レンダリングの注意事項

  • PC/Mac のみ対応。 SetRecordMode は PC/Mac プラットフォームでのみ有効です。
  • 録画モードではカメラ焦点距離が固定されます。 録画モードに入ると、SDK は渡された固定解像度と垂直 FOV でレンダリングし、Camera コンポーネントに追従しなくなります。
  • 通常レンダリングを適時に復元する。 キャプチャまたは録画の終了後、SetRecordMode(false, ...) を呼び出して通常の解像度を復元します。さもないと、以降のレンダリングが録画解像度を使い続けます。
  • ビデオメモリとメモリのオーバーヘッドに注意。 解像度が高いほど、RenderTexture と Texture2D が占めるビデオメモリ/メモリが大きくなります。高解像度レンダリングは高性能な PC デバイスで推奨します。

録画関連 API

LCC Unity SDK は、LCCManager を通じて録画モード API を提供します。LCC シーンの読み込み完了後(つまり onComplete コールバック内)に呼び出す必要があります。

SetRecordMode

// 戻り値: void
public void SetRecordMode(bool isRecord, Vector2 renderSize, float verticalFov)

録画モードを設定します。録画モードでは固定解像度と FOV でレンダリングされ、高精細な画像・ビデオの録画に適しています。

パラメータ型説明
isRecordbool録画モードに入るかどうか
renderSizeVector2録画解像度(幅 × 高さ)。例:(3840, 2160)
verticalFovfloat垂直 FOV(視野角)

使用例:

// 4K 録画モードに入る
m_manager.SetRecordMode(true, new Vector2(3840, 2160), 60f);

// 録画を終了して通常のレンダリングを復元
m_manager.SetRecordMode(false, new Vector2(Screen.width, Screen.height), m_camera.fieldOfView);

注:

  • PC/Mac のみ対応。
  • 録画モードではカメラ焦点距離が固定され、Camera コンポーネントに追従しません。
  • 録画終了後、SetRecordMode(false, ...) を呼び出して通常のレンダリングを復元します。
  • LCC シーンの読み込み完了後に呼び出す必要があります。