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

    • Stick Light

      • Guía de instalación
      • Operaciones básicas
      • Preguntas frecuentes
  • 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

Guía de configuración de parámetros de rendimiento de renderizado

Descripción general

Para adaptarse a dispositivos con diferentes niveles de rendimiento, el LCC Unity SDK proporciona varios parámetros de configuración de rendimiento de renderizado. Están distribuidos en la clase LCCManager y la clase Renderer, e implican principalmente los siguientes métodos:

ClaseMétodoPropósitoMomento de llamada
LCCManagerSetMaxBufferSplatEstablecer la capacidad máxima del búfer (asignado una vez en la GPU)Debe ser antes de cualquier Renderer.Load()
LCCManagerSetFullRenderSplatEstablecer el umbral de recuento de Splats entre renderizado completo/por fragmentosDebe ser antes de Load()
LCCManagerSetMaxRenderSplatsEstablecer el número total de Splats renderizados en pantalla en el renderizado por fragmentosEn cualquier momento durante el renderizado por fragmentos
LCCManagerSetStartLodEstablecer el nivel LOD inicialSurte efecto en tiempo de ejecución, después de Load()
LCCManagerSetDetailLevelEstablecer el nivel de detalle de renderizado (ajuste fino de la precisión de renderizado)Puede ajustarse dinámicamente en tiempo de ejecución
RendererSetRenderAllEstablecer si se fuerza el renderizado completoDebe ser antes de Load()

Nota:

Entre los parámetros anteriores, las unidades de los métodos relacionados con el recuento de Splats (SetMaxBufferSplat, SetFullRenderSplat, SetMaxRenderSplats) están todas en decenas de miles, es decir, valor pasado × 10000 = recuento real de Splats.

Nota:

SetMaxBufferSplat establece el máximo espacio de búfer de memoria de CPU y memoria de vídeo de GPU disponible para el renderizado, mientras que SetMaxRenderSplats establece el número de primitivas Splat renderizadas en pantalla durante el renderizado de streaming por fragmentos. Por lo tanto, si el valor establecido por SetMaxRenderSplats supera el valor establecido por SetMaxBufferSplat, se truncará.

Modos de renderizado del SDK

Para adaptarse a diversos datos y plataformas, el SDK tiene 3 modos de renderizado principales. Comprender los modos de renderizado es el requisito previo para establecer correctamente los parámetros de rendimiento, porque diferentes parámetros solo surten efecto en modos específicos.

  • Modo SingleRender (por defecto): se usa principalmente en PC/Mac. Este modo no permite crear varios Renderers, lo que significa que solo se puede renderizar una escena LCC a la vez. Cuando el volumen de datos es pequeño y cumple los requisitos, los datos se renderizan por completo (se cargan los datos LOD0 completos, sin cambio dinámico de LOD, mejor calidad de renderizado); cuando las primitivas Splat LOD0 superan la cantidad total que puede renderizarse por completo, los datos se renderizan por fragmentos, usando un mecanismo de renderizado de streaming con LOD dinámico en tiempo de ejecución para adaptarse al renderizado de escenas muy grandes.
  • Modo MultiRender: se usa principalmente en PC/Mac. Este modo permite el renderizado mixto en tiempo real de varias escenas LCC; todos los datos de escena se renderizan por fragmentos usando el mecanismo de LOD dinámico.
  • Ruta de renderizado por fragmentos: En plataformas Móvil (iOS / Android), VR (Pico 4 / Quest 3), así como fuentes de datos HTTP en PC/Mac, se usa la ruta de renderizado por fragmentos, empleando el mecanismo de LOD dinámico.
Relación entre los tres modos de renderizado del SDK y las rutas de renderizado completo / por fragmentos

Relación entre los tres modos de renderizado del SDK y las rutas de renderizado completo / por fragmentos

Renderizado completo vs renderizado por fragmentos:

  • Renderizado completo: carga y renderiza los datos LOD0 completos de una sola vez, mejor calidad de imagen, solo se habilita en el modo SingleRender de PC/Mac cuando el volumen de datos LOD0 cumple las condiciones.
  • Renderizado por fragmentos: carga dinámicamente los datos de nivel LOD según el frustum de la cámara de renderizado, controla el número de Splats en pantalla y se adapta a entornos de hardware con memoria de vídeo y rendimiento limitados.

Valores por defecto del SDK

Los valores por defecto, valores mínimos permitidos y valores máximos permitidos de cada plataforma son los siguientes (unidad: decenas de miles):

ElementoValor por defectoValor mínimo permitidoValor máximo permitidoObservaciones
Búfer globalPC/Mac: 3000
Móvil: 300
VR: 100
100PC/Mac: 4450
Móvil: 600
VR: 200
Controlado mediante SetMaxBufferSplat()
Umbral de renderizado completo25001004450Controlado mediante SetFullRenderSplat(); solo eficaz para el modo SingleRender de PC/Mac
Recuento de renderizado en pantalla por fragmentosPC/Mac: 2000
Móvil: 200
VR: 60
10——Controlado mediante SetMaxRenderSplats(); el valor máximo está limitado por la cantidad de búfer global
Si forzar el renderizado completoNo————Solo eficaz en PC/Mac, y solo para el modo SingleRender

Estrategia de configuración de PC/Mac

Para PC/Mac, se recomienda configurar los parámetros según los siguientes niveles de calidad (unidad de recuento de Splats: decenas de miles):

NivelBúfer globalUmbral de renderizado completoRecuento en pantalla por fragmentosStartLODForzar completo
Muy bajo3003003002No
Bajo1000100010001No
Medio3000190019001No
Alto3000250025000No
Muy alto3000300030000No

Notas sobre el cambio de niveles en tiempo de ejecución

  • Al cambiar entre los niveles Medio / Alto / Muy alto, puedes dejar el búfer global sin cambios, y la lógica de manejo es muy simple: solo necesitas establecer el umbral de renderizado completo, el recuento de renderizado en pantalla y StartLOD.
  • Al cambiar entre los niveles Muy bajo / Bajo y otros niveles, la situación es más compleja: como el búfer global puede ya estar asignado, necesitas destruir primero el búfer global original y luego crear un nuevo búfer. Esta operación requiere descartar todos los Renderers con Dispose() y liberar el búfer, y luego volver a adquirir el Renderer mediante GetRender().
  • Recomendación actual: establece el nivel por defecto en Alto; al cambiar de nivel, deja el búfer global sin cambios, pero sigue manejando el cambio de renderizado completo/por fragmentos.

Notas

  1. SetMaxBufferSplat() debe establecerse al principio, idealmente antes de GetRender(). Si estableces este valor después de que la escena ya esté ejecutándose, necesitas descartar todos los Renderers con Dispose() y luego volver a adquirir el Renderer para que surta efecto.
  2. SetFullRenderSplat() solo es eficaz para el modo SingleRender de PC/Mac y debe establecerse antes de Load().
  3. SetMaxRenderSplats() se aplica a todo el renderizado por fragmentos y puede establecerse en cualquier momento, pero debe ser posterior a SetMaxBufferSplat() (si se llama a ese método).

API de rendimiento de renderizado

SetMaxBufferSplat

// Valor de retorno: void
public void SetMaxBufferSplat(int _count)

Establece la capacidad máxima del búfer de GPU (recuento de Splats). En la ruta RenderCore (fragmento MultiRender / SingleRender), determina el tamaño del búfer global compartido; en el modo Full Load de SingleRender, se asigna según el volumen de datos real y no hace referencia a este valor. Se asigna una vez y no puede modificarse dinámicamente.

ParámetroTipoDescripción
_countintTamaño del búfer unificado global, en recuento de Splats 3DGS, unidad: decenas de miles

Ejemplo de uso:

lccManager.SetMaxBufferSplat(3000); // 30 millones de puntos (PC/Mac por defecto)
lccManager.SetMaxBufferSplat(4450); // 44.5 millones de puntos (PC/Mac máximo)

Descripción:

  • La unidad es «decenas de miles»; valor pasado × 10000 = recuento real de Splats.
  • Debe llamarse antes de cualquier Renderer.Load(), de lo contrario produce un error y devuelve.
  • Debe llamar a SetPlatformType primero.
  • Cuanto mayor es la capacidad, mayor es el uso de memoria de vídeo; establécelo según sea necesario.
  • Límites de plataforma: PC/Mac 44.5 millones, Android/iOS 6 millones, VR 2 millones; mínimo 1 millón.
  • Valores por defecto: PC/Mac 30 millones, Android/iOS 3 millones, VR 1 millón.

SetFullRenderSplat

// Valor de retorno: void
public void SetFullRenderSplat(int _count)

Establece el umbral de recuento de Splats entre el renderizado completo y el renderizado por fragmentos en el modo SingleRender de PC/Mac. Cuando el recuento de Splats LOD0 de los datos es menor que este valor, se usa la ruta de renderizado completo (búfer de GPU dedicado); de lo contrario, se usa la ruta de renderizado por fragmentos.

ParámetroTipoDescripción
_countintRecuento de Splats 3DGS, unidad: decenas de miles

Ejemplo de uso:

lccManager.SetFullRenderSplat(2500); // 25 millones de puntos

Descripción:

  • La unidad es «decenas de miles».
  • Solo compatible con plataformas PC/Mac; llamarla en otras plataformas produce un error y devuelve directamente.
  • Debe llamarse antes de cualquier Renderer.Load().
  • Debe llamar a SetPlatformType primero.
  • Rango de valores [100, 4450] (es decir, 1 millón ~ 44.5 millones).

SetMaxRenderSplats

// Valor de retorno: void
public void SetMaxRenderSplats(int _count)

Establece el número máximo de Splats renderizados en pantalla por fotograma en el renderizado por fragmentos. Puede llamarse dinámicamente después de Load() y está limitado por el límite superior establecido por SetMaxBufferSplat. Llamarla en el modo de renderizado completo de SingleRender no surte efecto (registra una advertencia y devuelve directamente).

ParámetroTipoDescripción
_countintRecuento de Splats 3DGS, unidad: decenas de miles; mínimo 100 mil, máximo no superior al tamaño del búfer establecido por SetMaxBufferSplat()

Ejemplo de uso:

lccManager.SetMaxRenderSplats(2000); // 20 millones de puntos

Descripción:

  • La unidad es «decenas de miles»; valor pasado × 10000 = recuento real de Splats.
  • Puede ajustarse dinámicamente en tiempo de ejecución.
  • No debe superar el límite superior de capacidad establecido por SetMaxBufferSplat (si se supera, se limita automáticamente y registra una advertencia).
  • No se admite el ajuste en tiempo de ejecución en el modo de renderizado completo de SingleRender.

SetStartLod

// Valor de retorno: void
public void SetStartLod(int lod)

Establece el punto de inicio de expansión del LOD (basado en 0). 0 significa el más fino; cuanto mayor es el número, más grueso es el nivel. Este método surte efecto en tiempo de ejecución y debe llamarse después de Load().

ParámetroTipoDescripción
lodintNivel LOD inicial, rango [0, 10], 0 es el más fino

Ejemplo de uso:

lccManager.SetStartLod(0);

Descripción:

  • Solo eficaz para el renderizado por fragmentos, rango [0, 10], se limita automáticamente si se supera.
  • El límite superior efectivo real está restringido por los totalLevels de los datos.
  • El SDK surte efecto inmediatamente después de la llamada.

SetDetailLevel

// Valor de retorno: void
public void SetDetailLevel(float sse)

Establece el nivel de detalle de renderizado, usado para ajustar con precisión la exactitud del renderizado. Cuanto mayor es el valor, más fino es el renderizado y mayor es el coste de rendimiento.

ParámetroTipoDescripción
ssefloatFactor de subdivisión, rango [1, 100]. 1 = más grueso (sin refinamiento incluso de cerca), 100 = más fino (todos los niveles refinados al más bajo)

Ejemplo de uso:

lccManager.SetDetailLevel(50f); // Precisión media

Descripción:

  • Este parámetro se usa para ajustar con precisión el detalle de la escena, solo se aplica al renderizado por fragmentos, por defecto es 40, rango [1, 100], se limita automáticamente si se supera.
  • Usa un mapeo logarítmico: el rango de valores bajos es sensible a los cambios, y el rango de valores altos cambia suavemente.
  • Puede ajustarse dinámicamente en tiempo de ejecución.

SetRenderAll

// Valor de retorno: void
public void SetRenderAll(bool _renderAll)

Un método de la clase Renderer. Establece si este Renderer fuerza el renderizado completo, y debe llamarse antes de Load(). Solo se usa para el modo SingleRender de PC/Mac: en tiempo de ejecución compara el volumen de datos LOD0 contra el límite superior de 44.5 millones; si LOD0 < 44.5 millones, los datos completos LOD0 se usan directamente para el renderizado; si LOD0 > 44.5 millones, este ajuste es ineficaz (limitado por el GBuffer máximo de Unity) y se usa el renderizado por fragmentos en su lugar.

ParámetroTipoDescripción
_renderAllboolSi se fuerza el renderizado completo

Ejemplo de uso:

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

Descripción:

  • Solo compatible con plataformas PC/Mac; llamarla en móvil / VR registra una advertencia y devuelve.
  • El ajuste surte efecto en la siguiente llamada a Load() y no afecta al conjunto de datos cargado actualmente.
  • Puede usarse junto con la propiedad IsRenderAll para consultar el estado actual.