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 problemas de permisos de desarrollo en macOS

Debido a que el LCC Unity SDK usa una biblioteca de decodificación webP de terceros, puedes encontrar el error "Failed to open xxx.bundle" al usar el SDK en macOS. Se trata del mecanismo de seguridad de macOS (Gatekeeper) que bloquea la ejecución de plugins de terceros no certificados, y no tiene nada que ver con Unity ni con el propio SDK.

Esta guía tiene dos partes:

  • Parte 1: Resolver temporalmente los problemas de permisos de bibliotecas de terceros en el entorno de desarrollo.
  • Parte 2: La solución formal al empaquetar una aplicación (para distribución pública).

Parte 1: Resolver temporalmente los problemas de permisos de bibliotecas de terceros en el entorno de desarrollo

Los siguientes métodos se aplican para eliminar rápidamente la restricción del bundle durante el desarrollo; pruébalos en orden de prioridad.

Método 1: Permitir directamente en Ajustes del sistema (más rápido)

PasoOperación
1Abre Ajustes del sistema de Mac y busca Privacidad y seguridad a la izquierda
2Desplázate hacia abajo para encontrar la sección "Seguridad"
3Encuentra el aviso "xxx.bundle was blocked from use" y haz clic en el botón Permitir adyacente
4Reinicia Unity y, a continuación, vuelve a importar o ejecutar el SDK

Método 2: Eliminar el atributo de cuarentena mediante Terminal (más completo)

macOS añade el atributo de cuarentena com.apple.quarantine a los archivos descargados de la red; puedes eliminarlo directamente con un comando de Terminal.

PasoOperación
1Abre Launchpad → Otros → Terminal
2Introduce el comando (mantén un espacio final): sudo xattr -rd com.apple.quarantine
3Arrastra el archivo xxx.bundle que informó del error directamente a la ventana de Terminal para autocompletar la ruta
4Pulsa Intro e introduce la contraseña de inicio de sesión de Mac (no se muestra mientras escribes, lo cual es normal)
5Reinicia Unity después de que el comando finalice

Consejo:

Este comando requiere privilegios de administrador (sudo). La pantalla no mostrará nada mientras escribes la contraseña; simplemente termina de escribir y pulsa Intro.

Método 3: Añadir permisos de ejecución (complementario)

Si los Métodos 1 y 2 siguen sin funcionar, añade permisos de ejecución al bundle:

chmod -R 755 /path/to/xxx.bundle

También puedes arrastrar el archivo bundle a Terminal para autocompletar la ruta, pulsar Intro y reiniciar Unity.

Método 4: Comprobar los ajustes de plataforma del plugin de Unity

PasoOperación
1Encuentra el archivo xxx.bundle en la ventana Proyecto de Unity
2Selecciónalo y mira la ventana Inspector
3En Platform Settings, marca Any Platform, o marca por separado Standalone / macOS
4Asegúrate de que Exclude Platform no está marcado
Comprobar los ajustes de plataforma del plugin del bundle en el Inspector de Unity

Marcar Any Platform o macOS en Platform Settings en el Inspector

Método 5: Desactivar temporalmente Gatekeeper (último recurso)

Advertencia:

Este método reduce la seguridad del sistema. Solo se recomienda para uso temporal en una máquina de desarrollo; asegúrate de volver a activarlo después de que el desarrollo finalice.

Si ninguno de los métodos anteriores funciona, puedes desactivar temporalmente la verificación de seguridad del sistema:

sudo spctl --master-disable

Verifica si está desactivado:

spctl --status
# assessments disabled se muestra cuando se desactiva correctamente

Vuelve a activar la protección de seguridad después de que el desarrollo finalice:

sudo spctl --master-enable

Parte 2: Resolver los problemas de permisos de bibliotecas de terceros al empaquetar una aplicación

Para que los usuarios finales usen una aplicación que contiene un SDK de terceros sin percibir el problema, debes completar la «firma de código profunda + notarización de Apple + vinculación de ticket Staple» en el lado del desarrollador. Esta es la única solución estándar conforme en macOS con cero operaciones del usuario.

Requisitos previos (todos obligatorios)

N.ºCondiciónDescripción
1Apple Developer Program99 USD/año, usado para obtener el certificado Developer ID Application
2Habilitar Hardened RuntimeEn Player Settings → Other Settings → Mac de Unity, marca Use Hardened Runtime
3Configurar un Bundle ID únicoMantenlo coherente con el portal de desarrolladores
4Desactivar la firma automática de UnityUsa Terminal para firmar profundamente de forma manual después del empaquetado

Flujo de trabajo completo de firma y notarización

Paso 1: Limpiar los atributos extendidos

xattr -cr "YourApp.app"

Paso 2: Firma recursiva profunda

El parámetro --deep recorre automáticamente todos los archivos internos .bundle, .dylib y .framework y los firma uniformemente, resolviendo a fondo el problema de que los bundles de terceros se bloqueen por no estar firmados.

codesign --force --deep --options runtime --sign "Developer ID Application: YourCompany (TeamID)" "YourApp.app"

Punto clave:

Reemplaza YourCompany (TeamID) por tu Developer ID completo. Usar --deep asegura que todos los bundles internos de terceros estén firmados — esta es la causa raíz del 90 % de los problemas de «sigue dando error después de firmar».

Paso 3: Empaquetar un zip estándar para la notarización

Debes usar el comando ditto para empaquetar; no uses la compresión con clic derecho del sistema (de lo contrario, la verificación de notarización fallará).

ditto -c -k --sequesterRsrc --keepParent "YourApp.app" build.zip

Paso 4: Subir a Apple para la notarización

Usa notarytool (la nueva herramienta oficial) para enviar a notarización; el backend de Apple escanea automáticamente en busca de código malicioso:

xcrun notarytool submit build.zip --apple-id your@apple.com --password app-specific-password --team-id TeamID --wait

Espera a que se devuelva Accepted, lo que significa que la notarización ha pasado.

Paso 5: Vincular el ticket de notarización a la App

Después de la vinculación, los usuarios pueden pasar la verificación incluso al abrir sin conexión:

xcrun stapler staple "YourApp.app"
# Verifica si se realizó correctamente
xcrun stapler validate "YourApp.app"

Pruebas internas / Distribución en intranet empresarial (alternativa)

Si aún no tienes una cuenta de desarrollador de Apple, puedes distribuir dentro de la intranet usando el siguiente enfoque:

PasoOperación
1Unity empaqueta el .app
2En la máquina de compilación, ejecuta: xattr -rd com.apple.quarantine "YourApp.app"
3Distribuye mediante herramientas de intranet (scp, nube empresarial, unidad USB), no descargues a través de un navegador

Limitación:

Este enfoque solo se aplica a la transferencia en intranet. Las descargas del navegador volverán a añadir el atributo de cuarentena, provocando que el error del bundle reaparezca, y no es adecuado para distribución pública.

Errores comunes

Error comúnEnfoque correcto
Se firmó solo el programa principal, sin --deepDebes usar --deep para firmar recursivamente todos los bundles / dylibs internos
No se habilitó Hardened RuntimeMárcalo en Player Settings antes del empaquetado de Unity, de lo contrario la notarización falla directamente
Se olvidó vincular el ticket después de la notarizaciónDebes ejecutar xcrun stapler staple, de lo contrario la apertura sin conexión sigue mostrando el diálogo
No se limpiaron los atributos extendidos antes de firmarEjecuta primero xattr -cr para limpiar los atributos residuales de todos los bundles y luego firma
Se usó la compresión con clic derecho del sistema en lugar de dittoDebes usar el empaquetado estándar ditto -c -k, de lo contrario la verificación de notarización falla

Resumen

La única solución estándar para la distribución pública = Apple Developer ID + codesign profundo + notarización notarytool + ticket stapler. Después de completarla, los usuarios descargan y usan la aplicación de inmediato, sin diálogo de seguridad y sin percibir el problema.