XGRIDSDokumentation
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • PortalCam

    • Produktübersicht
    • Grundlegende Bedienung
    • LCC Scan App verwenden
    • Wartung und Pflege
    • FAQ
  • Lixel K-Serie

    • Lixel K1

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
    • Lixel K2

      • Produktübersicht
      • Grundlegende Bedienung
      • Aktivierung und Verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
  • Lixel L-Serie

    • Lixel L2 Pro

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Messpunkt
      • Anhang
      • FAQ
  • Lixel Studio

    • Version und Copyright
    • Installation und Aktivierung
    • Softwareoberfläche
    • Dateioperationen
    • Projektverarbeitung
    • Werkzeuge
    • 2D-Zeichnung
    • Anwendungen
    • Einstellungen
    • Geräteverbindung
  • Lixel CyberColor

    • LCC Studio

      • Erste Schritte
      • Version und Updates
      • Download und Installation
      • Oberfläche und Navigation
      • Vor der Rekonstruktion
      • Modellrekonstruktion
      • Einzelmodell-Rekonstruktion
      • Kartenfusion
      • Boden-Luft-Fusion
      • Luftbild-Rekonstruktion
      • Meine Modelle
      • Weitere Funktionen
      • Einstellungen und Konto
      • Converter
      • Videorekonstruktion
      • Häufige Fragen / FAQ
    • LCC Scene Editor

      • Version und Updates
      • Konto und Anmeldung
      • Produktübersicht und Startseite
      • Editor-Oberfläche
      • Navigationsmodi
      • Datei
      • Einstellungen
      • Bearbeiten
      • Fenster
      • Globale Symbolleiste
      • Assets und Eigenschaften
      • Linke Symbolleiste
      • Ansichtspunkte
      • Portal
      • Skybox
      • Markierungen
      • Messung
      • Flythrough
      • Szenenbericht
      • 3D-Layout
      • Minikarte
      • Vorschaumodus (Viewer)
      • Hilfe
      • Häufige Fragen (FAQ)
      • Spawn-Point
    • LCC Model Editor

      • Version und Updates
      • Benutzerhandbuch
      • Übersicht und Oberfläche
      • Dateioperationen
      • Selektoren
      • Modelle bearbeiten
      • Messung
      • Farbkorrektur
      • Asset-Verwaltung
      • Einstellungen und Hilfe
      • Häufige Fragen
    • Capture Guide

      • Überblick
      • Überblick über die Aufnahmegeräte
      • Allgemeine Aufnahmeprinzipien
      • Aufnahme von Innenszenen
      • Aufnahme von Außenszenen
      • Großflächige Aufnahme (Map Fusion)
      • Aerial-Ground Map Fusion – Aufnahme
      • Objektaufnahme
      • Personenaufnahme
      • Video-Rekonstruktionsaufnahme
      • HD Enhancement
      • Kontrollpunkte (Lixel P1)
      • FAQ und Fehlerbehebung
    • Versionsgeschichte
  • Plugin & SDK

    • Unreal

      • Einführung
      • Schnellstart - Windows
      • Schnellstart - Linux
      • Schnellstart - Quest3
      • Editionen und Lizenzierung
      • Rendering
      • Bildeinstellungen
      • Normalen und Beleuchtung
      • Szenenbearbeitung
      • Leistungsparameter
      • Leitfaden zur Leistung
      • Integration von Drittanbieter- und Engine-Plugins
      • Proxy Mesh
      • Ladeanimation
      • Kollision
      • Unterstützung des Navigation System
      • Unterstützung von Single Layer Water
      • Lokalisierung
      • FAQ
      • Fehlerbehebung
      • Logs und Diagnose
      • Kontakt
      • API-Referenz

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG- / SPZ- / PLY-Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Änderungsprotokoll

        • 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: 3DGS-Clipping-Volumen

Clipping-Volumen-Actor, der einen Teil einer LCC-Szene mit einem Box- oder Kugel-Volumen wegschneidet.

ModulLCC4UnrealRuntime
HeaderTools/LCCClippingVolume.h
BasisklasseAVolume
Angezeigter Name im PanelLCC Clipping Volume
#include "Tools/LCCClippingVolume.h"

Zu den Schritten der Verwendung, einer Vorführung und der Beschreibung des Eigenschaften-Panels siehe Szenenbearbeitung - Clipping-Volumen. Diese Seite nennt nur die Schnittstellen.

Eigenschaften

EigenschaftTypBeschreibung
bEnabledboolOb es am Beschneiden teilnimmt
ModeEClipTypeInside schneidet das Innere des Volumens weg, Outside schneidet das Äußere weg
VolumeTypeEClipVolumeTypeBox für einen Kasten, Sphere für eine Kugel

Zur Bedeutung der Werte siehe EClipType und EClipVolumeType.

Keine der drei Eigenschaften hat einen Setter, und eine Zuweisung zur Laufzeit erfordert einen Aufruf von Refresh, um wirksam zu werden. Dasselbe gilt für eine Änderung des Transforms zur Laufzeit.

Methoden

SetUpdateComponent

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

Bindet die zu aktualisierende LCC Component.

ParameterTypBeschreibung
ComponentULCCComponentBase*Ziel-Component

Refresh() benötigt diese Bindung, um wirksam zu werden, da es intern die gebundene Component als „Render-Zustand neu aufzubauen“ markiert. Ohne Bindung wird keine Aktualisierung des Renderings ausgelöst.

Das Hinzufügen eines Volumens mit AddClippingVolume stellt die Zuordnung meist schon her; wenn eine Änderung an einem zur Laufzeit dynamisch erzeugten Clipping-Volumen keine Wirkung hat, zuerst prüfen, ob diese Methode aufgerufen wurde.

Refresh

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

Löst eine Aktualisierung des Beschneidungsergebnisses von Hand aus; intern wird die gebundene LCC Component als „Render-Zustand neu aufzubauen“ markiert.

Ein Aufruf ist nach dem Ändern eines Clipping-Volumens zur Laufzeit erforderlich, damit die Änderung wirksam wird, darunter:

  • Änderungen von Eigenschaften: bEnabled, Mode, VolumeType. Diese Eigenschaften haben keinen Setter, und eine unmittelbare Zuweisung benachrichtigt die Rendering-Seite nicht.
  • Änderungen des Transforms: SetActorLocation, SetActorRotation, SetActorScale3D.

Automatische Aktualisierungen finden nur im Editor statt: Änderungen von Eigenschaften im Details-Panel laufen über PostEditChangeProperty, das Ziehen der Gizmo über Funktionen wie EditorApplyTranslation. Diese Wege liegen alle unter WITH_EDITOR und existieren zur Laufzeit nicht.

Es erfordert, dass SetUpdateComponent aufgerufen wurde oder dass die Zuordnung über AddClippingVolume hergestellt wurde. Solange keine Component gebunden ist, wird keine Aktualisierung des Renderings ausgelöst.

Werden mehrere Clipping-Volumen auf einmal geändert, Refresh() an jedem einzelnen aufrufen, nachdem seine Eigenschaften geändert wurden.

Erzeugen zur Laufzeit

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

    // die Größe eines AVolume wird über die Skalierung gesteuert
    Volume->SetActorScale3D(Extent / 100.0f);

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

    return Volume;
}

Um die Beschneidung zeitweise umzuschalten, keine Array-Elemente hinzufügen und entfernen; das Ändern von bEnabled ist leichter. Nach der Änderung Refresh() aufrufen:

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

Das Bewegen eines Clipping-Volumens zur Laufzeit für eine Animation erfordert ebenfalls jedes Mal eine Aktualisierung:

// das Clipping-Volumen über die Szene führen
FVector Loc = ClipVolume->GetActorLocation();
Loc.X += 200.0f * DeltaTime;
ClipVolume->SetActorLocation(Loc);
ClipVolume->Refresh();          // Änderungen des Transforms zur Laufzeit aktualisieren nicht automatisch

Zu den Blueprint-Nodes siehe Szenenbearbeitung - Blueprint-Methoden.

Hinweise

  • Das Beschneiden wirkt nur auf das Rendering, nicht auf die Kollision. Ein weggeschnittener Bereich kann weiterhin von einem Strahl getroffen werden und blockiert weiterhin einen Charakter.
  • Mehrere gleichzeitig wirkende Clipping-Volumen werden unabhängig ausgewertet und ihre Wirkungen überlagern sich. Das Mischen von Inside und Outside führt leicht zu unerwarteten Ergebnissen.
  • Die Anzahl der gleichzeitig wirksamen Clipping-Volumen ist begrenzt, ohne Lizenz auf 50; die überzähligen nehmen nicht am Rendering teil und es wird eine Warnung protokolliert. Clipping-Volumen und Schnittebenen teilen sich dieses Kontingent. Zur Lizenzierung siehe Editionen und Lizenzierung.
  • Das Zerstören eines Clipping-Volumens löst nur eine Aktualisierung des Renderings aus und entfernt das Element nicht aus dem Array ClippingVolumes der Component, sodass ein veralteter Zeiger im Array bleibt (beim Rendering automatisch übersprungen). Um das Array sauber zu halten, vor dem Zerstören RemoveClippingVolume aufrufen.

Siehe auch

  • Szenenbearbeitung: vollständige Beschreibung der Verwendung
  • ALCCSectionPlane: Schneiden mit einer Ebene
  • ULCCComponentBase: AddClippingVolume und RemoveClippingVolume
Zurück
ALCC2ProxyMesh
Weiter
ALCCSectionPlane