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

ALCCClippingVolume: volume di taglio del 3DGS

Actor del volume di taglio che rimuove parte di una scena LCC con un volume a scatola o a sfera.

ModuloLCC4UnrealRuntime
HeaderTools/LCCClippingVolume.h
Classe padreAVolume
Nome visualizzato nel pannelloLCC Clipping Volume
#include "Tools/LCCClippingVolume.h"

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

Proprietà

ProprietàTipoDescrizione
bEnabledboolSe partecipa al taglio
ModeEClipTypeInside rimuove l'interno del volume, Outside rimuove l'esterno
VolumeTypeEClipVolumeTypeBox per una scatola, Sphere per una sfera

Per il significato dei valori vedere EClipType e EClipVolumeType.

Nessuna delle tre 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.

ParametroTipoDescrizione
ComponentULCCComponentBase*Component di destinazione

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

Aggiungere un volume con AddClippingVolume di norma stabilisce già l'associazione; quando una modifica a un volume di taglio creato dinamicamente a runtime non ha effetto, verificare prima se questo metodo sia stato chiamato.

Refresh

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

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

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

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

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 AddClippingVolume. Nessun aggiornamento del rendering viene innescato finché non è associato alcun Component.

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

Creazione a runtime

#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;

    // la dimensione di un AVolume è controllata tramite la scalatura
    Volume->SetActorScale3D(Extent / 100.0f);

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

    return Volume;
}

Per attivare e disattivare temporaneamente l'effetto di taglio, non aggiungere e rimuovere elementi dell'array; modificare bEnabled è più leggero. Ricordare di chiamare Refresh() dopo la modifica:

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

Anche spostare un volume di taglio a runtime per un'animazione richiede un refresh ogni volta:

// far scorrere il volume di taglio attraverso la scena
FVector Loc = ClipVolume->GetActorLocation();
Loc.X += 200.0f * DeltaTime;
ClipVolume->SetActorLocation(Loc);
ClipVolume->Refresh();          // le modifiche del transform a runtime non si aggiornano automaticamente

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

Note

  • Il taglio influisce solo sul rendering, non sulle collisioni. Un'area rimossa dal taglio può ancora essere colpita da un raggio e continua a bloccare un personaggio.
  • Più volumi di taglio attivi contemporaneamente vengono valutati in modo indipendente e i loro effetti si sommano. Mescolare Inside e Outside produce facilmente risultati inattesi.
  • Il numero di volumi di taglio attivi contemporaneamente è limitato, a 50 senza licenza; quelli in eccesso non partecipano al rendering e viene registrato un avviso. Volumi di taglio e piani di sezione condividono questa quota. Per le licenze vedere Edizioni e licenze.
  • Distruggere un volume di taglio innesca solo un aggiornamento del rendering e non rimuove l'elemento dall'array ClippingVolumes del Component, lasciando un puntatore obsoleto nell'array (ignorato automaticamente durante il rendering). Per mantenere l'array pulito, chiamare RemoveClippingVolume prima della distruzione.

Vedere anche

  • Modifica della scena: descrizione d'uso completa
  • ALCCSectionPlane: sezionamento con un piano
  • ULCCComponentBase: AddClippingVolume e RemoveClippingVolume
Precedente
ALCC2ProxyMesh
Successivo
ALCCSectionPlane