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

    • Descripción del producto
    • Operaciones básicas
    • Uso de la LCC Scan App
    • Mantenimiento y cuidado
    • FAQ
  • Serie Lixel K

    • Lixel K1

      • Descripción del producto
      • Operaciones básicas
      • Activación y conexión del dispositivo
      • Flujo de escaneo
      • Obtener nube de puntos con coordenadas absolutas
      • Fusión de mapas
      • Recomendaciones de planificación de rutas para escenas típicas
      • Precauciones
      • FAQ
    • Lixel K2

      • Descripción del producto
      • Operaciones básicas
      • Activación y conexión
      • Flujo de escaneo
      • Obtener nube de puntos con coordenadas absolutas
      • Fusión de mapas
      • Recomendaciones de planificación de rutas para escenas típicas
      • Precauciones
      • FAQ
  • Serie Lixel L

    • Lixel L2 Pro

      • Descripción del producto
      • Operaciones básicas
      • Activación y conexión del dispositivo
      • Flujo de escaneo
      • Obtener nube de puntos con coordenadas absolutas
      • Punto de medición
      • Apéndice
      • FAQ
  • Lixel Studio

    • Versión y derechos de autor
    • Instalación y activación
    • Interfaz del software
    • Operaciones de archivo
    • Procesamiento de proyectos
    • Herramientas
    • Dibujo 2D
    • Aplicaciones
    • Ajustes
    • Conexión de dispositivo
  • Lixel CyberColor

    • LCC Studio

      • Primeros pasos
      • Versión y actualizaciones
      • Descarga e instalación
      • Descripción general de la interfaz y navegación
      • Antes de la reconstrucción
      • Reconstrucción de modelos
      • Reconstrucción de modelo único
      • Fusión de mapas
      • Fusión aire-tierra
      • Reconstrucción aérea
      • Mis modelos
      • Otras funciones
      • Ajustes y cuenta
      • Converter
      • Reconstrucción por vídeo
      • Preguntas frecuentes
    • LCC Scene Editor

      • Versión y actualizaciones
      • Cuenta e inicio de sesión
      • Descripción general del producto y página de inicio
      • Interfaz del editor
      • Modos de navegación
      • Archivo
      • Configuración
      • Editar
      • Ventana
      • Barra de herramientas global
      • Activos y propiedades
      • Barra de herramientas izquierda
      • Puntos de vista
      • Portal
      • Skybox
      • Anotaciones
      • Medición
      • Flythrough
      • Informe de escena
      • 3D Layout
      • Minimapa
      • Modo Vista previa (Viewer)
      • Ayuda
      • Preguntas frecuentes (FAQ)
      • Punto de inicio
    • LCC Model Editor

      • Versión y actualizaciones
      • Guía del usuario
      • Visión general e interfaz
      • Operaciones de archivo
      • Selectores
      • Edición de modelos
      • Medición
      • Corrección de color
      • Gestión de activos
      • Configuración y ayuda
      • Preguntas frecuentes
    • Capture Guide

      • Descripción general
      • Descripción general de los dispositivos de captura
      • Principios generales de captura
      • Captura de escenas interiores
      • Captura de escenas exteriores
      • Captura a gran escala (Map Fusion)
      • Captura con aerial-ground map fusion
      • Captura de objetos
      • Captura de personas
      • Captura para reconstrucción a partir de vídeo
      • HD Enhancement
      • Puntos de control (Lixel P1)
      • Preguntas frecuentes y resolución de problemas
    • Historial de versiones
  • Plugins y SDK

    • Unreal

      • Introducción
      • Inicio rápido - Windows
      • Inicio rápido - Linux
      • Inicio rápido - Quest3
      • Ediciones y licencias
      • Renderizado
      • Ajustes visuales
      • Normales e iluminación
      • Edición de escenas
      • Parámetros de rendimiento
      • Guía de rendimiento
      • Integración con plugins de terceros y del motor
      • Proxy Mesh
      • Animación de carga
      • Colisión
      • Compatibilidad con Navigation System
      • Compatibilidad con Single Layer Water
      • Localización
      • Preguntas frecuentes
      • Resolución de problemas
      • Logs y diagnóstico
      • Contacto
      • Referencia de API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actors SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ULCCUtilLibrary
        • Enumeraciones
        • Structs
      • Registro de cambios

        • 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: volumen de recorte del 3DGS

Actor de volumen de recorte que recorta parte de una escena LCC con un volumen de caja o de esfera.

MóduloLCC4UnrealRuntime
CabeceraTools/LCCClippingVolume.h
Clase padreAVolume
Nombre mostrado en el panelLCC Clipping Volume
#include "Tools/LCCClippingVolume.h"

Para los pasos de uso, una demostración y la descripción del panel de propiedades, consultar Edición de escenas - Volúmenes de recorte. Esta página solo enumera las interfaces.

Propiedades

PropiedadTipoDescripción
bEnabledboolSi participa en el recorte
ModeEClipTypeInside recorta el interior del volumen, Outside recorta el exterior
VolumeTypeEClipVolumeTypeBox para una caja, Sphere para una esfera

Para el significado de los valores, consultar EClipType y EClipVolumeType.

Ninguna de las tres propiedades tiene Setter, y una asignación en tiempo de ejecución requiere una llamada a Refresh para surtir efecto. Lo mismo se aplica a un cambio del transform en tiempo de ejecución.

Métodos

SetUpdateComponent

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

Vincula el Component LCC que se debe actualizar.

ParámetroTipoDescripción
ComponentULCCComponentBase*Component de destino

Refresh() necesita esta vinculación para surtir efecto, ya que internamente marca el Component vinculado como necesitado de reconstruir su estado de renderizado. Sin vinculación, Refresh() no provoca ninguna actualización del renderizado.

Añadir un volumen con AddClippingVolume suele establecer ya la asociación; cuando un cambio en un volumen de recorte creado dinámicamente en tiempo de ejecución no surte efecto, comprobar primero si se llamó a este método.

Refresh

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

Provoca manualmente una actualización del resultado del recorte; internamente marca el Component LCC vinculado como necesitado de reconstruir su estado de renderizado.

Es necesaria una llamada después de cambiar un volumen de recorte en tiempo de ejecución para que el cambio surta efecto, lo que incluye:

  • Cambios de propiedades: bEnabled, Mode, VolumeType. Estas propiedades no tienen Setter, y una asignación directa no notifica al lado del renderizado.
  • Cambios del transform: SetActorLocation, SetActorRotation, SetActorScale3D.

Las actualizaciones automáticas solo se producen en el editor: los cambios de propiedades en el panel Details pasan por PostEditChangeProperty, y arrastrar el gizmo pasa por funciones como EditorApplyTranslation. Todas esas vías están bajo WITH_EDITOR y no existen en tiempo de ejecución.

Requiere que se haya llamado a SetUpdateComponent, o que la asociación se haya establecido mediante AddClippingVolume. No se provoca ninguna actualización del renderizado mientras no haya ningún Component vinculado.

Al cambiar varios volúmenes de recorte a la vez, llamar a Refresh() en cada uno después de cambiar sus propiedades.

Creación en tiempo de ejecución

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

    // el tamaño de un AVolume se controla mediante el escalado
    Volume->SetActorScale3D(Extent / 100.0f);

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

    return Volume;
}

Para alternar el efecto del recorte de forma temporal, no añadir ni eliminar elementos del array; cambiar bEnabled es más ligero. No olvidar llamar a Refresh() después del cambio:

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

Mover un volumen de recorte en tiempo de ejecución para una animación también requiere una actualización cada vez:

// desplazar el volumen de recorte a lo largo de la escena
FVector Loc = ClipVolume->GetActorLocation();
Loc.X += 200.0f * DeltaTime;
ClipVolume->SetActorLocation(Loc);
ClipVolume->Refresh();          // los cambios del transform en tiempo de ejecución no se actualizan automáticamente

Para los nodos de Blueprint, consultar Edición de escenas - Métodos de Blueprint.

Notas

  • El recorte solo afecta al renderizado, no a la colisión. Una zona recortada puede seguir siendo impactada por un rayo y sigue bloqueando a un personaje.
  • Varios volúmenes de recorte que actúan a la vez se evalúan de forma independiente y sus efectos se acumulan. Mezclar Inside y Outside produce fácilmente resultados inesperados.
  • El número de volúmenes de recorte activos a la vez está limitado, a 50 sin licencia; los excedentes no participan en el renderizado y se registra una advertencia. Los volúmenes de recorte y los planos de sección comparten esta cuota. Para las licencias, consultar Ediciones y licencias.
  • Destruir un volumen de recorte solo provoca una actualización del renderizado y no elimina el elemento del array ClippingVolumes del Component, lo que deja un puntero obsoleto en el array (se omite automáticamente durante el renderizado). Para mantener el array limpio, llamar a RemoveClippingVolume antes de destruirlo.

Véase también

  • Edición de escenas: descripción completa de uso
  • ALCCSectionPlane: seccionado con un plano
  • ULCCComponentBase: AddClippingVolume y RemoveClippingVolume
Anterior
ALCC2ProxyMesh
Siguiente
ALCCSectionPlane