ALCCSectionPlane : plan de coupe 3DGS
Actor de plan de coupe, qui ouvre la scène LCC à l'aide d'un plan et n'en conserve qu'un côté.
| Module | LCC4UnrealRuntime |
| En-tête | Tools/LCCSectionPlane.h |
| Classe parente | AVolume |
| Nom affiché dans le panneau | LCC Section Plane |
#include "Tools/LCCSectionPlane.h"
Les étapes d'utilisation, la démonstration et la description du panneau de propriétés figurent dans Édition de scène - Plans de coupe. Cette page ne liste que les interfaces.
Dans l'éditeur, un Component de flèche indique l'orientation du plan : le côté vers lequel pointe la flèche est le côté Upside.
Propriétés
| Propriété | Type | Description |
|---|---|---|
bEnabled | bool | Participation à la coupe |
Mode | ESectionType | Upside retire ce qui est au-dessus du plan, Downside retire ce qui est en dessous |
Le haut et le bas s'entendent par rapport à l'orientation propre du plan, pas aux coordonnées du monde. Faire pivoter le plan de coupe permet d'obtenir une coupe dans n'importe quelle direction. La signification des valeurs figure dans ESectionType.
Aucune des deux 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 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/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; // cut away what is above the plane
Plane->bEnabled = true;
Component->AddSectionPlane(Plane);
return Plane;
}
Quelques configurations courantes :
| Effet | Position et rotation | Mode |
|---|---|---|
| Voir l'intérieur d'un bâtiment vu de dessus | Hauteur choisie, FRotator::ZeroRotator | Upside |
| Coupe verticale pour voir une façade | FRotator(0, 0, 90) pour obtenir un plan vertical | Upside |
| Ne conserver qu'un étage intermédiaire | Un plan en bas et un plan en haut | Limite basse Downside, limite haute Upside |
Déplacer le plan de coupe suffit à produire une animation de dévoilement couche par couche, en modifiant directement la position à chaque image :
FVector Loc = SectionPlane->GetActorLocation();
Loc.Z = FMath::FInterpTo(Loc.Z, TargetHeight, DeltaTime, 1.0f);
SectionPlane->SetActorLocation(Loc);
Les propriétés se modifient également par affectation directe :
SectionPlane->bEnabled = false;
Les nodes Blueprint figurent dans Édition de scène - Méthodes Blueprint.
Remarques
- La coupe n'affecte que le rendu, pas la collision. La partie retirée peut toujours être touchée par un rayon et continue de bloquer un personnage.
UpsideetDownsides'entendent par rapport à l'orientation propre du plan. Après une rotation, vérifier de nouveau quel côté est le « haut » ; la flèche dans l'éditeur est le repère le plus direct.- À la construction, l'échelle sur l'axe Z est fixée à 0.01 (une lamelle) ; modifier l'échelle dans l'éditeur la ramène à cette valeur. À l'exécution, la modification d'échelle n'est pas soumise à cette contrainte, mais elle n'est généralement pas nécessaire.
- Le nombre de plans de coupe actifs simultanément est limité, à 50 sans licence ; les plans en excès ne participent pas au rendu et un avertissement est émis. Les plans de coupe et les volumes de découpe partagent ce quota. Les précisions sur la licence figurent dans Éditions et licences.
- Détruire un plan de coupe ne déclenche qu'une mise à jour du rendu et ne retire pas l'élément du tableau
SectionPlanesdu Component : un pointeur invalide subsiste dans le tableau (il est automatiquement ignoré lors du rendu). Pour garder le tableau propre, appelerRemoveSectionPlaneavant la destruction.
Voir aussi
- Édition de scène : mode d'emploi complet
- ALCCClippingVolume : découper avec un volume borné
- ULCCComponentBase :
AddSectionPlaneetRemoveSectionPlane