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 desarrollo de renderizado multicámara

El LCC Unity SDK admite renderizar con varias cámaras simultáneamente en el modo de renderizado completo de una sola escena. A continuación se usa un ejemplo de una cámara principal más dos cámaras secundarias para describir los pasos completos para implementar el renderizado multicámara.

Paso 1: Crear la escena y los GameObjects

Crea una escena completamente nueva en Unity. Unity crea Main Camera y Directional Light por defecto.

Configurar Main Camera

Selecciona Main Camera en la ventana Jerarquía y establece sus propiedades en la ventana Inspector como se muestra a continuación.

Establecer las propiedades de Main Camera

Establecer las propiedades de Main Camera

Crear LCCManager

Haz clic con el botón derecho en un área vacía de la ventana Jerarquía, selecciona Create Empty en el menú emergente para crear un GameObject vacío, nómbralo LCCManager, normaliza su Transform y añádele el script LCCManager mediante Agregar componente.

Crear el GameObject LCCManager y añadir el script LCCManager

Crear el GameObject LCCManager y añadir el script LCCManager

Crear LCCRenderer

Haz clic con el botón derecho en un área vacía de la ventana Jerarquía, selecciona Create Empty para crear un GameObject vacío, nómbralo LCCRenderer y establece su Transform como Rotation.x = -90 y Scale.x = -1.

Crear LCCRenderer y establecer su Transform

Crear LCCRenderer y establecer su Transform (Rotation.x = -90, Scale.x = -1)

Nota:

Los ajustes de Transform del GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) lo alinean con el sistema de coordenadas de los datos LCC. Para más detalles sobre la alineación del sistema de coordenadas, consulta "Sistema de coordenadas de los datos LCC" en Introducción al SDK de Unity.

Crear cámaras de renderizado secundarias

Haz clic con el botón derecho en un área vacía de la ventana Jerarquía para crear dos cámaras de renderizado adicionales, nómbralas Camera01 y Camera02 respectivamente y establece las propiedades de estas dos cámaras como se muestra a continuación.

Establecer las propiedades de Camera01

Establecer las propiedades de Camera01

Establecer las propiedades de Camera02

Establecer las propiedades de Camera02

En este ejemplo, el Viewport Rect de las dos cámaras se configura para colocarlas en la esquina inferior izquierda y la esquina inferior derecha de la ventana de renderizado principal respectivamente.

Paso 2: Escribir el script multicámara

Crea un nuevo script C# llamado MultiCamera.cs con el siguiente código:

using LCCCore;
using UnityEngine;

public class MultiCamera : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath01;
    public Camera m_camera01;
    public Camera m_camera02;

    public Transform m_transform01;
    private LCCCore.Renderer m_renderer01;

    private int m_currentFileIndex = 0;

    void Start()
    {
        m_manager.SetPlatformType(PlatformType.PC);
        m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);

        Debug.Log("Iniciado ");
        m_renderer01 = m_manager.GetRender(m_transform01);

        m_currentFileIndex = 0;
        m_renderer01.Load(m_FilePath01, onProgress, onComplete);
    }

    private void onProgress(float _progress)
    {
        Debug.Log($"[LCCRenderer] archivo {m_currentFileIndex} progreso de carga: {_progress:P1}");
    }

    private void onComplete()
    {
        Debug.Log($"[LCCRenderer] archivo {m_currentFileIndex} cargado");

        m_manager.AddCamera(m_camera01);
        m_manager.AddCamera(m_camera02);
    }

    private void OnDestroy()
    {
        m_manager.RemoveCamera(m_camera01);
        m_manager.RemoveCamera(m_camera02);
    }
}

Nota:

  • Las cámaras secundarias deben registrarse después de que la escena LCC termine de cargarse, por lo que AddCamera se llama en la devolución de llamada onComplete.
  • El nombre del archivo de script debe coincidir con el nombre de la clase (MultiCamera.cs corresponde a class MultiCamera), de lo contrario no puede adjuntarse a un GameObject.
  • La cámara principal se establece mediante SetMainCamera, y las cámaras secundarias se añaden mediante AddCamera; no puedes añadir la cámara principal como cámara secundaria.

Paso 3: Adjuntar el script y establecer propiedades

  1. Adjunta el script MultiCamera.cs al GameObject LCCRenderer en la ventana Jerarquía.
  2. En la ventana Inspector, arrastra el GameObject LCCManager a la propiedad Manager del script.
  3. Arrastra los GameObjects Camera01 y Camera02 a las propiedades Camera01 y Camera02 del script respectivamente.
  4. Rellena la ruta del archivo LCC en la propiedad File Path01 del script.
Adjuntar el script MultiCamera y establecer sus propiedades

Adjuntar el script MultiCamera y establecer sus propiedades en el Inspector

Paso 4: Ejecutar

Haz clic en el botón Play de la ventana Game para ver el efecto de renderizado en tiempo real de varias cámaras de renderizado en la escena.

Varias cámaras renderizando simultáneamente tras la ejecución

Varias cámaras de renderizado renderizando simultáneamente tras la ejecución

Pasos clave

Los pasos clave para implementar el renderizado multicámara:

  1. Asegúrate de que la escena está en modo de renderizado completo de una sola escena (SwitchRenderPass(ActiveRenderMode.SingleRender) y los datos pasan por la ruta de carga completa).
  2. La cámara principal se establece mediante SetMainCamera; las cámaras secundarias se registran mediante AddCamera después de que la escena termine de cargarse (en la devolución de llamada onComplete).
  3. Controla el área de renderizado de cada cámara en pantalla mediante su Viewport Rect.
  4. Cuando el objeto se destruye (OnDestroy), elimina las cámaras secundarias mediante RemoveCamera para evitar referencias colgantes.

Notas del renderizado multicámara

  • Solo se admite el modo de renderizado completo. El LCC SDK actualmente solo admite el renderizado multicámara en el modo de renderizado completo bajo una sola escena. Para la optimización del rendimiento, en el modo de renderizado por fragmentos el SDK solo carga y renderiza los datos visibles dentro del frustum de la cámara; y para perseguir un alto rendimiento, el filtrado de datos de nodos de escena del lado CPU, el ensamblado de datos y la subida de datos de CPU a GPU son todos asíncronos, por lo que no puede procesar y renderizar datos para varias cámaras por separado dentro del mismo fotograma.

  • Asegúrate de que la escena está en estado de renderizado completo. Para usar la función completa de renderizado multicámara, configura la escena en modo de renderizado completo (Full Load): usa ActiveRenderMode.SingleRender y habilita el renderizado completo en el Renderer (Renderer.SetRenderAll(true), que surte efecto en la siguiente llamada a Load()). Para más detalles sobre los modos de renderizado y los parámetros de rendimiento, consulta Guía de inicio rápido para PC.

  • Cuantas más cámaras, mayor es el coste de rendimiento. Cada cámara de renderizado adicional añade una pasada de renderizado completa, por lo que el rendimiento se degrada en consecuencia. El renderizado multicámara se recomienda en dispositivos de equipo de alto rendimiento.

  • Solo compatible con PC/Mac. AddCamera / RemoveCamera solo surten efecto en plataformas PC/Mac.

API multicámara

El LCC Unity SDK proporciona las siguientes API relacionadas con la cámara a través de LCCManager. Las cámaras secundarias deben registrarse mediante AddCamera después de que la escena LCC termine de cargarse (es decir, en la devolución de llamada onComplete).

SetMainCamera

// Valor de retorno: void
public void SetMainCamera(Camera _cam)

Establece la cámara de renderizado principal. LCC usa esta cámara para el descarte por frustum, la selección de LOD, el ordenamiento y otras operaciones.

ParámetroTipoDescripción
_camCameraCámara de renderizado principal; pasa null para limpiarla

Ejemplo de uso:

m_manager.SetMainCamera(Camera.main);

Notas:

  • Debe establecerse antes de Renderer.Load().
  • Llámala de nuevo al cambiar de cámara.
  • Solo compatible con PC/Mac.
  • Pasa null para limpiar la cámara principal.

AddCamera

// Valor de retorno: void
public void AddCamera(Camera _cam)

Añade una cámara secundaria. Las cámaras secundarias participan en el renderizado pero no afectan a la selección de LOD.

ParámetroTipoDescripción
_camCameraCámara secundaria

Ejemplo de uso:

m_manager.AddCamera(m_camera01);

Notas:

  • Solo compatible con PC/Mac.
  • No puedes añadir la cámara principal como cámara secundaria.
  • La selección de LOD la determina solo la cámara principal; las cámaras secundarias reutilizan los datos filtrados por la cámara principal para el renderizado.

RemoveCamera

// Valor de retorno: void
public void RemoveCamera(Camera _cam)

Elimina una cámara secundaria añadida previamente.

ParámetroTipoDescripción
_camCameraLa cámara secundaria a eliminar

Ejemplo de uso:

m_manager.RemoveCamera(m_camera01);

Notas:

  • Solo compatible con PC/Mac.
  • Se recomienda llamarla cuando el objeto se destruye (OnDestroy) para limpiar la referencia de la cámara secundaria.