ULodGlspComponent C++ 拡張 API
ULodGlspComponent · API リファレンス
これらの API には Blueprint リフレクション用のマークアップがありません。独自の LOD スケジューリング、ピッキング、レンダリング統合に使用します。
LOD の計算とスケジューリング
| API | 説明 |
|---|---|
GetLevelFittedByProjectedVoxelError(...) | 画面空間に投影されたボクセル誤差から LOD を選択します。 |
GetLevelFittedByScreenPixelQuality(...) | allowed error = 4 / Quality を使って LOD を選択し、ピクセルあたりのローカル単位数を返します。 |
GetLevelFittedAverageSplatScreenSize(...) | 画面上の平均 Splat 半径から LOD を選択します。 |
ChangeLevelWithView(...) | 共通のビュースナップショットを受け取り、動的フィルタリングを許可するかどうかを制御します。 |
NeedsDynamicFilterUpdate(...) | 現在のレベルを再フィルタリングする必要があるかどうかを返します。 |
InvalidateViewDependentLod() | ビュー依存の LOD 結果を無効にします。 |
RequestExplicitLodReschedule() | レベルが変わらなくても再スケジュールを強制します。 |
HasPendingExplicitLodReschedule() | 強制再スケジュールが保留中かどうかを返します。 |
IsTaskRunning() | LOD タスクが実行中かどうかを返します。 |
ShouldUseFullData() | 現在の VR ビューが全データモードを使用しているかどうかを返します。 |
IsDynamicV2ActiveForCurrentView() | 現在の VR ビューが Dynamic V2 を使用しているかどうかを返します。 |
チャンク、常駐データ、ピッキング
| API | 説明 |
|---|---|
GetChunkBounds() | 現在のチャンクのローカル境界を返します。 |
GetChunkResourceName() | キャッシュされたチャンク名、または代替名を返します。 |
GetResidentRenderCenter(...) | 常駐 Splat のアルファ加重によるワールド空間の中心を返します。 |
GetResidentRenderRevision() | 常駐レンダリングデータのリビジョンを返します。 |
RaycastSplats(...) | 現在 CPU に常駐している Splat のうち、最も近いヒットを検索します。 |
CopyResidentRenderSnapshot(...) | 内部のレンダリングスナップショットをコピーします。バイト配置は安定した保存形式ではありません。 |
SDK 内部連携
| API | 説明 |
|---|---|
GetSplatAssetInterface() | ISplatAsset を通じて現在のアセットを返します。 |
GetCollisionAsset() | アセットに関連するコリジョンデータを返します。 |
GetCollisionSourceFingerprint() | コリジョンソースのフィンガープリントを返します。 |
SupportsLodRenderFeatures() | 常に true を返します。 |
HasExplicitSceneSurfaceProxy() | Actor が提供する表面プロキシの状態を返します。 |
SetRenderFeatureSettings(...) | Actor から伝播されたレンダリング設定を受け取ります。 |
C++ の例
画面ピクセル品質を使用して LOD を計算・切り替える例:
cpp
double LocalUnitsPerPixel = 0.0;
const int32 Lod = Chunk->GetLevelFittedByScreenPixelQuality(
CameraPosition,
ViewProjection,
ViewportSize,
Chunk->ScreenPixelQuality,
LocalUnitsPerPixel);
if (Lod != INDEX_NONE && !Chunk->IsTaskRunning())
{
Chunk->ChangeLevel(Lod);
}現在の常駐データをテストする例:
cpp
FVector HitCenter;
float HitDistance = 0.0f;
const bool bHit = Chunk->RaycastSplats(
RayOrigin, RayDirection, 100000.0f, 1.0f,
HitCenter, HitDistance);Unreal のライフサイクルのオーバーライドと非公開関数は、ドキュメントの対象外です。