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

    • Panoramica del prodotto
    • Operazioni di base
    • Uso della LCC Scan App
    • Manutenzione e cura
    • FAQ
  • Serie Lixel K

    • Lixel K1

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Fusione delle mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
    • Lixel K2

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione
      • Flusso di scansione
      • Acquisire una nuvola di punti con coordinate assolute
      • Fusione mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
  • Serie Lixel L

    • Lixel L2 Pro

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Punto di misura
      • Appendice
      • FAQ
  • Lixel Studio

    • Versione e copyright
    • Installazione e attivazione
    • Interfaccia del software
    • Operazioni sui file
    • Elaborazione del progetto
    • Strumenti
    • Disegno 2D
    • Applicazioni
    • Impostazioni
    • Connessione del dispositivo
  • Lixel CyberColor

    • LCC Studio

      • Introduzione
      • Versione e aggiornamenti
      • Download e installazione
      • Panoramica dell'interfaccia e navigazione
      • Operazioni preliminari alla ricostruzione
      • Prima della ricostruzione
      • Ricostruzione del modello
      • Ricostruzione modello singolo
      • Fusione delle mappe
      • Fusione aria-terra
      • Ricostruzione aerea
      • I miei modelli
      • Altre funzioni
      • Impostazioni e account
      • Convertitore
      • Ricostruzione video
      • Domande Frequenti / FAQ
    • LCC Scene Editor

      • Versione e aggiornamenti
      • Account e accesso
      • Panoramica del prodotto e home page
      • Interfaccia dell'editor
      • Modalità di navigazione
      • File
      • Impostazioni
      • Modifica
      • Finestra
      • Barra degli strumenti globale
      • Asset e proprietà
      • Barra degli strumenti sinistra
      • Punti di vista
      • Portale
      • Skybox
      • Annotazioni
      • Misurazione
      • Flythrough
      • Rapporto scena
      • 3D Layout
      • Mini-mappa
      • Modalità Anteprima (Viewer)
      • Aiuto
      • Domande frequenti (FAQ)
      • Punto di spawn
    • LCC Model Editor

      • Versione e aggiornamenti
      • Guida utente
      • Panoramica e interfaccia
      • Operazioni sui file
      • Selettori
      • Modifica dei modelli
      • Misurazione
      • Correzione colore
      • Gestione degli asset
      • Impostazioni e Aiuto
      • Domande frequenti
    • Capture Guide

      • Panoramica
      • Panoramica dei dispositivi di acquisizione
      • Principi generali di acquisizione
      • Acquisizione di scene interne
      • Acquisizione di scene esterne
      • Acquisizione su larga scala (map fusion)
      • Acquisizione per aerial-ground map fusion
      • Acquisizione di oggetti
      • Acquisizione di persone
      • Acquisizione per ricostruzione da video
      • HD Enhancement
      • Control points (Lixel P1)
      • FAQ e risoluzione dei problemi
    • Cronologia versioni
  • Plugin e SDK

    • Unreal

      • Introduzione
      • Avvio rapido - Windows
      • Avvio rapido - Linux
      • Avvio rapido - Quest3
      • Edizioni e licenze
      • Rendering
      • Impostazioni visive
      • Normali e illuminazione
      • Modifica della scena
      • Parametri di prestazione
      • Guida alle prestazioni
      • Integrazione con plugin di terze parti e del motore
      • Proxy Mesh
      • Animazione di caricamento
      • Collisioni
      • Supporto del Navigation System
      • Supporto di Single Layer Water
      • Localizzazione
      • FAQ
      • Risoluzione dei problemi
      • Log e diagnostica
      • Contattaci
      • Riferimento API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ULCCUtilLibrary
        • Enum
        • Struct
      • Registro delle modifiche

        • 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 della pipeline LCC2

Component specifico della pipeline LCC2, che eredita da ULCCComponentBase. Aggiunge il controllo delle bande di armoniche sferiche, un sistema di normali per l'illuminazione e il controllo della soglia di profondità.

ModuloLCC4UnrealRuntime
HeaderLCC2Component.h
Classe padreULCCComponentBase
Contenuto inALCC2Actor, ASogActor, ASpzActor, APlyActor
#include "LCC2Component.h"

Ottenere l'istanza:

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

Questo component serve contemporaneamente quattro formati di dati: la directory LCC2, .sog, .spz e .ply. Gli ultimi tre riutilizzano la stessa pipeline di rendering costruendo metainformazioni virtuali, quindi il Component ottenuto è sempre ULCC2Component.

Nota: le interfacce per più viewport della classe base (SetPlayerLoadMode, SetPlayerRenderMode, SetSceneCaptureLoadMode, SetSceneCaptureRenderMode, ModifyPlayerTransform, CancelModifyPlayerTransform) non si applicano alla pipeline LCC2; le chiamate non generano errori ma non producono il risultato previsto. Per i dettagli vedere ULCCComponent.

Proprietà

ProprietàTipoPredefinitoIntervalloDescrizione
SHBandsint3231~3Bande di armoniche sferiche. Il valore predefinito è il numero di bande memorizzato nei dati, che è anche il limite superiore
LightingScalefloat0.00~1Luminosità del colore 3DGS originale prima dell'applicazione dell'illuminazione della scena
AlphaThresholdfloat0.50.01~0.99Soglia di opacità accumulata per la decisione della profondità mediana, voce avanzata
NormalModeELCC2NormalGenerationModeFixed—Modalità di generazione delle normali, che decide come il 3DGS risponde alla luce della scena
FixedNormalFVector(0, 0, 1)—Normale nel mondo condivisa da tutto il 3DGS in modalità Fixed
NormalPoleFVector(1, 0, 1)—Orientamento della superficie in modalità Hemispherical
NormalHemiSpreadfloat0.50~4Intensità della variazione di resa in modalità Hemispherical

Le proprietà delle normali hanno EditConditionHides, quindi il pannello Details mostra solo le voci usate dalla NormalMode corrente.

Altre due differenze rispetto alla classe base:

  • MetaInfo (di tipo FLCC2MetaInfo) è un membro private, non accessibile dall'esterno sul lato C++ e visibile solo a Blueprint (in sola lettura nel pannello Details). In C++ usare GetMetaInfo2 per leggere i campi completi.
  • La costruzione riscrive l'impostazione del caricamento completo di Performance in «casella spuntata, valore false», l'opposto del valore predefinito di FRenderInfo. In altre parole, LCC2 non usa il rendering a caricamento completo per impostazione predefinita e va abilitato esplicitamente quando serve.

Armoniche sferiche

SetSHBands / GetSHBands

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

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

Imposta quante bande di armoniche sferiche partecipano al calcolo, da 1 a 3. Si applica a ogni formato renderizzato da questo component, inclusi LCC2, SOG, SPZ e PLY.

ParametroTipoDescrizione
InSHBandsint32Numero di bande, 1 è il più economico, 3 il più completo. I valori oltre quanto memorizzato nei dati non hanno effetto

Note d'uso:

  • Il valore predefinito proviene dai dati caricati ed è anche il limite superiore. Impostare 3 su dati che memorizzano solo 2 bande non aggiunge nulla.
  • Rispetto alla disattivazione completa delle armoniche sferiche con SetUseShcoef(false), ridurre il numero di bande è un compromesso più fine.
  • Richiede che bUseShcoef sia abilitato e che la modalità di rendering sia 3DGS, altrimenti il valore non partecipa al calcolo.
  • Per il compromesso tra qualità e costo vedere Impostazioni visive - SH Bands.
ULCC2Component* Comp = Cast<ULCC2Component>(Actor->GetLCCComponent());
if (Comp)
{
    // scendere a 2 bande sui dispositivi di fascia media
    Comp->SetSHBands(2);
}

Configurazione per livello di qualità:

void ConfigureSH(ULCC2Component* Comp, EQualityTier Tier)
{
    if (!Comp || !Comp->CanSetShcoef())
    {
        return;   // i dati stessi non hanno armoniche sferiche, non c'è nulla da fare
    }

    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);   // disattivarle completamente
        break;
    }
}

Illuminazione

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;

Luminosità del colore di base del 3DGS prima dell'applicazione dell'illuminazione della scena, da 0 a 1, predefinito 0. 0 significa completamente guidato dall'illuminazione della scena, 1 significa che la luminosità originale viene mantenuta interamente.

Per l'effetto del valore e come regolarlo, vedere Normali e illuminazione - LCC2 Lighting Scale.

Note d'uso:

  • Ha senso solo mentre LightMode è Lit; non ha effetto sotto Unlit.
  • È una proprietà BlueprintReadWrite, assegnata direttamente, senza funzione Setter.
  • È marcata Interp, quindi può essere animata con keyframe in Sequencer per i cambi giorno-notte.
Comp->SetLightMode(ELightMode::Lit);
Comp->LightingScale = 0.3f;    // mantiene il 30% della luminosità originale, il resto dalla luce della scena

NormalMode

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

Controlla come la superficie del 3DGS risponde all'illuminazione della scena. I dati 3DGS stessi non hanno normali geometriche, e le prime tre modalità costruiscono le normali per approssimazione; solo ProxyMesh fornisce normali reali.

Per un confronto tra le quattro modalità, i loro casi d'uso e come regolarle, vedere Normali e illuminazione; per le definizioni dei valori vedere Enum.

// modalità Fixed, normale rivolta verso l'alto
Comp->NormalMode = ELCC2NormalGenerationMode::Fixed;
Comp->FixedNormal = FVector(0.0, 0.0, 1.0);

// modalità Hemispherical, regolando la direzione in cui la luce scorre e il contrasto
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);

Solo modalità Fixed. Normale in spazio mondo condivisa da tutto il 3DGS, rivolta verso l'alto per impostazione predefinita. La normalizzazione non è necessaria.

Note d'uso:

  • Una normale condivisa da tutto significa che la luminosità di tutto è un unico valore, pari a dot(normal, light direction).
  • La luce che arriva da dietro la normale scurisce tutto, eventualmente fino al nero. In una scena esterna con la normale rivolta verso l'alto e la sorgente luminosa in alto, di norma va bene.
  • Quando il soggetto principale della scena è un muro, impostare la normale sull'orientamento del muro è più sensato.

NormalPole

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

Solo modalità Hemispherical. La direzione verso cui la superficie viene considerata rivolta, che decide come il confine della resa si sposta sul 3DGS mentre la luce direzionale ruota. La normalizzazione non è necessaria.

Come regolarlo: posizionare prima la luce direzionale, poi regolare questo vettore e osservare se la direzione del confine della resa corrisponda alle attese.

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;

Solo modalità Hemispherical. Intensità della variazione di resa sulla superficie, da 0 a 4, predefinito 0.5.

Un valore più piccolo rende la resa più piatta e uniforme; un valore più grande rende più forte il contrasto tra le zone illuminate e quelle in ombra.

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;

Soglia di opacità accumulata per la decisione della profondità mediana, da 0.01 a 0.99, predefinito 0.5. Voce avanzata.

L'opacità si accumula dal vicino al lontano, e quando il valore accumulato raggiunge questa soglia la profondità corrente viene registrata come profondità rappresentativa di quel pixel. Un valore più piccolo sposta la profondità verso il lato della camera, un valore più grande verso il lato lontano.

Influisce sull'occlusione tra 3DGS e mesh tradizionali, sulla proiezione delle ombre e sulla post-elaborazione. Il valore predefinito è adatto alla maggior parte dei casi; per una descrizione dei valori vedere Impostazioni visive - Depth Threshold.

GetEffectiveNormalGenerationMode

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

Restituisce la modalità delle normali effettivamente attiva dopo la validazione della licenza.

Valore di ritorno: il valore originale di NormalMode in presenza di licenza; Fixed quando è selezionato ProxyMesh, soggetto a licenza, senza licenza.

Note d'uso:

  • La proprietà NormalMode memorizzata non viene modificata; solo il rendering segue la modalità declassata. Leggere NormalMode e leggere questa funzione può quindi dare risultati diversi.
  • Usarla per i messaggi dell'interfaccia. Quando l'utente ha selezionato ProxyMesh ma è Fixed a essere effettivamente in uso, l'interfaccia dovrebbe segnalarlo.
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 come testo:

[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"

Altri metodi

GetMetaInfo2

FLCC2MetaInfo GetMetaInfo2();

Restituisce le metainformazioni LCC2 complete. Solo C++.

Rispetto a GetMetaInfo() della classe base, aggiunge il percorso di lavoro, il tipo di sorgente dei dati, le bande di armoniche sferiche, il nodo radice dell'octree, l'elenco dei file e altro. Per i campi vedere Struct.

GetLccVersion

virtual ELCCVersion GetLccVersion() const override;

Restituisce sempre ELCCVersion::LCC2.

Vedere anche

  • Normali e illuminazione: descrizione completa delle modalità delle normali e della scala di illuminazione
  • Impostazioni visive: valori per bande SH, soglia di profondità e altri parametri
  • ULCCComponentBase: interfacce comuni di rendering e prestazioni
  • ALCC2ProxyMesh: l'Actor complementare della modalità delle normali ProxyMesh
  • Actor SOG / SPZ / PLY: anche questi tre formati usano questo component
  • Enum: valori della modalità delle normali
Precedente
ULCCComponent
Successivo
Actor SOG / SPZ / PLY