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

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

    • Lixel K1

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

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

    • Lixel L2 Pro

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

    • 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
    • バージョン履歴
  • プラグインと 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
    • 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

LixelStudio メッシュで 3DGS をリライティングする

このプラグインはハイブリッドリライティングに対応しています。3DGS と同じスケールのメッシュを組み合わせることで、3DGS にメッシュに近いライティング応答を与え、セルフシャドウも表現できます。

仕上がりは 3DGS の下に置くメッシュの形状精度で決まります。メッシュが 3DGS に一致しているほど、ライティング応答と影が自然になります。

仕組みとパラメーターはプロキシメッシュ、法線モードの選び方は法線とライティングを参照してください。

どちらのメッシュを使うか

LCC Studio と LixelStudio のどちらでもメッシュを生成できますが、用途が異なります。

LCC Studio メッシュLixelStudio メッシュ
表面の精度粗い実際の形状に近い
ファイルサイズ小さい大きい
向いている用途コリジョン判定リライティング

コリジョン用途なら LCC Studio メッシュで十分です(コリジョンを参照)。リライティングには LixelStudio メッシュを使います。

LCC Studio メッシュ:

LCC Studio メッシュの全体
LCC Studio メッシュの拡大

LixelStudio メッシュ:

LixelStudio メッシュの全体
LixelStudio メッシュの拡大

手順 1:タイル分割されたモデルを 1 つのフォルダーにまとめる

LixelStudio はメッシュをタイル単位で書き出します。シーンが大きいとフォルダーが多数生成され、それぞれに .obj ファイルとテクスチャが入っています。Unreal Engine に取り込む前に 1 つのメッシュへ結合しないと、独立した .obj が大量にできてしまいます。

以下は Blender を使った手順ですが、他の 3D ツールでも同じ考え方です。Blender は公式サイトからダウンロードします。

Blender はフォルダーをまとめてドラッグする操作に対応していないため、各サブフォルダーに散らばった .obj を同じ階層に集める必要があります。数十個のフォルダーを手作業で扱うのは現実的ではないので、PowerShell のコマンド 1 行で済ませます。

すべてのサブフォルダーを含むルートフォルダーを開き、アドレスバーに powershell と入力して Enter を押します。現在のディレクトリでターミナルが開きます。

アドレスバーに powershell と入力

エクスプローラーのアドレスバーに powershell と入力する

次のコマンドをコピーして貼り付けます。

Get-ChildItem -Recurse -File | Move-Item -Destination .

注:このコマンドはサブフォルダー内のすべてのファイルを現在のディレクトリへ移動します。実行前に正しいフォルダーにいることを確認してください。たとえばフォルダー A に B と C が含まれている場合、A のアドレスバーから PowerShell を開きます。実行後、B と C のファイルはすべて A に移動します。

実行前のサブフォルダー

実行前のフォルダー構成

コマンドを貼り付ける

コマンドを貼り付けて実行する

貼り付けたら Enter で実行します。数秒かかります。新しいプロンプトが表示されれば完了です。

これですべて取り出されました。いくつかのサブフォルダーを開いて、中が空になっていることを確認します。

取り出した後のファイル一覧

すべての .obj とテクスチャが同じ階層に集まった状態

手順 2:Blender で 1 つのファイルに結合する

Ctrl + A ですべてのファイルを選択し、Blender にドラッグします。

すべてのファイルを選択

すべてのファイルを選択する

Blender にドラッグ

Blender にドラッグする

Import Wavefront OBJ をクリックしてインポートします。向きを正しくするため、Up Axis を Z、Forward Axis を X に設定します。

インポート時の向きの設定

Up Axis を Z、Forward Axis を X に設定する

これですべてのタイルがインポートされます。

インポートされたタイル

すべてのタイルがインポートされた状態

A ですべてのタイルを選択し、Ctrl + J で 1 つのメッシュに結合します。シーンが大きい場合は 1 分ほどかかるので、完了まで待ちます。

結合後のメッシュ

結合されて 1 つになったメッシュ

注:シーン全体をリライティングする必要がない場合は、不要な部分を削除すると Unreal Engine でのパフォーマンスが向上します。

手順 3:ドローコールを削減する

このメッシュをリライティング目的で Unreal Engine に取り込む場合、マテリアルはすべて不要です。見た目は 3DGS が担い、プロキシメッシュは計算にだけ使われるため、マテリアルは役に立たずリソースを消費します。

LixelStudio メッシュのテクスチャ 1 枚は Unreal Engine では 1 ドローコールに相当します。規模が大きくなるとドローコールが大量に発生し、そのままプロキシメッシュとして使うと処理が重くなります。

Collection でメッシュを選択し、Blender の Python コンソールでドローコール数を確認します。

Blender の Python コンソール

Python コンソールに切り替える

次のコマンドを貼り付けて Enter で実行します。

obj = bpy.context.object
print("Material slots:", len(obj.data.materials))
マテリアルスロット数の出力

出力された数値がドローコール数

スクリーンショットのメッシュはドローコールが 8859 回あります。

削減するには、既存のマテリアルをすべて削除して単一のマテリアルに置き換えます。

import bpy

# Get the currently selected object in Blender
obj = bpy.context.object

# Make sure a valid Mesh object is selected
if obj is None or obj.type != "MESH":
    raise Exception("Please select a Mesh object first.")

# Create a new white clay material
mat = bpy.data.materials.new("M_White_Clay")
mat.use_nodes = True

# Configure the Principled BSDF shader settings
bsdf = mat.node_tree.nodes.get("Principled BSDF")
if bsdf:
    bsdf.inputs["Base Color"].default_value = (1, 1, 1, 1)  # White color
    bsdf.inputs["Roughness"].default_value = 1.0            # Fully rough / matte surface
    bsdf.inputs["Metallic"].default_value = 0.0             # Non-metallic material
    bsdf.inputs["Alpha"].default_value = 1.0                # Fully opaque

# Remove all existing material slots from the mesh
obj.data.materials.clear()

# Add the single new white material
obj.data.materials.append(mat)

# Assign every face to material slot 0
for poly in obj.data.polygons:
    poly.material_index = 0

# Print the result for verification
print("Done")
print("Material slots:", len(obj.data.materials))
print("Used material indices:", len(set(p.material_index for p in obj.data.polygons)))
print("Estimated draw calls:", len(set(p.material_index for p in obj.data.polygons)))

実行後、ドローコール数が 1 回に減っていることを確認します。

ドローコールが 1 回に減少

ドローコールが 1 回に減った状態

手順 4:Unreal Engine に取り込む

メッシュを .obj または .fbx で書き出し、Unreal Engine にインポートします。

Unreal Engine への取り込み

Unreal Engine に取り込んだ後のメッシュ

続いてプロキシメッシュの手順に従って ProxyMesh Actor を配置し、法線モードを ProxyMesh に設定します。

思ったような結果にならない場合はプロキシメッシュのトラブルシューティングを参照してください。