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

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

Reiluminar 3DGS con una malla de LixelStudio

El plugin admite reiluminación híbrida: combina el 3DGS con una malla de la misma escala para que el 3DGS reciba una respuesta de luz cercana a la de una malla y pueda proyectar autosombras.

El resultado depende de la precisión geométrica de la malla situada bajo el 3DGS. Cuanto mejor se alineen malla y 3DGS, más creíbles serán la respuesta de luz y las sombras.

Para el mecanismo y los parámetros, consulta Malla proxy. Para elegir entre modos de normales, consulta Normales e iluminación.

Qué malla usar

LCC Studio y LixelStudio generan mallas, pero con propósitos distintos.

Malla de LCC StudioMalla de LixelStudio
Precisión de superficieMás toscaMás fiel a la forma real
Tamaño de archivoPequeñoGrande
Adecuada paraDetección de colisiónReiluminación

Para colisión basta la malla de LCC Studio, consulta Colisión. Para reiluminar usa la malla de LixelStudio.

Malla de LCC Studio:

Malla de LCC Studio, vista general
Malla de LCC Studio, primer plano

Malla de LixelStudio:

Malla de LixelStudio, vista general
Malla de LixelStudio, primer plano

Paso 1: reunir los modelos en mosaicos en una carpeta

LixelStudio exporta las mallas en mosaicos. En una escena grande acabas con muchas carpetas, cada una con un archivo .obj y sus texturas. Hay que combinarlas en una sola malla antes de importar, si no obtendrás muchos .obj independientes.

Los pasos siguientes usan Blender; cualquier herramienta 3D funciona igual. Descarga Blender desde el sitio oficial.

Blender no admite arrastrar un lote de carpetas de una vez, así que primero hay que subir al mismo nivel los .obj repartidos por las subcarpetas. Arrastrar decenas de carpetas a mano no es práctico, así que usa un único comando de PowerShell.

Abre la carpeta raíz que contiene todas las subcarpetas, escribe powershell en la barra de direcciones y pulsa Enter. La terminal se abre en el directorio actual.

Escribir powershell en la barra de direcciones

Escribe powershell en la barra de direcciones del explorador

Copia y pega este comando:

Get-ChildItem -Recurse -File | Move-Item -Destination .

Nota: el comando mueve todos los archivos de las subcarpetas al directorio actual, así que confirma que estás en la carpeta correcta antes de ejecutarlo. Por ejemplo, si la carpeta A contiene B y C, abre PowerShell desde la barra de direcciones de A; al terminar, todos los archivos de B y C quedan en A.

Subcarpetas antes de ejecutar

Estructura de carpetas antes de ejecutar

Pegar el comando

Pega el comando y ejecútalo

Pulsa Enter tras pegarlo. Tarda unos segundos. Cuando aparece un nuevo símbolo del sistema, el comando ha terminado.

Ya está todo extraído. Abre algunas subcarpetas para confirmar que están vacías.

Lista de archivos tras la extracción

Todos los .obj y las texturas están ahora en el mismo nivel

Paso 2: combinar en un solo archivo en Blender

Pulsa Ctrl + A para seleccionar todos los archivos y arrástralos a Blender.

Seleccionar todos los archivos

Selecciona todos los archivos

Arrastrar a Blender

Arrastra a Blender

Haz clic en Import Wavefront OBJ. Para que la orientación sea correcta, pon Up Axis en Z y Forward Axis en X.

Ajustes de orientación al importar

Pon Up Axis en Z y Forward Axis en X

Ya están importados todos los mosaicos.

Mosaicos importados

Todos los mosaicos importados

Pulsa A para seleccionar todos los mosaicos y Ctrl + J para combinarlos en una sola malla. En una escena grande puede tardar cerca de un minuto, deja que termine.

Malla combinada

Una sola malla combinada

Nota: si no hace falta reiluminar toda la escena, borra las partes que no necesites para ganar rendimiento en Unreal Engine.

Paso 3: reducir las llamadas de dibujo

Cuando esta malla entra en Unreal Engine para reiluminar, ninguno de sus materiales es necesario. El 3DGS se encarga de lo que se ve y la malla proxy solo alimenta el cálculo, así que los materiales no aportan nada y consumen recursos.

Cada textura de una malla de LixelStudio es una llamada de dibujo en Unreal Engine. A gran escala eso suma muchísimas llamadas, y usar la malla directamente como proxy provoca tirones.

Selecciona la malla en la Collection y consulta el número de llamadas de dibujo desde la consola de Python de Blender.

Consola de Python de Blender

Cambia a la consola de Python

Pega el comando siguiente y pulsa Enter:

obj = bpy.context.object
print("Material slots:", len(obj.data.materials))
Salida del número de ranuras de material

El valor impreso es el número de llamadas de dibujo

La malla de la captura tiene 8859 llamadas de dibujo.

Para bajarlo, elimina todos los materiales existentes y sustitúyelos por uno solo:

import bpy

# Get the currently selected object in Blender
obj = bpy.context.object

# Make sure a valid Mesh object is selected
if obj is None or obj.type != "MESH":
    raise Exception("Please select a Mesh object first.")

# Create a new white clay material
mat = bpy.data.materials.new("M_White_Clay")
mat.use_nodes = True

# Configure the Principled BSDF shader settings
bsdf = mat.node_tree.nodes.get("Principled BSDF")
if bsdf:
    bsdf.inputs["Base Color"].default_value = (1, 1, 1, 1)  # White color
    bsdf.inputs["Roughness"].default_value = 1.0            # Fully rough / matte surface
    bsdf.inputs["Metallic"].default_value = 0.0             # Non-metallic material
    bsdf.inputs["Alpha"].default_value = 1.0                # Fully opaque

# Remove all existing material slots from the mesh
obj.data.materials.clear()

# Add the single new white material
obj.data.materials.append(mat)

# Assign every face to material slot 0
for poly in obj.data.polygons:
    poly.material_index = 0

# Print the result for verification
print("Done")
print("Material slots:", len(obj.data.materials))
print("Used material indices:", len(set(p.material_index for p in obj.data.polygons)))
print("Estimated draw calls:", len(set(p.material_index for p in obj.data.polygons)))

Después de ejecutarlo, confirma que el número de llamadas de dibujo ha bajado a una.

Llamadas de dibujo reducidas a una

Llamadas de dibujo reducidas a una

Paso 4: importar en Unreal Engine

Exporta la malla como .obj o .fbx e impórtala en Unreal Engine.

Importada en Unreal Engine

La malla después de importarla en Unreal Engine

A continuación sigue Malla proxy para colocar el ProxyMesh Actor y poner el modo de normales en ProxyMesh.

Si el resultado no es el esperado, consulta Resolución de problemas de la malla proxy.