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.
| Modulo | LCC4UnrealRuntime |
| Header | Tools/LCCClippingVolume.h |
| Classe padre | AVolume |
| Nome visualizzato nel pannello | LCC 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à | Tipo | Descrizione |
|---|---|---|
bEnabled | bool | Se partecipa al taglio |
Mode | EClipType | Inside rimuove l'interno del volume, Outside rimuove l'esterno |
VolumeType | EClipVolumeType | Box per una scatola, Sphere per una sfera |
Per il significato dei valori vedere EClipType e EClipVolumeType.
Nessuna delle tre proprietà ha un Setter: si assegnano direttamente. Una modifica di una proprietà o del transform a runtime ha effetto dal frame successivo, senza bisogno di notificare manualmente il lato rendering.
Metodi
SetUpdateComponent / Refresh (deprecati)
UFUNCTION(BlueprintCallable, Category = "XGrids", meta = (DeprecatedFunction))
void SetUpdateComponent(ULCCComponentBase* Component);
UFUNCTION(BlueprintCallable, Category = "XGrids", meta = (DeprecatedFunction))
void Refresh();
Entrambi i metodi sono deprecati e implementati come operazioni vuote; chiamarli non ha effetto e non genera errori.
I dati di taglio vengono ora letti a ogni frame, quindi le modifiche di proprietà e transform si riflettono nell'immagine dal frame successivo. Il flusso precedente, che prevedeva di associare prima con SetUpdateComponent e chiamare Refresh() dopo ogni modifica, non serve più.
Le chiamate esistenti si possono semplicemente rimuovere. In Blueprint questi due nodi mostrano un avviso di deprecazione e la sostituzione consiste nell'eliminare il nodo.
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);
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:
for (ALCCClippingVolume* Volume : MyVolumes)
{
if (Volume)
{
Volume->bEnabled = bEnable;
}
}
Spostare un volume di taglio a runtime per un'animazione richiede solo di cambiare il transform:
// far scorrere il volume di taglio attraverso la scena
FVector Loc = ClipVolume->GetActorLocation();
Loc.X += 200.0f * DeltaTime;
ClipVolume->SetActorLocation(Loc);
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
InsideeOutsideproduce 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
ClippingVolumesdel Component, lasciando un puntatore obsoleto nell'array (ignorato automaticamente durante il rendering). Per mantenere l'array pulito, chiamareRemoveClippingVolumeprima della distruzione.
Vedere anche
- Modifica della scena: descrizione d'uso completa
- ALCCSectionPlane: sezionamento con un piano
- ULCCComponentBase:
AddClippingVolumeeRemoveClippingVolume