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

    • PortalCam P1

      • 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 L3

      • Descripción del producto
      • Operaciones básicas
      • Activación y conexión del dispositivo
      • Flujo de escaneo
      • Obtener nube de puntos con coordenadas absolutas
      • Apéndice
  • 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
    • Preguntas Frecuentes
  • 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
    • Buenas Prácticas

      • Fusión de varios modelos 3DGS de gran tamaño
    • 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
      • Rasterización Tiled (experimental)
      • 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
      • Buenas prácticas

        • Reiluminar 3DGS con una malla de LixelStudio
      • Referencia de API

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

        • v3.4.0
        • 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
    • Unity

      • Introducción al SDK de Unity
      • Funciones técnicas
      • Requisitos del entorno de desarrollo
      • Guía de inicio rápido para PC
      • Guía de optimización de ajustes del proyecto
      • Guía de desarrollo para Pico 4 Ultra
      • Guía de streaming desde PC para Pico 4 Ultra
      • Guía de desarrollo para Quest 3
      • Guía de streaming desde PC para Quest 3
      • Guía de desarrollo con OpenXR
      • Guía de Business Streaming para Pico 4 Ultra
      • Glosario
      • Preguntas frecuentes
      • Contáctanos
      • Guía de desarrollo de funciones

        • Guía de desarrollo de renderizado mixto de varias escenas
        • Guía de desarrollo de recepción de sombras
        • Guía de desarrollo de iluminación en tiempo real
        • Guía de desarrollo de renderizado multicámara
        • Guía de desarrollo de renderizado de imágenes de alta resolución
        • Guía de desarrollo de compatibilidad de formatos de datos LCC y LCC2
        • Guía de desarrollo del efecto de carga
        • Guía de desarrollo de cambio de modo de renderizado Mip
        • Guía de desarrollo de ajuste a bordes y esquinas
        • Guía de desarrollo de decal proyectado
        • Guía de desarrollo de decal proyectado de vídeo
        • Guía de desarrollo de resaltado
        • Guía de desarrollo de recorte en tiempo real
        • Guía de desarrollo de ajuste de color
        • Guía de desarrollo para obtener los datos de malla de la escena
        • Guía de desarrollo del modo Editor
        • Guía de configuración de parámetros de rendimiento de renderizado
        • Guía de desarrollo de co-empaquetado de aplicación y datos
        • Guía de desarrollo del sistema de colisiones
        • Guía de problemas de permisos de desarrollo en macOS
        • Guía de desarrollo de compilación y empaquetado para dispositivos iOS
      • Referencia de API

        • LCCManager
        • Renderer
        • Tipos de datos
      • Registro de cambios

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
    • Web

      • Introducción
      • Guía de optimización del rendimiento de renderizado
      • Configuración de gráficos
      • Preguntas frecuentes
      • Referencia de API

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • Registro de cambios

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0

Renderer: Instancia de renderizado

Una instancia de renderizado LCC, responsable de la carga de datos y el control de renderizado de una sola escena 3DGS. Se crea mediante LCCManager.GetRender() y no puede instanciarse directamente.

NamespaceLCCCore

Propiedades

PropiedadTipoAccesoDescripción
TransformTransformSolo lecturaEl componente Transform al que se adjunta la instancia de renderizado
IsEnableboolSolo lecturaSi la instancia de renderizado está activa; por defecto true
IsRenderAllboolSolo lecturaSi se están renderizando los datos LOD0 completos (frente al modo de streaming / recorrido LOD); por defecto false

Métodos

Los métodos están agrupados por propósito:

  • Carga de datos y ciclo de vida
  • Control en tiempo de ejecución y consultas

Carga de datos y ciclo de vida

Load

public void Load(string _filePath, Action<float> _onProgress, Action _onComplete, Action<string> _onError = null)

Carga un archivo de datos 3DGS. Admite .lcc2 (archivo local o remoto HTTP) y los formatos nativos .ply / .sog / .spz / .splat / .ksplat (solo archivos locales).

ParámetroTipoDescripción
_filePathstringRuta del archivo de datos (ruta local o URL HTTP)
_onProgressAction<float>Devolución de llamada de progreso de carga, puede ser null
_onCompleteActionDevolución de llamada de finalización de carga, puede ser null
_onErrorAction<string>Devolución de llamada de error de carga (opcional), con la descripción del error como parámetro

Notas:

  • La devolución de llamada _onComplete se dispara después de que los datos aterrizan realmente en la GPU.
  • Operaciones como la recepción de sombras y la activación de efectos deben llamarse dentro de la devolución de llamada _onComplete.
  • Los formatos nativos siempre usan la ruta de carga completa de SingleRender (sin fragmentación LOD); el progreso se informa mediante _onProgress y los errores mediante _onError.
  • El modo MultiRender no permite fuentes de datos HTTP ni formatos nativos.
  • HTTP solo admite .lcc2; los formatos nativos son solo rutas locales y solo en modo SingleRender.
  • SetPlatformType() / SwitchRenderPass() / SetMainCamera() y otros requisitos previos deben completarse primero.
  • Debes llamar a Unload() o Dispose() antes de llamar a Load() de nuevo; llamar a Load() mientras una carga está en progreso se rechaza y dispara _onError.

Ejemplo:

renderer.Load("D:/data/scene.lcc2",
    p => Debug.Log($"Cargando {p:P0}"),
    () => {
        Debug.Log("Carga completa");
        lccManager.SetShadowReceive(true);
    });

Unload

public void Unload()

Libera los datos cargados actualmente y vuelve al estado de "creado pero no cargado", manteniendo el registro del manager de la instancia. La misma instancia Renderer puede reutilizarse ciclando repetidamente Load → Unload → Load.

Notas:

  • Diferencia con Dispose(): no se elimina el registro del manager y la instancia puede reutilizarse.
  • Después de Unload(), IsEnable es false; llamar a Load() de nuevo restablece todo el estado de datos.
  • Solo se ejecuta cuando los datos han terminado de cargarse; devuelve inmediatamente cuando no está cargado o ya se hizo Dispose().

Ejemplo:

renderer.Unload();
renderer.Load(newFilePath, null, () => Debug.Log("Recargado"));

Dispose

public void Dispose()

Destruye la instancia de renderizado y libera todos los recursos de GPU y la memoria. La instancia no puede usarse después de la destrucción, y todos los métodos públicos se vuelven ineficaces automáticamente.

Notas:

  • Notifica automáticamente al LCCManager para eliminar la referencia después de la llamada.

Ejemplo:

renderer.Dispose();
renderer = null;

Control en tiempo de ejecución y consultas

SetEnable

public void SetEnable(bool _enable)

Establece el estado de activación de la instancia de renderizado. Cuando está deshabilitada, no participa en el renderizado ni en la selección de LOD.

ParámetroTipoDescripción
_enableboolSi se activa

Notas:

  • No libera recursos y puede reactivarse en cualquier momento.

Ejemplo:

renderer.SetEnable(false); // Ocultar
renderer.SetEnable(true);  // Mostrar

SetAlpha

public void SetAlpha(float alpha)

Establece la opacidad independiente del Renderer actual. A diferencia del alfa global a nivel de proceso de LCCManager.SetAlpha(), esta API solo afecta al Renderer actual. Alfa final = cobertura de splat × alfa global de LCCManager × alfa de este Renderer.

ParámetroTipoDescripción
alphafloatOpacidad independiente del Renderer actual, rango [0, 1], se limita automáticamente cuando se supera

Notas:

  • Solo surte efecto en la ruta MultiRender / RenderCore (PC / Mac); en esa ruta cada splat lleva un renderID, y el shader indexa el array de alfa por Renderer mediante renderID.
  • La ruta FullRender / Mobile no tiene renderID, por lo que esta API es una operación nula allí (el valor se almacena en caché y se aplica automáticamente cuando se cambia a la ruta RenderCore más tarde).

Ejemplo:

renderer.SetAlpha(0.5f);

SetRenderAll

public void SetRenderAll(bool _renderAll)

Establece si se usa el modo de renderizado completo (renderizar completamente los datos LOD0). Surte efecto en la siguiente llamada a Load() y no afecta al conjunto de datos cargado actualmente.

ParámetroTipoDescripción
_renderAllboolSi se renderiza por completo

Notas:

  • Solo compatible con plataformas PC / Mac; sin efecto en móvil / VR.
  • Consulta el estado actual con la propiedad IsRenderAll.

Ejemplo:

renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Carga completa"));

SetColliderEnable

// Valor de retorno: bool, true=configurado correctamente, false=los datos no tienen collider o la instancia está inactiva
public bool SetColliderEnable(bool _enable)

Activa o desactiva la función de collider. Una vez activada, IntersectsSphere() / IntersectsCapsule() y RaycastMesh() pasan a estar disponibles.

ParámetroTipoDescripción
_enableboolSi se habilita el collider

Notas:

  • Los datos deben contener un nodo Collider, de lo contrario se devuelve false.
  • El Renderer debe estar activo.

Ejemplo:

bool ok = renderer.SetColliderEnable(true);
if (!ok) Debug.LogWarning("Los datos no contienen un collider");

SetEnvironment

public void SetEnvironment(bool _env)

Activa o desactiva el renderizado de datos de entorno. Los datos de entorno son una nube de puntos de fondo de baja precisión utilizada para rellenar vistas lejanas.

ParámetroTipoDescripción
_envboolSi se renderizan los datos de entorno

Notas:

  • Los datos deben contener nodos de entorno.
  • Los datos de entorno son independientes del sistema LOD de los datos principales.

Ejemplo:

renderer.SetEnvironment(true);

GetBounds

public void GetBounds(out Vector3 max, out Vector3 min)

Obtiene la caja delimitadora alineada con los ejes (coordenadas de mundo) de los datos renderizados.

ParámetroTipoDescripción
maxout Vector3Punto máximo de la caja delimitadora (coordenadas de mundo)
minout Vector3Punto mínimo de la caja delimitadora (coordenadas de mundo)

Notas:

  • Devuelve Vector3.zero cuando los datos no están completamente cargados.
  • Puede usarse para el posicionamiento de la cámara y el cálculo del ángulo de visión.

Ejemplo:

renderer.GetBounds(out Vector3 max, out Vector3 min);
Vector3 center = (max + min) / 2f;
Vector3 size = max - min;

GetSourceType

// Valor de retorno: SourceType
public SourceType GetSourceType()

Obtiene el tipo de origen de los datos cargados; consulta SourceType.

Notas:

  • Devuelve SourceType.None cuando los datos no están cargados.

GetDataType

// Valor de retorno: DataType
public DataType GetDataType()

Obtiene el tipo de formato de los datos cargados; consulta DataType.

Notas:

  • Devuelve DataType.None cuando los datos no están cargados.

GetMeta (desde la ruta del archivo)

// Valor de retorno: bool, true=leído correctamente
public bool GetMeta(string _filePath, out SplatMeta _metaData)

Lee los metadatos de los datos 3DGS desde la ruta del archivo especificado sin cargar completamente los datos.

ParámetroTipoDescripción
_filePathstringRuta del archivo de datos
_metaDataout SplatMetaMetadatos de salida

Notas:

  • Admite rutas locales y URL HTTP.
  • Solo lee los metadatos de la cabecera del archivo y no carga los datos de la nube de puntos.
  • Devuelve false cuando la ruta está vacía o el archivo no existe.

Ejemplo:

if (renderer.GetMeta(filePath, out SplatMeta meta))
{
    Debug.Log(meta.source);
    Debug.Log(meta.dataType);
}

GetMeta (desde los datos cargados)

// Valor de retorno: bool, true=leído correctamente
public bool GetMeta(out SplatMeta _metaData)

Obtiene los metadatos de los datos cargados actualmente. Si los datos no han terminado de cargarse, intenta leer desde la ruta del archivo.

ParámetroTipoDescripción
_metaDataout SplatMetaMetadatos de salida

Ejemplo:

if (renderer.GetMeta(out SplatMeta meta))
{
    Debug.Log(meta.source);
}

GetMeshBlockInfos

// Valor de retorno: List<LCCMeshBlockInfo>, metadatos de los bloques Mesh de colisión; null cuando no hay Mesh o no está disponible
public List<LCCMeshBlockInfo> GetMeshBlockInfos()

Devuelve los metadatos de todos los bloques de malla de colisión (id, caja delimitadora de mundo / local, recuento de vértices, recuento de caras). Sin I/O, sin análisis — solo lee los metadatos ya en memoria. Consulta LCCMeshBlockInfo.

Notas:

  • Solo plataforma PC / Mac + fuente de datos local; debe llamarse en el hilo principal.
  • Uso típico: primero úsalo para obtener la caja delimitadora de mundo de cada bloque, elige los ids necesarios y luego llama a GetMeshes(ids) para leer solo esos bloques.
  • Los formatos nativos (PLY / SOG / SPZ / splat / ksplat) no tienen Mesh y devuelven null (normal, sin log).

Ejemplo:

var infos = renderer.GetMeshBlockInfos();
foreach (var info in infos)
{
    Debug.Log($"{info.id}: verts={info.vertexCount}, faces={info.faceCount}");
}

GetMeshes

// Valor de retorno: List<LCCMeshBlock>, todos los datos de geometría de la Mesh de colisión; null cuando no está disponible
public List<LCCMeshBlock> GetMeshes()

Devuelve síncronamente los datos de geometría de todos los bloques de malla de colisión (vértices + índices de triángulos, en coordenadas locales). Es una operación pesada (lectura síncrona del disco + análisis + asignación), así que llámala una vez y almacena en caché tú mismo — nunca en cada fotograma. Consulta LCCMeshBlock.

Notas:

  • Solo plataforma PC / Mac + fuente de datos local; debe llamarse en el hilo principal.
  • Para escenas grandes, usa GetMeshBlockInfos() para elegir ids + GetMeshes(ids) para evitar asignar una gran cantidad de memoria administrada de una sola vez.
  • Un solo bloque puede tener más de 65535 vértices, por lo que mesh.indexFormat = IndexFormat.UInt32 debe establecerse antes de construir la Mesh.

Ejemplo:

var meshes = renderer.GetMeshes();
foreach (var block in meshes)
{
    // block.vertices / block.triangles están en el sistema de coordenadas local del objeto
}

GetMeshes (por id)

// Valor de retorno: List<LCCMeshBlock>, datos de geometría de la Mesh de colisión de los ids especificados; null cuando no hay impacto
public List<LCCMeshBlock> GetMeshes(IEnumerable<string> _ids)

Devuelve síncronamente los datos de geometría del bloque de malla de colisión (en coordenadas locales) de los ids especificados. Los ids los proporciona GetMeshBlockInfos().

ParámetroTipoDescripción
_idsIEnumerable<string>El conjunto de ids de bloque de destino (proporcionado por GetMeshBlockInfos())

Notas:

  • Los ids desconocidos se omiten con una advertencia; los ids duplicados se deduplican (sin lecturas repetidas del disco); el orden de retorno es el orden de recorrido de los ids (después de la deduplicación).
  • Devuelve null con una advertencia cuando la entrada es null, vacía o no tiene impactos.
  • Otras restricciones son las mismas que GetMeshes().

Ejemplo:

var ids = new List<string> { "block-0", "block-3" };
var meshes = renderer.GetMeshes(ids);