ALCCClippingVolume : volume de découpe 3DGS
Actor de volume de découpe, qui retire une partie de la scène LCC à l'aide d'un volume en boîte ou en sphère.
| Module | LCC4UnrealRuntime |
| En-tête | Tools/LCCClippingVolume.h |
| Classe parente | AVolume |
| Nom affiché dans le panneau | LCC Clipping Volume |
#include "Tools/LCCClippingVolume.h"
Les étapes d'utilisation, la démonstration et la description du panneau de propriétés figurent dans Édition de scène - Volumes de découpe. Cette page ne liste que les interfaces.
Propriétés
| Propriété | Type | Description |
|---|---|---|
bEnabled | bool | Participation à la découpe |
Mode | EClipType | Inside retire l'intérieur du volume, Outside retire l'extérieur |
VolumeType | EClipVolumeType | Box pour une boîte, Sphere pour une sphère |
La signification des valeurs figure dans EClipType et EClipVolumeType.
Aucune des trois propriétés n'a de Setter, il suffit de les affecter directement. Une modification de propriété ou de transformation à l'exécution prend automatiquement effet à l'image suivante, sans avoir à notifier manuellement le côté rendu.
Méthodes
SetUpdateComponent / Refresh (obsolètes)
UFUNCTION(BlueprintCallable, Category = "XGrids", meta = (DeprecatedFunction))
void SetUpdateComponent(ULCCComponentBase* Component);
UFUNCTION(BlueprintCallable, Category = "XGrids", meta = (DeprecatedFunction))
void Refresh();
Les deux méthodes sont obsolètes et implémentées comme des opérations vides : les appeler n'a aucun effet et ne produit aucune erreur.
Les données de découpe sont désormais lues à chaque image, les modifications de propriétés et de transformation se reflètent donc automatiquement à l'écran à l'image suivante. L'ancien enchaînement, qui consistait à établir la liaison avec SetUpdateComponent puis à appeler Refresh() après chaque modification, n'est plus nécessaire.
Les appels présents dans le code existant peuvent simplement être supprimés. Dans Blueprint, ces deux nodes affichent un avertissement d'obsolescence ; le remplacement consiste à retirer le node.
Création à l'exécution
#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;
// the size of an AVolume is controlled through scaling
Volume->SetActorScale3D(Extent / 100.0f);
Component->AddClippingVolume(Volume);
return Volume;
}
Pour activer et désactiver temporairement l'effet de découpe, ne pas ajouter ni retirer d'éléments du tableau ; modifier bEnabled est plus léger :
for (ALCCClippingVolume* Volume : MyVolumes)
{
if (Volume)
{
Volume->bEnabled = bEnable;
}
}
Pour animer un volume de découpe en le déplaçant à l'exécution, il suffit de modifier la transformation :
// sweep the clipping volume across the scene
FVector Loc = ClipVolume->GetActorLocation();
Loc.X += 200.0f * DeltaTime;
ClipVolume->SetActorLocation(Loc);
Les nodes Blueprint figurent dans Édition de scène - Méthodes Blueprint.
Remarques
- La découpe n'affecte que le rendu, pas la collision. Une zone retirée peut toujours être touchée par un rayon et continue de bloquer un personnage.
- Lorsque plusieurs volumes de découpe agissent en même temps, chacun est évalué indépendamment et les effets se cumulent. Mélanger
InsideetOutsideproduit facilement des résultats inattendus. - Le nombre de volumes de découpe actifs simultanément est limité, à 50 sans licence ; les volumes en excès ne participent pas au rendu et un avertissement est émis. Les volumes de découpe et les plans de coupe partagent ce quota. Les précisions sur la licence figurent dans Éditions et licences.
- Détruire un volume de découpe ne déclenche qu'une mise à jour du rendu et ne retire pas l'élément du tableau
ClippingVolumesdu Component : un pointeur invalide subsiste dans le tableau (il est automatiquement ignoré lors du rendu). Pour garder le tableau propre, appelerRemoveClippingVolumeavant la destruction.
Voir aussi
- Édition de scène : mode d'emploi complet
- ALCCSectionPlane : couper avec un plan
- ULCCComponentBase :
AddClippingVolumeetRemoveClippingVolume