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

ULCC2Component: Component del pipeline LCC2

Component específico del pipeline LCC2, que hereda ULCCComponentBase. Añade el control de las bandas de armónicos esféricos, un sistema de normales de iluminación y el control del umbral de profundidad.

MóduloLCC4UnrealRuntime
CabeceraLCC2Component.h
Clase padreULCCComponentBase
Contenido enALCC2Actor, ASogActor, ASpzActor, APlyActor
#include "LCC2Component.h"

Obtener la instancia:

ULCC2Component* Comp = Cast<ULCC2Component>(LCC2Actor->GetLCCComponent());

Este componente sirve a cuatro formatos de datos a la vez: el directorio LCC2, .sog, .spz y .ply. Los tres últimos reutilizan el mismo pipeline de renderizado construyendo metadatos virtuales, así que el Component obtenido es siempre ULCC2Component.

Nota: las interfaces de varios viewports de la clase base (SetPlayerLoadMode, SetPlayerRenderMode, SetSceneCaptureLoadMode, SetSceneCaptureRenderMode, ModifyPlayerTransform, CancelModifyPlayerTransform) no se aplican al pipeline LCC2; las llamadas no generan ningún error pero no producen el resultado esperado. Consultar ULCCComponent para más detalles.

Propiedades

PropiedadTipoValor predeterminadoRangoDescripción
SHBandsint3231~3Bandas de armónicos esféricos. Su valor predeterminado es el número de bandas almacenado en los datos, que también es el límite superior
LightingScalefloat0.00~1Brillo del color 3DGS original antes de aplicar la iluminación de la escena
AlphaThresholdfloat0.50.01~0.99Umbral de opacidad acumulada para la decisión de la profundidad mediana, un elemento avanzado
NormalModeELCC2NormalGenerationModeFixed—Modo de generación de normales, que decide cómo responde el 3DGS a la luz de la escena
FixedNormalFVector(0, 0, 1)—Normal en espacio de mundo compartida por todo el 3DGS en el modo Fixed
NormalPoleFVector(1, 0, 1)—Orientación de la superficie en el modo Hemispherical
NormalHemiSpreadfloat0.50~4Intensidad de la variación del sombreado en el modo Hemispherical

Las propiedades de normales llevan EditConditionHides, así que el panel Details solo muestra los elementos que usa el NormalMode actual.

Dos diferencias más respecto a la clase base:

  • MetaInfo (de tipo FLCC2MetaInfo) es un miembro privado, no accesible desde fuera en el lado de C++ y solo visible para Blueprint (solo lectura en el panel Details). En C++ usar GetMetaInfo2 para leer los campos completos.
  • La construcción reescribe el ajuste de carga completa de Performance a «casilla activada, valor false», lo contrario del valor predeterminado de FRenderInfo. En otras palabras, LCC2 no usa el renderizado de carga completa por defecto y hay que activarlo explícitamente cuando se necesite.

Armónicos esféricos

SetSHBands / GetSHBands

UFUNCTION(BlueprintCallable, Category = "XGrids")
void SetSHBands(int32 InSHBands);

UFUNCTION(BlueprintPure, Category = "XGrids")
int32 GetSHBands() const;

Establece cuántas bandas de armónicos esféricos participan en el cálculo, de 1 a 3. Se aplica a todos los formatos que renderiza este componente, incluidos LCC2, SOG, SPZ y PLY.

ParámetroTipoDescripción
InSHBandsint32Número de bandas, 1 es el más económico, 3 el más completo. Los valores que superan lo que almacenan los datos no tienen efecto

Notas de uso:

  • El valor predeterminado proviene de los datos cargados y es también el límite superior. Establecer 3 en datos que solo almacenan 2 bandas no aporta nada.
  • Comparado con desactivar los armónicos esféricos por completo mediante SetUseShcoef(false), reducir el número de bandas es un compromiso más fino.
  • Requiere que bUseShcoef esté activado y que el modo de renderizado sea 3DGS; de lo contrario el valor no participa en el cálculo.
  • Para el compromiso entre calidad y coste, consultar Ajustes visuales - SH Bands.
ULCC2Component* Comp = Cast<ULCC2Component>(Actor->GetLCCComponent());
if (Comp)
{
    // bajar a 2 bandas en dispositivos de gama media
    Comp->SetSHBands(2);
}

Configuración por nivel de calidad:

void ConfigureSH(ULCC2Component* Comp, EQualityTier Tier)
{
    if (!Comp || !Comp->CanSetShcoef())
    {
        return;   // los propios datos no tienen armónicos esféricos, no hay nada que hacer
    }

    switch (Tier)
    {
    case EQualityTier::High:
        Comp->SetUseShcoef(true);
        Comp->SetSHBands(3);
        break;
    case EQualityTier::Medium:
        Comp->SetUseShcoef(true);
        Comp->SetSHBands(2);
        break;
    case EQualityTier::Low:
        Comp->SetUseShcoef(false);   // desactivarlos por completo
        break;
    }
}

Iluminación

LightingScale

UPROPERTY(Interp, EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (UIMin = "0.0", UIMax = "1.0", ClampMin = "0.0", ClampMax = "1.0"))
float LightingScale = 0.0f;

Brillo del color base del 3DGS antes de aplicar la iluminación de la escena, de 0 a 1, valor predeterminado 0. 0 significa completamente gobernado por la iluminación de la escena, 1 significa que se conserva todo el brillo original.

Para el efecto del valor y cómo ajustarlo, consultar Normales e iluminación - LCC2 Lighting Scale.

Notas de uso:

  • Solo tiene sentido mientras LightMode es Lit; no surte efecto en Unlit.
  • Es una propiedad BlueprintReadWrite, que se asigna directamente, sin función Setter.
  • Está marcada como Interp, así que se puede animar con keyframes en Sequencer para ciclos de día y noche.
Comp->SetLightMode(ELightMode::Lit);
Comp->LightingScale = 0.3f;    // conservar el 30 % del brillo original, el resto de la luz de la escena

NormalMode

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting")
ELCC2NormalGenerationMode NormalMode = ELCC2NormalGenerationMode::Fixed;

Controla cómo responde la superficie del 3DGS a la iluminación de la escena. Los propios datos 3DGS no tienen normales geométricas, y los tres primeros modos construyen las normales por aproximación; solo ProxyMesh aporta normales reales.

Para una comparación de los cuatro modos, sus casos de uso y cómo ajustarlos, consultar Normales e iluminación; para las definiciones de los valores, consultar Enumeraciones.

// modo Fixed, normal apuntando hacia arriba
Comp->NormalMode = ELCC2NormalGenerationMode::Fixed;
Comp->FixedNormal = FVector(0.0, 0.0, 1.0);

// modo Hemispherical, ajustando la dirección en que barre la luz y el contraste
Comp->NormalMode = ELCC2NormalGenerationMode::Hemispherical;
Comp->NormalPole = FVector(1.0, 0.0, 1.0);
Comp->NormalHemiSpread = 1.2f;

FixedNormal

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (EditCondition = "NormalMode == ELCC2NormalGenerationMode::Fixed", EditConditionHides))
FVector FixedNormal = FVector(0.0, 0.0, 1.0);

Solo en el modo Fixed. Normal en espacio de mundo compartida por todo el 3DGS, que apunta hacia arriba por defecto. No es necesario normalizarla.

Notas de uso:

  • Una única normal compartida por todo significa que el brillo de todo es un único valor, igual a dot(normal, dirección de la luz).
  • La luz que llega por detrás de la normal oscurece todo, posiblemente hasta el negro. En una escena de exterior con la normal apuntando hacia arriba y la fuente de luz por encima, esto normalmente no es un problema.
  • Cuando el asunto principal de la escena es una pared, establecer la normal según la orientación de la pared es más razonable.

NormalPole

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (EditCondition = "NormalMode == ELCC2NormalGenerationMode::Hemispherical", EditConditionHides))
FVector NormalPole = FVector(1.0, 0.0, 1.0);

Solo en el modo Hemispherical. La dirección hacia la que se considera que mira la superficie, que decide cómo se desplaza el límite del sombreado sobre el 3DGS a medida que la luz direccional rota. No es necesario normalizarla.

Cómo ajustarla: colocar primero la luz direccional y después ajustar este vector observando si la dirección del límite del sombreado coincide con lo esperado.

NormalHemiSpread

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XGrids|Lighting",
    meta = (UIMin = "0.0", UIMax = "4.0", ClampMin = "0.0",
        EditCondition = "NormalMode == ELCC2NormalGenerationMode::Hemispherical", EditConditionHides))
float NormalHemiSpread = 0.5f;

Solo en el modo Hemispherical. Intensidad de la variación del sombreado a lo largo de la superficie, de 0 a 4, valor predeterminado 0.5.

Un valor menor hace el sombreado más plano y uniforme; un valor mayor hace más fuerte el contraste entre las zonas iluminadas y las sombreadas.

AlphaThreshold

UPROPERTY(Interp, EditAnywhere, BlueprintReadWrite, Category = "XGrids", AdvancedDisplay,
    meta = (UIMin = "0.01", UIMax = "0.99", ClampMin = "0.01", ClampMax = "0.99"))
float AlphaThreshold = 0.5f;

Umbral de opacidad acumulada para la decisión de la profundidad mediana, de 0.01 a 0.99, valor predeterminado 0.5. Un elemento avanzado.

La opacidad se acumula de cerca a lejos y, cuando el valor acumulado alcanza este umbral, la profundidad actual se registra como la profundidad representativa de ese píxel. Un valor menor sesga la profundidad hacia el lado de la cámara, un valor mayor hacia el lado lejano.

Afecta a la oclusión entre el 3DGS y los meshes tradicionales, a la proyección de sombras y al posprocesado. El valor predeterminado se adapta a la mayoría de los casos; para una descripción de los valores, consultar Ajustes visuales - Depth Threshold.

GetEffectiveNormalGenerationMode

UFUNCTION(BlueprintPure, Category = "XGrids")
ELCC2NormalGenerationMode GetEffectiveNormalGenerationMode() const;

Devuelve el modo de normales realmente en efecto después de la validación de la licencia.

Valor de retorno: el valor original de NormalMode cuando hay licencia; Fixed cuando se selecciona ProxyMesh, restringido por licencia, sin tener una.

Notas de uso:

  • La propiedad NormalMode almacenada no se modifica; solo el renderizado sigue el modo degradado. Por tanto, leer NormalMode y leer esta función pueden discrepar.
  • Usarlo para los mensajes de la interfaz. Cuando el usuario seleccionó ProxyMesh pero lo que se ejecuta realmente es Fixed, la interfaz debería indicarlo.
const ELCC2NormalGenerationMode Requested = Comp->NormalMode;
const ELCC2NormalGenerationMode Effective = Comp->GetEffectiveNormalGenerationMode();

if (Requested != Effective)
{
    UE_LOG(LogTemp, Warning,
        TEXT("ProxyMesh mode requires a license, fell back to Fixed"));
}

Blueprint como texto:

[Get Effective Normal Generation Mode]
        Target = (LCC2 Component)
        │ Return Value ──┐
        ▼                │
[Equal (Enum)] ◀─────────┘
        A = (Return Value)
        B = Proxy Mesh
        │
        ▼
[Branch]
        │ False
        ▼
[Print String]  In String = "ProxyMesh requires a license, fell back to Fixed"

Otros métodos

GetMetaInfo2

FLCC2MetaInfo GetMetaInfo2();

Devuelve los metadatos completos de LCC2. Solo C++.

Comparado con GetMetaInfo() de la clase base, añade la ruta de trabajo, el tipo de origen de los datos, las bandas de armónicos esféricos, el nodo raíz del octree, la lista de archivos y más. Para los campos, consultar Structs.

GetLccVersion

virtual ELCCVersion GetLccVersion() const override;

Devuelve siempre ELCCVersion::LCC2.

Véase también

  • Normales e iluminación: descripción completa de los modos de normales y de la escala de iluminación
  • Ajustes visuales: valores de las bandas SH, del umbral de profundidad y de otros parámetros
  • ULCCComponentBase: interfaces comunes de renderizado y rendimiento
  • ALCC2ProxyMesh: el Actor que acompaña al modo de normales ProxyMesh
  • Actors SOG / SPZ / PLY: estos tres formatos también usan este componente
  • Enumeraciones: valores del modo de normales
Anterior
ULCCComponent
Siguiente
Actors SOG / SPZ / PLY