XGRIDSDokumentation
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • PortalCam

    • Produktübersicht
    • Grundlegende Bedienung
    • LCC Scan App verwenden
    • Wartung und Pflege
    • FAQ
  • Lixel K-Serie

    • Lixel K1

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
    • Lixel K2

      • Produktübersicht
      • Grundlegende Bedienung
      • Aktivierung und Verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
  • Lixel L-Serie

    • Lixel L2 Pro

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Messpunkt
      • Anhang
      • FAQ
  • Lixel Studio

    • Version und Copyright
    • Installation und Aktivierung
    • Softwareoberfläche
    • Dateioperationen
    • Projektverarbeitung
    • Werkzeuge
    • 2D-Zeichnung
    • Anwendungen
    • Einstellungen
    • Geräteverbindung
  • Lixel CyberColor

    • LCC Studio

      • Erste Schritte
      • Version und Updates
      • Download und Installation
      • Oberfläche und Navigation
      • Vor der Rekonstruktion
      • Modellrekonstruktion
      • Einzelmodell-Rekonstruktion
      • Kartenfusion
      • Boden-Luft-Fusion
      • Luftbild-Rekonstruktion
      • Meine Modelle
      • Weitere Funktionen
      • Einstellungen und Konto
      • Converter
      • Videorekonstruktion
      • Häufige Fragen / FAQ
    • LCC Scene Editor

      • Version und Updates
      • Konto und Anmeldung
      • Produktübersicht und Startseite
      • Editor-Oberfläche
      • Navigationsmodi
      • Datei
      • Einstellungen
      • Bearbeiten
      • Fenster
      • Globale Symbolleiste
      • Assets und Eigenschaften
      • Linke Symbolleiste
      • Ansichtspunkte
      • Portal
      • Skybox
      • Markierungen
      • Messung
      • Flythrough
      • Szenenbericht
      • 3D-Layout
      • Minikarte
      • Vorschaumodus (Viewer)
      • Hilfe
      • Häufige Fragen (FAQ)
      • Spawn-Point
    • LCC Model Editor

      • Version und Updates
      • Benutzerhandbuch
      • Übersicht und Oberfläche
      • Dateioperationen
      • Selektoren
      • Modelle bearbeiten
      • Messung
      • Farbkorrektur
      • Asset-Verwaltung
      • Einstellungen und Hilfe
      • Häufige Fragen
    • Capture Guide

      • Überblick
      • Überblick über die Aufnahmegeräte
      • Allgemeine Aufnahmeprinzipien
      • Aufnahme von Innenszenen
      • Aufnahme von Außenszenen
      • Großflächige Aufnahme (Map Fusion)
      • Aerial-Ground Map Fusion – Aufnahme
      • Objektaufnahme
      • Personenaufnahme
      • Video-Rekonstruktionsaufnahme
      • HD Enhancement
      • Kontrollpunkte (Lixel P1)
      • FAQ und Fehlerbehebung
    • Versionsgeschichte
  • Plugin & SDK

    • Unreal

      • Einführung
      • Schnellstart - Windows
      • Schnellstart - Linux
      • Schnellstart - Quest3
      • Editionen und Lizenzierung
      • Rendering
      • Bildeinstellungen
      • Normalen und Beleuchtung
      • Szenenbearbeitung
      • Leistungsparameter
      • Leitfaden zur Leistung
      • Integration von Drittanbieter- und Engine-Plugins
      • Proxy Mesh
      • Ladeanimation
      • Kollision
      • Unterstützung des Navigation System
      • Unterstützung von Single Layer Water
      • Lokalisierung
      • FAQ
      • Fehlerbehebung
      • Logs und Diagnose
      • Kontakt
      • API-Referenz

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG- / SPZ- / PLY-Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Änderungsprotokoll

        • 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

ULCC2Component: Component der LCC2-Pipeline

Component, die der LCC2-Pipeline eigen ist und von ULCCComponentBase erbt. Sie ergänzt die Steuerung der Bänder der Kugelflächenfunktionen, ein System für Beleuchtungsnormalen und die Steuerung des Tiefenschwellwerts.

ModulLCC4UnrealRuntime
HeaderLCC2Component.h
BasisklasseULCCComponentBase
Gehalten vonALCC2Actor, ASogActor, ASpzActor, APlyActor
#include "LCC2Component.h"

Die Instanz holen:

ULCC2Component* Comp = Cast<ULCC2Component>(LCC2Actor->GetLCCComponent());

Diese Component bedient vier Datenformate auf einmal: das LCC2-Verzeichnis, .sog, .spz und .ply. Die letzten drei nutzen dieselbe Rendering-Pipeline erneut, indem virtuelle Metadaten aufgebaut werden, die erhaltene Component ist daher immer ULCC2Component.

Hinweis: Die Schnittstellen für mehrere Viewports an der Basisklasse (SetPlayerLoadMode, SetPlayerRenderMode, SetSceneCaptureLoadMode, SetSceneCaptureRenderMode, ModifyPlayerTransform, CancelModifyPlayerTransform) gelten nicht für die LCC2-Pipeline; Aufrufe lösen keinen Fehler aus, liefern aber nicht das erwartete Ergebnis. Näheres unter ULCCComponent.

Eigenschaften

EigenschaftTypStandardBereichBeschreibung
SHBandsint3231~3Bänder der Kugelflächenfunktionen. Standard ist die in den Daten gespeicherte Anzahl der Bänder, die auch die Obergrenze ist
LightingScalefloat0.00~1Helligkeit der ursprünglichen 3DGS-Farbe, bevor die Szenenbeleuchtung angewendet wird
AlphaThresholdfloat0.50.01~0.99Schwellwert der akkumulierten Deckkraft für die Entscheidung der mittleren Tiefe, ein Eintrag im Bereich Advanced
NormalModeELCC2NormalGenerationModeFixed—Modus der Normalenerzeugung, entscheidet, wie 3DGS auf das Szenenlicht reagiert
FixedNormalFVector(0, 0, 1)—Weltnormale, die im Modus Fixed das gesamte 3DGS teilt
NormalPoleFVector(1, 0, 1)—Ausrichtung der Oberfläche im Modus Hemispherical
NormalHemiSpreadfloat0.50~4Stärke der Shading-Variation im Modus Hemispherical

Die Normalen-Eigenschaften tragen EditConditionHides, das Details-Panel zeigt daher nur die Einträge, die der aktuelle NormalMode nutzt.

Zwei weitere Unterschiede zur Basisklasse:

  • MetaInfo (vom Typ FLCC2MetaInfo) ist ein private Member, auf der C++-Seite von außen nicht erreichbar und nur für Blueprint sichtbar (im Details-Panel nur lesbar). In C++ mit GetMetaInfo2 die vollständigen Felder lesen.
  • Das Konstruieren schreibt die Einstellung für vollständiges Laden von Performance auf „Kontrollkästchen aktiviert, Wert false“ um, das Gegenteil des Standardwerts von FRenderInfo. Anders gesagt: LCC2 nutzt standardmäßig kein Rendering mit vollständigem Laden, und es muss bei Bedarf ausdrücklich aktiviert werden.

Kugelflächenfunktionen

SetSHBands / GetSHBands

UFUNCTION(BlueprintCallable, Category = "XGrids")
void SetSHBands(int32 InSHBands);

UFUNCTION(BlueprintPure, Category = "XGrids")
int32 GetSHBands() const;

Setzt, wie viele Bänder der Kugelflächenfunktionen an der Berechnung teilnehmen, von 1 bis 3. Gilt für jedes Format, das diese Component rendert, darunter LCC2, SOG, SPZ und PLY.

ParameterTypBeschreibung
InSHBandsint32Anzahl der Bänder, 1 ist am günstigsten, 3 am vollständigsten. Werte über dem, was die Daten speichern, haben keine Wirkung

Hinweise zur Verwendung:

  • Der Standardwert kommt aus den geladenen Daten und ist auch die Obergrenze. 3 auf Daten zu setzen, die nur 2 Bänder speichern, bringt nichts.
  • Verglichen mit dem vollständigen Abschalten der Kugelflächenfunktionen über SetUseShcoef(false) ist das Senken der Anzahl der Bänder die feinere Abwägung.
  • Es erfordert, dass bUseShcoef aktiviert ist und der Rendering-Modus 3DGS ist, sonst nimmt der Wert nicht an der Berechnung teil.
  • Zur Abwägung zwischen Qualität und Kosten siehe Bildeinstellungen - SH Bands.
ULCC2Component* Comp = Cast<ULCC2Component>(Actor->GetLCCComponent());
if (Comp)
{
    // auf Geräten der Mittelklasse auf 2 Bänder senken
    Comp->SetSHBands(2);
}

Konfiguration nach Qualitätsstufe:

void ConfigureSH(ULCC2Component* Comp, EQualityTier Tier)
{
    if (!Comp || !Comp->CanSetShcoef())
    {
        return;   // die Daten selbst haben keine Kugelflächenfunktionen, nichts zu tun
    }

    switch (Tier)
    {
    case EQualityTier::High:
        Comp->SetUseShcoef(true);
        Comp->SetSHBands(3);
        break;
    case EQualityTier::Medium:
        Comp->SetUseShcoef(true);
        Comp->SetSHBands(2);
        break;
    case EQualityTier::Low:
        Comp->SetUseShcoef(false);   // vollständig abschalten
        break;
    }
}

Beleuchtung

LightingScale

UPROPERTY(Interp, EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (UIMin = "0.0", UIMax = "1.0", ClampMin = "0.0", ClampMax = "1.0"))
float LightingScale = 0.0f;

Helligkeit der Grundfarbe von 3DGS, bevor die Szenenbeleuchtung angewendet wird, von 0 bis 1, Standard 0. 0 bedeutet vollständig von der Szenenbeleuchtung getrieben, 1 bedeutet, dass die ursprüngliche Helligkeit vollständig erhalten bleibt.

Zur Wirkung des Werts und zum Abstimmen siehe Normalen und Beleuchtung - LCC2 Lighting Scale.

Hinweise zur Verwendung:

  • Nur sinnvoll, solange LightMode auf Lit steht; unter Unlit hat sie keine Wirkung.
  • Es ist eine BlueprintReadWrite-Eigenschaft, die direkt zugewiesen wird, ohne Setter-Funktion.
  • Mit Interp ausgezeichnet, sie lässt sich daher im Sequencer per Keyframe für einen Tag-Nacht-Wechsel animieren.
Comp->SetLightMode(ELightMode::Lit);
Comp->LightingScale = 0.3f;    // 30 % der ursprünglichen Helligkeit behalten, der Rest aus dem Szenenlicht

NormalMode

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting")
ELCC2NormalGenerationMode NormalMode = ELCC2NormalGenerationMode::Fixed;

Steuert, wie die 3DGS-Oberfläche auf die Szenenbeleuchtung reagiert. 3DGS-Daten selbst haben keine geometrischen Normalen, und die ersten drei Modi bauen Normalen durch Annäherung auf; nur ProxyMesh liefert echte Normalen.

Zum Vergleich der vier Modi, ihren Anwendungsfällen und zum Abstimmen siehe Normalen und Beleuchtung; zu den Definitionen der Werte siehe Enums.

// Modus Fixed, Normale zeigt nach oben
Comp->NormalMode = ELCC2NormalGenerationMode::Fixed;
Comp->FixedNormal = FVector(0.0, 0.0, 1.0);

// Modus Hemispherical, Richtung des Lichtverlaufs und Kontrast anpassen
Comp->NormalMode = ELCC2NormalGenerationMode::Hemispherical;
Comp->NormalPole = FVector(1.0, 0.0, 1.0);
Comp->NormalHemiSpread = 1.2f;

FixedNormal

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (EditCondition = "NormalMode == ELCC2NormalGenerationMode::Fixed", EditConditionHides))
FVector FixedNormal = FVector(0.0, 0.0, 1.0);

Nur Modus Fixed. Normale im Weltraum, die das gesamte 3DGS teilt, standardmäßig nach oben zeigend. Eine Normalisierung ist nicht erforderlich.

Hinweise zur Verwendung:

  • Eine von allem geteilte Normale bedeutet, dass die Helligkeit von allem ein einziger Wert ist, nämlich dot(normal, light direction).
  • Licht, das von hinter der Normalen eintrifft, dunkelt alles ab, möglicherweise bis Schwarz. In einer Außenszene mit nach oben zeigender Normale und Lichtquelle darüber ist das meist unproblematisch.
  • Ist das Hauptmotiv der Szene eine Wand, ist es sinnvoller, die Normale auf die Ausrichtung der Wand zu setzen.

NormalPole

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (EditCondition = "NormalMode == ELCC2NormalGenerationMode::Hemispherical", EditConditionHides))
FVector NormalPole = FVector(1.0, 0.0, 1.0);

Nur Modus Hemispherical. Die Richtung, in die die Oberfläche als zeigend behandelt wird; sie entscheidet, wie sich die Shading-Grenze über das 3DGS bewegt, während das gerichtete Licht rotiert. Eine Normalisierung ist nicht erforderlich.

Zum Abstimmen: zuerst das gerichtete Licht platzieren, dann diesen Vektor anpassen und beobachten, ob die Richtung der Shading-Grenze den Erwartungen entspricht.

NormalHemiSpread

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (UIMin = "0.0", UIMax = "4.0", ClampMin = "0.0",
        EditCondition = "NormalMode == ELCC2NormalGenerationMode::Hemispherical", EditConditionHides))
float NormalHemiSpread = 0.5f;

Nur Modus Hemispherical. Stärke der Shading-Variation über die Oberfläche, von 0 bis 4, Standard 0.5.

Ein kleinerer Wert macht das Shading flacher und gleichmäßiger; ein größerer Wert macht den Kontrast zwischen beleuchteten und beschatteten Bereichen stärker.

AlphaThreshold

UPROPERTY(Interp, EditAnywhere, BlueprintReadWrite, Category = "XGrids", AdvancedDisplay,
    meta = (UIMin = "0.01", UIMax = "0.99", ClampMin = "0.01", ClampMax = "0.99"))
float AlphaThreshold = 0.5f;

Schwellwert der akkumulierten Deckkraft für die Entscheidung der mittleren Tiefe, von 0.01 bis 0.99, Standard 0.5. Ein Eintrag im Bereich Advanced.

Die Deckkraft akkumuliert von nah nach fern, und erreicht der akkumulierte Wert diesen Schwellwert, wird die aktuelle Tiefe als repräsentative Tiefe dieses Pixels festgehalten. Ein kleinerer Wert verschiebt die Tiefe zur Kameraseite, ein größerer zur fernen Seite.

Er beeinflusst die Occlusion zwischen 3DGS und traditionellen Meshes, das Werfen von Schatten und die Nachbearbeitung. Der Standardwert passt für die meisten Fälle; zur Beschreibung der Werte siehe Bildeinstellungen - Tiefenschwellwert.

GetEffectiveNormalGenerationMode

UFUNCTION(BlueprintPure, Category = "XGrids")
ELCC2NormalGenerationMode GetEffectiveNormalGenerationMode() const;

Gibt den Normalen-Modus zurück, der nach der Lizenzprüfung tatsächlich wirksam ist.

Rückgabewert: der ursprüngliche Wert von NormalMode bei vorhandener Lizenz; Fixed, wenn das lizenzbeschränkte ProxyMesh ohne Lizenz gewählt ist.

Hinweise zur Verwendung:

  • Die gespeicherte Eigenschaft NormalMode wird nicht verändert; nur das Rendering folgt dem herabgestuften Modus. Das Lesen von NormalMode und das Lesen dieser Funktion können daher voneinander abweichen.
  • Sie für Meldungen in der Benutzeroberfläche nutzen. Hat der Nutzer ProxyMesh gewählt, läuft aber tatsächlich Fixed, sollte die Oberfläche das mitteilen.
const ELCC2NormalGenerationMode Requested = Comp->NormalMode;
const ELCC2NormalGenerationMode Effective = Comp->GetEffectiveNormalGenerationMode();

if (Requested != Effective)
{
    UE_LOG(LogTemp, Warning,
        TEXT("ProxyMesh mode requires a license, fell back to Fixed"));
}

Blueprint als Text:

[Get Effective Normal Generation Mode]
        Target = (LCC2 Component)
        │ Return Value ──┐
        ▼                │
[Equal (Enum)] ◀─────────┘
        A = (Return Value)
        B = Proxy Mesh
        │
        ▼
[Branch]
        │ False
        ▼
[Print String]  In String = "ProxyMesh requires a license, fell back to Fixed"

Weitere Methoden

GetMetaInfo2

FLCC2MetaInfo GetMetaInfo2();

Gibt die vollständigen LCC2-Metadaten zurück. Nur C++.

Verglichen mit GetMetaInfo() der Basisklasse ergänzt sie den Arbeitspfad, den Typ der Datenquelle, die Bänder der Kugelflächenfunktionen, den Wurzelknoten des Octree, die Dateiliste und mehr. Zu den Feldern siehe Structs.

GetLccVersion

virtual ELCCVersion GetLccVersion() const override;

Gibt immer ELCCVersion::LCC2 zurück.

Siehe auch

  • Normalen und Beleuchtung: vollständige Beschreibung der Normalen-Modi und der Lighting Scale
  • Bildeinstellungen: Werte für SH Bands, Tiefenschwellwert und weitere Parameter
  • ULCCComponentBase: gemeinsame Schnittstellen für Rendering und Leistung
  • ALCC2ProxyMesh: der begleitende Actor des Normalen-Modus ProxyMesh
  • SOG- / SPZ- / PLY-Actors: diese drei Formate nutzen ebenfalls diese Component
  • Enums: Werte der Normalen-Modi
Zurück
ULCCComponent
Weiter
SOG- / SPZ- / PLY-Actors