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

ALCCSectionPlane: piano di sezione del 3DGS

Actor del piano di sezione che taglia una scena LCC con un piano e ne mantiene un lato.

ModuloLCC4UnrealRuntime
HeaderTools/LCCSectionPlane.h
Classe padreAVolume
Nome visualizzato nel pannelloLCC Section Plane
#include "Tools/LCCSectionPlane.h"

Per i passi d'uso, una dimostrazione e la descrizione del pannello delle proprietà, vedere Modifica della scena - Piani di sezione. Questa pagina elenca solo le interfacce.

L'editor mostra un componente a freccia che indica l'orientamento del piano, e il lato verso cui punta la freccia è Upside.

Proprietà

ProprietàTipoDescrizione
bEnabledboolSe partecipa al sezionamento
ModeESectionTypeUpside rimuove ciò che si trova sopra il piano, Downside rimuove ciò che si trova sotto

Sopra e sotto sono relativi all'orientamento del piano stesso, non alle coordinate del mondo. Ruotando il piano di sezione si ottiene una sezione in qualsiasi direzione. Per il significato dei valori vedere ESectionType.

Nessuna delle due proprietà ha un Setter, e un'assegnazione a runtime richiede una chiamata a Refresh per avere effetto. Lo stesso vale per una modifica del transform a runtime.

Metodi

SetUpdateComponent

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

Associa il Component LCC da aggiornare.

Refresh() ha bisogno di questa associazione per avere effetto, perché internamente contrassegna il Component associato come da ricostruire nello stato di rendering. Senza associazione non viene innescato alcun aggiornamento del rendering.

Refresh

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

Innesca manualmente un aggiornamento del risultato del sezionamento; internamente contrassegna il Component LCC associato come da ricostruire nello stato di rendering.

Una chiamata è necessaria dopo aver modificato un piano di sezione a runtime perché la modifica abbia effetto, comprese:

  • Modifiche delle proprietà: bEnabled, Mode. Queste proprietà non hanno un Setter e un'assegnazione diretta non notifica il lato rendering.
  • Modifiche del transform: SetActorLocation, SetActorRotation.

Gli aggiornamenti automatici avvengono solo nell'editor: le modifiche delle proprietà nel pannello Details passano per PostEditChangeProperty e il trascinamento del gizmo passa per funzioni come EditorApplyTranslation. Questi percorsi sono tutti sotto WITH_EDITOR e non esistono a runtime.

Richiede che SetUpdateComponent sia stato chiamato, oppure che l'associazione sia stata stabilita tramite AddSectionPlane. Nessun aggiornamento del rendering viene innescato finché non è associato alcun Component.

Quando si modificano più piani di sezione in una volta, chiamare Refresh() su ciascuno dopo aver modificato le sue proprietà.

Creazione a runtime

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

ALCCSectionPlane* AMyTool::CreateSectionPlane(
    ULCCComponentBase* Component, const FVector& Location, const FRotator& Rotation)
{
    ALCCSectionPlane* Plane = GetWorld()->SpawnActor<ALCCSectionPlane>(
        ALCCSectionPlane::StaticClass(), Location, Rotation);
    if (!Plane)
    {
        return nullptr;
    }

    Plane->Mode = ESectionType::Upside;   // rimuove ciò che si trova sopra il piano
    Plane->bEnabled = true;

    Plane->SetUpdateComponent(Component);
    Component->AddSectionPlane(Plane);

    return Plane;
}

Alcune configurazioni comuni:

EffettoPosizione e rotazioneMode
Vista dall'alto dell'interno di un edificioUn'altezza determinata, FRotator::ZeroRotatorUpside
Sezione verticale per osservare una facciataFRotator(0, 0, 90) per rendere il piano verticaleUpside
Mantenere solo lo strato intermedioUn piano sopra e uno sottoDownside per il limite inferiore, Upside per quello superiore

Spostare il piano di sezione produce un'animazione di rivelazione strato per strato. Chiamare Refresh() dopo ogni spostamento a runtime:

FVector Loc = SectionPlane->GetActorLocation();
Loc.Z = FMath::FInterpTo(Loc.Z, TargetHeight, DeltaTime, 1.0f);
SectionPlane->SetActorLocation(Loc);
SectionPlane->Refresh();        // le modifiche del transform a runtime non si aggiornano automaticamente

Anche le modifiche delle proprietà richiedono un refresh:

SectionPlane->bEnabled = false;
SectionPlane->Refresh();

Per i nodi Blueprint vedere Modifica della scena - Metodi Blueprint.

Note

  • Il sezionamento influisce solo sul rendering, non sulle collisioni. Una parte rimossa dal sezionamento può ancora essere colpita da un raggio e continua a bloccare un personaggio.
  • Upside e Downside sono relativi all'orientamento del piano stesso. Dopo una rotazione, verificare di nuovo quale lato sia «sopra»; guardare la freccia nell'editor è il modo più diretto.
  • La scala Z è impostata a 0.01 alla costruzione (una fetta sottile) e modificare la scala nell'editor la riporta a quel valore. Una modifica della scala a runtime non è soggetta a questo vincolo, ma di norma non serve.
  • Il numero di piani di sezione attivi contemporaneamente è limitato, a 50 senza licenza; quelli in eccesso non partecipano al rendering e viene registrato un avviso. Piani di sezione e volumi di taglio condividono questa quota. Per le licenze vedere Edizioni e licenze.
  • Distruggere un piano di sezione innesca solo un aggiornamento del rendering e non rimuove l'elemento dall'array SectionPlanes del Component, lasciando un puntatore obsoleto nell'array (ignorato automaticamente durante il rendering). Per mantenere l'array pulito, chiamare RemoveSectionPlane prima della distruzione.

Vedere anche

  • Modifica della scena: descrizione d'uso completa
  • ALCCClippingVolume: taglio con un volume delimitato
  • ULCCComponentBase: AddSectionPlane e RemoveSectionPlane
Precedente
ALCCClippingVolume
Successivo
ULCCUtilLibrary