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
  • 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 とトラブルシューティング
    • バージョン履歴
  • プラグインと SDK

    • Unreal

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

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

        • 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

ALCCClippingVolume:3DGS のクリッピングボリューム

クリッピングボリュームの Actor で、ボックス形またはスフィア形のボリュームで LCC シーンの一部を切り取る。

モジュールLCC4UnrealRuntime
ヘッダーファイルTools/LCCClippingVolume.h
親クラスAVolume
パネルでの表示名LCC Clipping Volume
#include "Tools/LCCClippingVolume.h"

使用手順、デモの効果、プロパティパネルの説明は シーン編集 - クリッピングボリューム を参照する。このページではインターフェースのみを挙げる。

Properties

プロパティ型説明
bEnabledboolクリッピングに参加するか
ModeEClipTypeInside はボリュームの内側を切り取り、Outside はボリュームの外側を切り取る
VolumeTypeEClipVolumeTypeBox はボックス形、Sphere はスフィア形

値の意味は EClipType と EClipVolumeType を参照する。

3 つのプロパティにはいずれも Setter がなく、実行時に代入した後は Refresh を呼ばないと反映されない。実行時にトランスフォームを変更した場合も同様である。

Methods

SetUpdateComponent

UFUNCTION(BlueprintCallable, Category = "XGrids")
void SetUpdateComponent(ULCCComponentBase* Component);

更新対象の LCC Component をバインドする。

パラメーター型説明
ComponentULCCComponentBase*対象の Component

Refresh() はこのバインドがないと効かない。内部でバインドされた Component にレンダリング状態の再構築が必要であるとマークするだけである。バインドしていない場合 Refresh() はレンダリングの更新をトリガーしない。

AddClippingVolume で追加した場合は通常すでに関連付けが確立されている。実行時に動的に作成したクリッピングボリュームで変更が反映されない場合は、まずこのメソッドを呼んだか確認する。

Refresh

UFUNCTION(BlueprintCallable, Category = "XGrids")
void Refresh();

クリッピングの結果の更新を手動で 1 回トリガーする。内部でバインドされた LCC Component にレンダリング状態の再構築が必要であるとマークする。

実行時にクリッピングボリュームを変更した後は必ず呼ぶ必要があり、そうしないと変更が反映されない。対象は次のものである。

  • プロパティの変更:bEnabled、Mode、VolumeType。これらのプロパティには Setter がなく、直接代入してもレンダリング側に通知されない。
  • トランスフォームの変更:SetActorLocation、SetActorRotation、SetActorScale3D。

自動更新はエディター内でのみ起きる。Details パネルでプロパティを変更すると PostEditChangeProperty を通り、ギズモをドラッグすると EditorApplyTranslation などの関数を通る。これらの経路はいずれも WITH_EDITOR の下にあり、実行時には存在しない。

前提として SetUpdateComponent を呼んだか、AddClippingVolume で関連付けを確立している必要がある。Component をバインドしていない場合はレンダリングの更新が一切トリガーされない。

複数のクリッピングボリュームをまとめて変更する場合は、1 つずつプロパティを変更した後にそれぞれ Refresh() を 1 回呼ぶ。

実行時に作成する

#include "Tools/LCCClippingVolume.h"
#include "LCCComponentBase.h"

ALCCClippingVolume* AMyTool::CreateBoxClip(
    ULCCComponentBase* Component, const FVector& Location, const FVector& Extent)
{
    ALCCClippingVolume* Volume = GetWorld()->SpawnActor<ALCCClippingVolume>(
        ALCCClippingVolume::StaticClass(), Location, FRotator::ZeroRotator);
    if (!Volume)
    {
        return nullptr;
    }

    Volume->VolumeType = EClipVolumeType::Box;
    Volume->Mode = EClipType::Inside;
    Volume->bEnabled = true;

    // AVolume のサイズはスケールで制御する
    Volume->SetActorScale3D(Extent / 100.0f);

    Volume->SetUpdateComponent(Component);
    Component->AddClippingVolume(Volume);

    return Volume;
}

クリッピングの効果を一時的に切り替えるときは配列に追加や削除をせず、bEnabled を直接変更するほうが軽い。変更後に Refresh() を呼ぶことに注意する。

for (ALCCClippingVolume* Volume : MyVolumes)
{
    if (Volume)
    {
        Volume->bEnabled = bEnable;
        Volume->Refresh();
    }
}

実行時にクリッピングボリュームを移動してアニメーションを作る場合も、毎回更新する必要がある。

// クリッピングボリュームをシーン内で動かす
FVector Loc = ClipVolume->GetActorLocation();
Loc.X += 200.0f * DeltaTime;
ClipVolume->SetActorLocation(Loc);
ClipVolume->Refresh();          // 実行時のトランスフォームは自動更新されない

Blueprint のノードは シーン編集 - Blueprint のメソッド を参照する。

Notes

  • クリッピングはレンダリングにのみ影響し、コリジョンには影響しない。切り取られた領域も引き続きレイキャストで当たり、キャラクターを遮る。
  • 複数のクリッピングボリュームが同時に作用する場合はそれぞれ独立に判定され、効果が重なる。Inside と Outside が混在すると予期しない結果になりやすい。
  • 同時に有効になるクリッピングボリュームの数には上限があり、未ライセンスの場合は 50 個である。 超えた分はレンダリングに参加せず、警告を出力する。クリッピングボリュームと断面プレーンはこの枠を共有する。ライセンスの説明は エディションとライセンス を参照する。
  • クリッピングボリュームを破棄してもレンダリングの更新が 1 回トリガーされるだけで、Component の ClippingVolumes 配列から要素は削除されない。配列には無効なポインターが残る(レンダリング時に自動的にスキップされる)。配列をきれいに保ちたい場合は、破棄する前に RemoveClippingVolume を呼ぶ。

See Also

  • シーン編集:完全な使用説明
  • ALCCSectionPlane:プレーンで切断する
  • ULCCComponentBase:AddClippingVolume と RemoveClippingVolume
前へ
ALCC2ProxyMesh
次へ
ALCCSectionPlane