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 para Pico 4 Ultra

El flujo de trabajo de desarrollo de LCC para Pico 4 Ultra es esencialmente el mismo que el flujo de trabajo oficial de creación de proyectos VR de PICO; consulta la documentación del PICO Unity Integration SDK. Esta guía se basa en ese flujo para explicar cómo integrar el LCC Unity SDK para renderizar escenas 3DGS.

Requisitos de versión

Las versiones de software y paquetes utilizadas en esta guía se enumeran a continuación. Se recomienda desarrollar con las mismas versiones; otras versiones no probadas pueden tener problemas de compatibilidad:

Software / PaqueteVersiónDescripción
Unityv2022.3.62f3Usa Unity 2022 LTS
PICO Unity Integration SDKv3.4.0Obtenido del canal oficial de PICO
LCC Unity SDKv2.1.27 y posteriorLa versión compatible con Built-in; descarga la versión compatible con Unity 2022 LTS

Consulta Requisitos del entorno de desarrollo para obtener requisitos de hardware y software más detallados.

Nota:

  1. Debido a que el PICO Unity Integration SDK tiene graves problemas de rendimiento en el pipeline URP, se recomienda el pipeline de renderizado Built-in; consulta sus problemas conocidos.
  2. Si pruebas con Unity v6000.0.69f1 y descubres que la aplicación se congela o se cierra, cambia a Unity v2022.3 LTS: los dispositivos de la serie PICO 4 tienen problemas de compatibilidad con las aplicaciones que usan Unity 6 y Vulkan juntos; consulta sus problemas conocidos.
  3. La versión de Unity, la versión del PICO SDK y la versión del LCC SDK afectan al renderizado y al rendimiento; intenta mantener cada versión de software coherente con esta guía.

Flujo de trabajo de desarrollo

Paso 1: Crear el proyecto

En la plantilla de proyecto, selecciona el tipo 3D (Built-in Render Pipeline). Debido a que el PICO Unity Integration SDK tiene graves problemas de rendimiento en el pipeline URP, no selecciones el pipeline URP, como se muestra a continuación:

Crear un proyecto 3D (Built-in Render Pipeline)

Crear un proyecto 3D (Built-in Render Pipeline)

Paso 2: Cambiar la plataforma

En el menú de Unity, selecciona Archivo → Build Profiles para abrir la ventana de compilación y cambia la plataforma a Android, como se muestra a continuación:

Cambiar la plataforma a Android en Build Profiles

Cambiar la plataforma a Android en Build Profiles

Paso 3: Importar el PICO Unity Integration SDK

Descarga el PICO Unity Integration SDK desde el sitio web oficial de PICO e instálalo siguiendo el tutorial de PICO; también puedes importarlo directamente desde GitHub en https://github.com/Pico-Developer/PICO-Unity-Integration-SDK.git. Esta guía usa la versión v3.4.0, como se muestra a continuación:

Importar el PICO Unity Integration SDK v3.4.0

Importar el PICO Unity Integration SDK v3.4.0

Paso 4: Importar el LCC Unity SDK

Abre la ventana UPM mediante el menú de Unity Ventana → Administrador de paquetes, haz clic en + a la izquierda, selecciona Instalar paquete desde disco en el menú desplegable, navega hasta el LCC Unity SDK y selecciona el archivo package.json para importarlo, como se muestra a continuación:

Importar el LCC Unity SDK mediante Instalar paquete desde disco

Importar el LCC Unity SDK mediante Instalar paquete desde disco

Paso 5: Configurar el entorno de Unity

Configurar XR Plug-in Management

En la barra de menús de Unity, selecciona Archivo → Ajustes del proyecto, selecciona XR Plug-in Management a la izquierda y marca Initialize XR on Startup bajo la pestaña de plataforma Android, como se muestra a continuación:

Marcar Initialize XR on Startup en XR Plug-in Management

Marcar Initialize XR on Startup en XR Plug-in Management

Selecciona el elemento PICO bajo XR Plug-in Management y establece el Render Mode de la plataforma Android como MultiView, como se muestra a continuación:

Establecer el Render Mode de PICO como MultiView

Establecer el Render Mode de PICO como MultiView

Selecciona el elemento Project Validation bajo XR Plug-in Management y haz clic en Fix All para completar los ajustes necesarios (esto también puede omitirse y crearse manualmente más tarde), como se muestra a continuación:

Hacer clic en Fix All en Project Validation

Hacer clic en Fix All en Project Validation

Nota:

  • Al hacer clic en Fix All se crean los GameObjects necesarios en la escena abierta actualmente, por lo que debes eliminar la Main Camera y la Directional Light de la escena.
  • Este ejemplo solo corrige UIOrientation.LandscapeLeft; todo lo demás se crea manualmente.

Configurar el Keystore

El desarrollo de PICO requiere un Keystore. Ve a Player → pestaña Android → Publishing Settings → Keystore Manager, crea un nuevo Keystore y completa los ajustes, como se muestra a continuación:

Crear un nuevo Keystore en Keystore Manager

Crear un nuevo Keystore en Keystore Manager

Establecer el nombre de la empresa y el nombre del producto

El desarrollo de PICO no permite el defaultCompany por defecto. En la pestaña Player, establece el Company Name y el Product Name correctos, como se muestra a continuación:

Establecer Company Name y Product Name

Establecer Company Name y Product Name

Configurar las opciones de calidad

En Ajustes del proyecto, selecciona la pestaña Calidad y establece Anti Aliasing = Disabled, Resolution Scaling Fixed DPI Factor = 0.7 y VSync Count = Don't Sync, como se muestra a continuación:

Desactivar el suavizado de bordes y establecer DPI Factor y VSync en la pestaña Calidad

Desactivar el suavizado de bordes y establecer DPI Factor y VSync en la pestaña Calidad

Rellenar el AppID

En el menú de Unity, selecciona PICO → Platform → Platform Setting para abrir el panel de ajustes e introduce el AppID solicitado en la plataforma de desarrolladores de PICO en Paste your App ID here; consulta Crear una cuenta de desarrollador, organización y aplicación.

Introducir el AppID en PICO Platform Setting

Introducir el AppID en PICO Platform Setting

Configurar Gráficos

En Ajustes del proyecto, selecciona la pestaña Gráficos, selecciona la plataforma Android y configura como se muestra a continuación:

Configurar la plataforma Android en la pestaña Gráficos

Configurar la plataforma Android en la pestaña Gráficos

Configurar Player

En Ajustes del proyecto, selecciona la pestaña Player, selecciona la plataforma Android, establece Color Space = Gamma, desmarca Auto Graphics API y mantén solo Vulkan, con el resto de ajustes como se muestra a continuación:

Establecer Color Space como Gamma y mantener solo Vulkan para la API gráfica

Establecer Color Space como Gamma y mantener solo Vulkan para la API gráfica

Desplázate hacia abajo en la pestaña actual y establece Minimum API Level = Android 10.0, Scripting Backend = IL2CPP, API Compatibility Level = .NET Standard 2.1 y Target Architectures = ARM64, con el resto de ajustes como se muestra a continuación:

Establecer Minimum API Level, Scripting Backend, API Compatibility Level y Target Architectures

Establecer Minimum API Level, Scripting Backend, API Compatibility Level y Target Architectures

Continúa desplazándote hacia abajo en la pestaña actual y establece Active Input Handling = Input System Package (New), con el resto de ajustes como se muestra a continuación:

Establecer Active Input Handling como Input System Package (New)

Establecer Active Input Handling como Input System Package (New)

Paso 6: Crear la escena

Crea una escena completamente nueva en Unity y elimina la Main Camera y la Directional Light. Haz clic con el botón derecho en un área vacía de la ventana Jerarquía y selecciona XR → XR Origin (VR) en el menú emergente para crear los objetos XR necesarios.

Selecciona el objeto XR Origin (VR) y añade el componente PXR_Manager mediante Agregar componente en la ventana Inspector, y configura sus propiedades relacionadas como se muestra a continuación:

Añadir y configurar el componente PXR_Manager en XR Origin (VR)

Añadir y configurar el componente PXR_Manager en XR Origin (VR)

Selecciona el objeto XR Origin (VR) y, en el componente XR Origin de la ventana Inspector, establece Tracking Origin Mode como Floor, con el resto de propiedades como se muestra a continuación:

Establecer Tracking Origin Mode del componente XR Origin como Floor

Establecer Tracking Origin Mode del componente XR Origin como Floor

Selecciona la Main Camera (el hijo de segundo nivel de XR Origin (VR)) y establece las propiedades relacionadas del componente Camera en la ventana Inspector, como se muestra a continuación:

Establecer las propiedades del componente Camera de Main Camera bajo XR Origin (VR)

Establecer las propiedades del componente Camera de Main Camera bajo XR Origin (VR)

En la ventana Jerarquía, haz clic con el botón derecho en Create Empty para crear un objeto vacío llamado LCCManager, normaliza su Transform y adjunta el script LCCManager mediante Agregar componente, como se muestra a continuación:

Crear el objeto vacío LCCManager y adjuntar el script LCCManager

Crear el objeto vacío LCCManager y adjuntar el script LCCManager

En la ventana Jerarquía, haz clic con el botón derecho en Create Empty para crear otro objeto vacío llamado LCCRenderer y establece su Transform con Rotation.x = -90 y Scale.x = -1, como se muestra a continuación:

Crear el objeto vacío LCCRenderer y establecer el Transform alineado con las coordenadas

Crear el objeto vacío LCCRenderer y establecer Rotation.x = -90, Scale.x = -1 para alinear el sistema de coordenadas

Rotation.x = -90 y Scale.x = -1 son la transformación de alineación del sistema de coordenadas de los datos LCC (diestro con el eje Z hacia arriba) al sistema de coordenadas de Unity (zurdo con el eje Y hacia arriba); consulta "Sistema de coordenadas de los datos LCC" en Introducción al SDK de Unity.

Escribe un script C# llamado LCCRenderer.cs con el siguiente código:

using LCCCore;
using UnityEngine;
using UnityEngine.XR;

public class LCCRenderer : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;

    private LCCCore.Renderer m_renderer;

    private void Awake()
    {
        XRSettings.eyeTextureResolutionScale = 0.8f; // Reduce la resolución de la textura para mejorar el rendimiento
    }

    void Start()
    {
#if UNITY_EDITOR
        m_manager.SetPlatformType(PlatformType.PC);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load(m_FilePath, onProgress, onLoaded);
#else
        m_manager.SetPlatformType(PlatformType.Pico);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load($"{Application.persistentDataPath}/LccData/meta.lcc2", onProgress, onLoaded);
#endif
    }

    private void onProgress(float v)
    {
        Debug.Log("progreso:" + v);
    }

    private void onLoaded()
    {
        m_manager.SetStartLod(2);
        m_renderer.SetEnvironment(false);
        Debug.Log("Datos cargados");
    }
}

Adjunta este script al GameObject LCCRenderer en la ventana Jerarquía, arrastra el GameObject LCCManager a la propiedad Manager del script en la ventana Inspector y, por último, rellena la ruta del archivo LCC.

Adjuntar el script LCCRenderer y vincular Manager y la ruta del archivo

Adjuntar el script LCCRenderer y vincular Manager y la ruta del archivo

Para facilitar la depuración en el Editor de Unity y el empaquetado directo en un dispositivo Android, el código usa macros de compilación para distinguir el entorno de ejecución: en el Editor usa la ruta especificada por m_FilePath; en el dispositivo Android usa la fuente de datos en el dispositivo. Los datos en el dispositivo se colocan de la siguiente manera:

  1. Ejecuta primero una vez la aplicación empaquetada en el dispositivo PICO.
  2. Una vez instalada la aplicación, ve a su directorio de datos (generalmente almacenamiento del dispositivo PICO → Android → data → BundleID de la app → Files; consulta la ruta de instalación de aplicaciones Android para el directorio específico) y crea una carpeta LccData bajo el subdirectorio Files.
  3. Copia todos los datos fuente LCC en la carpeta LccData.

Nota:

  1. En la práctica, se recomienda colocar la fuente de datos de la aplicación PICO en un servidor en lugar de empaquetarla directamente en la aplicación.
  2. El dispositivo Pico 4 Ultra renderiza alrededor de 700 000 primitivas gaussianas en pantalla a la vez, aproximadamente dos órdenes de magnitud menos que los ~25 millones en PC. Se recomienda principalmente para el renderizado y la visualización de escenas pequeñas y objetos individuales; las escenas grandes se ven más fluidas mediante streaming desde PC.
  3. Al renderizar escenas LCC grandes, se recomienda establecer StartLOD en 2 y desactivar la visualización de los datos de entorno (como en el código de ejemplo).

Referencias relacionadas

  • Para la configuración del proyecto y la optimización del rendimiento, consulta Guía de optimización de ajustes del proyecto y Guía de configuración de parámetros de rendimiento de renderizado.
  • Para otros flujos de trabajo de desarrollo de PICO, consulta la documentación oficial: Documentación para desarrolladores de PICO.