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

LCCManager: Manager principal

El manager principal del LCC Unity SDK, responsable de gestionar todas las instancias Renderer, las cámaras, el estado de renderizado global, así como las operaciones de edición (recorte / resaltado / tono), la proyección de decal, el ajuste y las consultas de interacción (raycast / colisión). Debe haber solo una instancia LCCManager en toda la escena.

NamespaceLCCCore
Clase baseMonoBehaviour

LCCManager no tiene propiedades públicas; toda la funcionalidad se accede mediante métodos. Los métodos están agrupados por propósito:

  • Inicialización y configuración
  • Control de renderizado en tiempo de ejecución
  • Iluminación y sombras
  • Gestión de cámaras
  • Recorte / Resaltado / Tono
  • Proyección de decal
  • Ajuste
  • Raycasting y consultas de colisión
  • Efectos visuales
  • Consultas de instancias

Inicialización y configuración

Los siguientes métodos se usan para completar la configuración previa de plataforma, modo de renderizado, capacidad, etc., antes de cargar datos. La mayoría de los métodos deben llamarse antes de cualquier Renderer.Load().

SetPlatformType

public void SetPlatformType(PlatformType _type)

Establece la plataforma de ejecución de destino del SDK, lo que afecta a la estrategia de renderizado interna y a la asignación de recursos.

ParámetroTipoDescripción
_typePlatformTypePlataforma de destino; consulta PlatformType

Notas:

  • Debe ejecutarse antes de cualquier llamada a GetRender().

Ejemplo:

lccManager.SetPlatformType(PlatformType.PC);

SwitchRenderPass

public void SwitchRenderPass(ActiveRenderMode _mode)

Establece el modo de arquitectura de renderizado global. MultiRender usa un búfer de GPU compartido y puede renderizar hasta 255 Renderers simultáneamente; SingleRender permite que el SDK seleccione automáticamente la ruta de renderizado según el tamaño de los datos.

ParámetroTipoDescripción
_modeActiveRenderModeModo de renderizado; consulta ActiveRenderMode

Notas:

  • Debe llamarse antes de cualquier Renderer.Load().
  • Solo eficaz en plataformas PC / Mac; las plataformas móviles / VR adoptan automáticamente una estrategia adaptativa y se rechaza la llamada a este método.
  • El modo MultiRender no admite fuentes de datos HTTP; usa SingleRender para datos HTTP.
  • Una vez que cualquier Renderer completa Load(), el modo se bloquea y no puede volver a cambiarse.

Ejemplo:

lccManager.SwitchRenderPass(ActiveRenderMode.MultiRender);

GetRender (Sobrecarga 1: vincular Transform)

// Valor de retorno: Renderer, null en caso de error
public Renderer GetRender(Transform _transform)

Crea una nueva instancia de renderizado y la vincula al Transform especificado. Después de la creación, debe llamarse a Renderer.Load() para cargar datos.

ParámetroTipoDescripción
_transformTransformEl Transform al que se adjunta la instancia de renderizado

Notas:

  • SetPlatformType() y SetMainCamera() deben llamarse primero.
  • Se admiten hasta 255 Renderers en el modo MultiRender.

Ejemplo:

var go = new GameObject("LCCScene");
var renderer = lccManager.GetRender(go.transform);
renderer.Load(filePath, null, () => Debug.Log("Cargado"));

GetRender (Sobrecarga 2: crear GameObject automáticamente)

// Valor de retorno: Renderer, null en caso de error
public Renderer GetRender(out GameObject gameObject)

Crea automáticamente un GameObject llamado LCCRenderer y vincula la instancia de renderizado a su Transform.

ParámetroTipoDescripción
gameObjectout GameObjectDevuelve el GameObject creado automáticamente, null en caso de error

Ejemplo:

var renderer = lccManager.GetRender(out GameObject go);
renderer.Load(filePath, null, () => Debug.Log("Cargado"));

SetMaxBufferSplat

public void SetMaxBufferSplat(int _count)

Establece la capacidad máxima del búfer de GPU (recuento de Splats). Se asigna una vez y no puede cambiarse dinámicamente.

ParámetroTipoDescripción
_countintRecuento máximo de Splats, unidad: decenas de miles (valor × 10000 = recuento real)

Notas:

  • Debe llamarse antes de cualquier Renderer.Load(), y SetPlatformType() debe llamarse primero.
  • Una capacidad mayor significa un mayor uso de memoria de vídeo; establécelo según sea necesario.
  • Límites de plataforma: PC / Mac / PCVR 45 millones, Android / iOS 6 millones, VR (Pico / Quest / PicoSwan / AVP / OpenXR) 2 millones.
  • Valores por defecto: PC / Mac 30 millones, Android / iOS 3 millones, VR 1 millón.

Ejemplo:

lccManager.SetMaxBufferSplat(3000); // 30 millones de puntos

SetFullRenderSplat

public void SetFullRenderSplat(int _count)

Establece el umbral superior para el renderizado completo de PC / Mac. Cuando el tamaño de los datos está por debajo de este valor, se usa la ruta de renderizado completo; de lo contrario, se usa la ruta de renderizado por fragmentos.

ParámetroTipoDescripción
_countintLímite superior del renderizado completo, unidad: decenas de miles, rango [100, 4500]

Notas:

  • Solo compatible con plataformas PC / Mac / PCVR.
  • Debe llamarse antes de cualquier Renderer.Load(), y SetPlatformType() debe llamarse primero.

Ejemplo:

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

SetMaxRenderSplats

public void SetMaxRenderSplats(int _count)

Establece el número máximo de Splats renderizados por fotograma en tiempo de ejecución. Puede llamarse dinámicamente después de Load().

ParámetroTipoDescripción
_countintNúmero máximo de Splats renderizados en tiempo de ejecución, unidad: decenas de miles

Notas:

  • Puede ajustarse dinámicamente en tiempo de ejecución.
  • No puede superar la capacidad establecida por SetMaxBufferSplat(); se limita automáticamente cuando se supera.
  • No tiene efecto en el modo de renderizado completo.

Ejemplo:

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

GetLoadRatio

// Valor de retorno: float, [0,1] progreso de carga de datos actual
public float GetLoadRatio()

Consulta el progreso de carga de los datos de la escena actual.

Notas:

  • Devuelve siempre 1.0 en el modo de renderizado completo.
  • En el modo de renderizado por fragmentos, devuelve la relación de nodos cargados bajo la vista actual; el valor cambia en tiempo real con el movimiento de la cámara y no es un progreso general monótonamente creciente.

Ejemplo:

float ratio = lccManager.GetLoadRatio();
progressBar.value = ratio;

SetSelectionMode

public void SetSelectionMode(SelectionMode mode)

Establece la estrategia de selección de nodos.

ParámetroTipoDescripción
modeSelectionModeEstrategia de selección; consulta SelectionMode

Notas:

  • Auto (por defecto): se decide automáticamente según la caja delimitadora general de la escena; cuando la dimensión máxima de la escena supera aproximadamente 380 metros, se actualiza automáticamente a Large.
  • Normal: adecuado para escenas pequeñas y medianas.
  • Large: adecuado para escenas muy grandes (más de 1000 metros).
  • Surte efecto inmediatamente al cambiar.

Ejemplo:

lccManager.SetSelectionMode(SelectionMode.Auto);

Control de renderizado en tiempo de ejecución

Los siguientes métodos pueden llamarse dinámicamente en tiempo de ejecución para ajustar la precisión del renderizado, los efectos de visualización y los interruptores de renderizado.

SetDetailLevel

public void SetDetailLevel(float sse)

Establece el nivel de precisión del renderizado. Un valor mayor significa un renderizado más fino y un mayor consumo de rendimiento.

ParámetroTipoDescripción
ssefloatNivel de precisión, rango [1, 100], se limita automáticamente cuando se supera

Notas:

  • Usa un mapeo logarítmico: los cambios son sensibles en el rango de valores bajos y suaves en el rango de valores altos.
  • Puede ajustarse dinámicamente en tiempo de ejecución.
  • Solo surte efecto en el modo de selección Normal.

Ejemplo:

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

SetStartLod

public void SetStartLod(int lod)

Establece el punto de inicio de expansión del LOD (basado en 0). 0 es el más fino, y un número mayor significa un nivel más grueso.

ParámetroTipoDescripción
lodintNivel LOD inicial, rango [0, 10], se limita automáticamente cuando se supera

Notas:

  • El límite superior efectivo real está restringido por el número total de niveles de datos.

Ejemplo:

lccManager.SetStartLod(0);

SetAutoFov

public void SetAutoFov(bool _auto)

Establece si se gestiona automáticamente el FOV de renderizado. Cuando está habilitado (por defecto), el SDK bloquea una línea base de distancia focal en píxeles en el primer fotograma y, a continuación, invierte el FOV vertical desde la altura actual del viewport en cada fotograma y lo escribe de vuelta en Camera.fieldOfView; cuando está deshabilitado, fieldOfView se controla externamente (SetFOV() o cambiando directamente la cámara).

ParámetroTipoDescripción
_autoboolSi se usa el FOV automático

Notas:

  • Habilitado por defecto.
  • Cuando está habilitado, reescribe continuamente el Camera.fieldOfView de la cámara principal, por lo que llamar a SetFOV() se ignora.
  • Cuando está deshabilitado, debe llamarse a SetFOV() manualmente para establecer los parámetros.

Ejemplo:

lccManager.SetAutoFov(true);

SetFOV

public void SetFOV(int _width, int _height, float _verticalFov, float _aspect)

Establece manualmente el FOV vertical (en grados). Reescribe directamente el Camera.fieldOfView de la cámara principal para que el FOV del Inspector coincida con el FOV realmente usado para el renderizado. _width / _height / _aspect son parámetros de firma heredados; la proyección real usa el propio viewport de la cámara principal (usa SetRecordMode() para salida fuera de pantalla con un tamaño / FOV diferente).

ParámetroTipoDescripción
_widthintAncho en píxeles
_heightintAlto en píxeles
_verticalFovfloatFOV vertical (grados)
_aspectfloatRelación de aspecto

Notas:

  • SetAutoFov(false) debe llamarse primero, de lo contrario la inversión automática del FOV por fotograma sobrescribe el valor manual.
  • El FOV vertical se limita a [1, 179] grados.
  • Llamarlo en plataformas VR / PCVR, durante la grabación o bajo una cámara ortográfica se rechaza (advierte y devuelve).

Ejemplo:

lccManager.SetFOV(1920, 1080, 60f, 1.778f);

SetRenderEnable

public void SetRenderEnable(Renderer _renderer, bool _isEnable)

Controla el interruptor de renderizado del Renderer especificado en tiempo de ejecución. Cuando está deshabilitado, no participa en el recorrido ni en el dibujado.

ParámetroTipoDescripción
_rendererRendererInstancia de renderizado de destino
_isEnableboolSi se habilita el renderizado

Ejemplo:

lccManager.SetRenderEnable(renderer, false); // Ocultar

SetEnvironment

public void SetEnvironment(Renderer _renderer, bool _isRender)

Controla el renderizado de datos de entorno del Renderer especificado. Los datos de entorno son una nube de puntos de fondo de baja precisión utilizada para rellenar vistas lejanas.

ParámetroTipoDescripción
_rendererRendererInstancia de renderizado de destino
_isRenderboolSi se renderizan los datos de entorno

Notas:

  • Los datos deben contener nodos de entorno.

Ejemplo:

lccManager.SetEnvironment(renderer, true);

SetZDepth

public void SetZDepth(bool zwrite)

Activa o desactiva la escritura de profundidad Z y ajusta la cola de renderizado en consecuencia.

ParámetroTipoDescripción
zwriteboolSi se habilita la escritura de profundidad Z

Ejemplo:

lccManager.SetZDepth(true);

SetAlpha

public void SetAlpha(float alpha)

Establece la opacidad global.

ParámetroTipoDescripción
alphafloatOpacidad global, rango [0, 1], se limita automáticamente cuando se supera

Ejemplo:

lccManager.SetAlpha(0.8f);

SetLightIntensity

public void SetLightIntensity(float intensity)

Establece la intensidad de iluminación global.

ParámetroTipoDescripción
intensityfloatIntensidad de iluminación, rango [0, 1], se limita automáticamente cuando se supera

Ejemplo:

lccManager.SetLightIntensity(0.7f);

SetLowPassFilter

public void SetLowPassFilter(float _filter)

Establece la intensidad global del filtro de paso bajo, usada para suprimir el aliasing / ruido de alta frecuencia.

ParámetroTipoDescripción
_filterfloatIntensidad del filtro de paso bajo, rango [0, 1], se limita automáticamente cuando se supera

Ejemplo:

lccManager.SetLowPassFilter(0.3f);

SetLockFPS

public void SetLockFPS(bool _isLock)

Activa o desactiva el bloqueo de la tasa de fotogramas (cambio de tasa de fotogramas estático / dinámico).

ParámetroTipoDescripción
_isLockboolSi se bloquea la tasa de fotogramas

Ejemplo:

lccManager.SetLockFPS(true);

SetRenderLayer

public void SetRenderLayer(int _layer)

Establece la Layer de Unity usada por el renderizado de LCC, para el control de visibilidad del CullingMask de la cámara.

ParámetroTipoDescripción
_layerintLayer de renderizado de Unity, rango [0, 31]

Notas:

  • Puede ajustarse dinámicamente en tiempo de ejecución.

Ejemplo:

lccManager.SetRenderLayer(8); // Usa la Layer 8

SetForceRefresh

public void SetForceRefresh()

Fuerza una actualización de renderizado. Limpia la caché interna de información de la cámara para que el frustum, el LOD y otros parámetros se recalculen en el siguiente fotograma. Adecuado para casos en los que parámetros de cámara modificados externamente deben surtir efecto de inmediato.

Ejemplo:

lccManager.SetForceRefresh();

SetMipMode

public void SetMipMode(MipMode _mipMode)

Cambia el modo de renderizado Mip. El modo Mip usa muestreo de mipmap (por defecto), y el modo Non_Mip desactiva el mipmap.

ParámetroTipoDescripción
_mipModeMipModeModo de destino; consulta MipMode

Notas:

  • Devuelve inmediatamente si el modo actual es el mismo que el modo pasado.
  • Surte efecto inmediatamente al cambiar.

Ejemplo:

lccManager.SetMipMode(MipMode.Non_Mip);

SetGraphicsAPI

public void SetGraphicsAPI(GraphicsDeviceType type)

Establece el tipo de API gráfica. HDR se habilita en modo DX11.

ParámetroTipoDescripción
typeGraphicsDeviceTypeTipo de API gráfica (enum integrado de Unity)

Ejemplo:

lccManager.SetGraphicsAPI(GraphicsDeviceType.Direct3D11);

SetDebugMode

public void SetDebugMode(bool debug)

Activa o desactiva el modo de depuración.

ParámetroTipoDescripción
debugboolSi se habilita el modo de depuración

Notas:

  • Solo compatible con plataformas PC / Mac.

Ejemplo:

lccManager.SetDebugMode(true);

SetEditorMode

public void SetEditorMode(bool _isEditor)

Activa o desactiva el modo Editor.

ParámetroTipoDescripción
_isEditorboolSi se habilita el modo Editor

Notas:

  • Solo compatible con plataformas PC / Mac.

Ejemplo:

lccManager.SetEditorMode(true);

SetAECMode

public void SetAECMode(bool _aec)

Activa o desactiva el modo AEC (Arquitectura / Ingeniería / Construcción).

ParámetroTipoDescripción
_aecboolSi se habilita el modo AEC

Notas:

  • Solo compatible con plataformas PC / Mac.

Ejemplo:

lccManager.SetAECMode(true);

SetSemantic

// Valor de retorno: bool, false=parámetro no válido
public bool SetSemantic(bool enable, Vector4[] color = null)

Activa o desactiva el modo de renderizado semántico. Cuando está habilitado, se puede pasar un array de colores para definir el color de visualización de cada categoría semántica.

ParámetroTipoDescripción
enableboolSi se habilita el renderizado semántico
colorVector4[]Array de colores semánticos, la longitud debe ser 100, de lo contrario se devuelve false; pasa null para usar colores por defecto

Ejemplo:

Vector4[] colors = new Vector4[100];
colors[0] = new Vector4(1, 0, 0, 1); // Categoría 0 = rojo
lccManager.SetSemantic(true, colors);

SwitchRenderMode

public void SwitchRenderMode(RenderMode mode, Texture2D tex = null)

Cambia entre el renderizado de nube de puntos y el renderizado 3DGS. Se puede proporcionar una textura de rampa de color de elevación en el modo de nube de puntos.

ParámetroTipoDescripción
modeRenderModeModo de renderizado; consulta RenderMode
texTexture2DTextura de rampa de color de elevación (opcional)

Notas:

  • Solo compatible con plataformas PC / Mac.

Ejemplo:

lccManager.SwitchRenderMode(RenderMode.PointCloud, elevationTex);

SetRecordMode

public void SetRecordMode(bool isRecord, Vector2 renderSize, float verticalFov)

Establece el modo de grabación. En el modo de grabación, se usa una resolución y un FOV fijos para el renderizado, adecuado para la grabación de vídeo en alta definición.

ParámetroTipoDescripción
isRecordboolSi se usa el modo de grabación
renderSizeVector2Resolución de grabación
verticalFovfloatFOV vertical (grados)

Notas:

  • Solo compatible con plataformas PC / Mac.
  • En el modo de grabación, la distancia focal de la cámara es fija y no cambia con el componente Camera.
  • Después de grabar, llama a SetRecordMode(false, ...) para restaurar.

Ejemplo:

lccManager.SetRecordMode(true, new Vector2(3840, 2160), 60f);

SetVRPerformance

public void SetVRPerformance(bool _enabled)

Establece el modo de ordenamiento de alto rendimiento de VR. true usa el ordenamiento radix de GPU (GpuSorter), y false vuelve a CPU / BitonicSorter.

ParámetroTipoDescripción
_enabledboolSi se habilita el ordenamiento de alto rendimiento de GPU

Notas:

  • Solo afecta a la ruta de ordenamiento de los visores VR (Pico / Quest / PicoSwan / OpenXR); habilitado por defecto.
  • Cuando no hay dispositivo de cómputo (como Mali), el ordenamiento aguas arriba vuelve automáticamente a CPU, sin verse afectado por este interruptor.

Ejemplo:

lccManager.SetVRPerformance(true);

Iluminación y sombras

Los siguientes métodos controlan la recepción de sombras y las luces puntuales personalizadas en superficies 3DGS. Los métodos relacionados con las sombras deben llamarse después de que la escena LCC termine de cargarse.

SetShadowReceive

public void SetShadowReceive(bool enable)

Activa o desactiva la recepción de sombras de la nube de puntos. Cuando está activada, las sombras de los objetos Mesh de la escena pueden proyectarse sobre las superficies de la nube de puntos 3DGS.

ParámetroTipoDescripción
enableboolSi se reciben sombras

Notas:

  • Desactivado por defecto.
  • Requiere objetos Mesh que proyecten sombras y una Directional Light en la escena.

Ejemplo:

lccManager.SetShadowReceive(true);

SetShadowColor

public void SetShadowColor(Color color)

Establece el color del área de sombra.

ParámetroTipoDescripción
colorColorColor de sombra (RGBA)

Notas:

  • Por defecto (0.3, 0.3, 0.3, 1).
  • SetShadowReceive(true) debe activarse primero.

Ejemplo:

lccManager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));

SetShadowStrength

public void SetShadowStrength(float strength)

Establece la intensidad de la sombra. 0 es sin sombra, 1 es la sombra más intensa.

ParámetroTipoDescripción
strengthfloatIntensidad de la sombra, rango [0, 1], se limita automáticamente cuando se supera

Notas:

  • Por defecto 1.0.
  • SetShadowReceive(true) debe activarse primero.

Ejemplo:

lccManager.SetShadowStrength(0.8f);

SetLights

// Valor de retorno: int, 0=éxito, -1=superado el límite máximo de recuento
public int SetLights(List<PointLightData> lights)

Establece la lista personalizada de luces puntuales. Pasar null o una lista vacía desactiva la iluminación personalizada.

ParámetroTipoDescripción
lightsList<PointLightData>Lista de luces puntuales; consulta PointLightData

Notas:

  • PointLightData.lightType: 0 es una luz puntual (direction / spotAngle ignorados), 1 es un foco (direction / spotAngle requeridos).
  • Pasar null o una lista vacía desactiva la iluminación personalizada.

Ejemplo:

using Unity.Mathematics; // float3

var lights = new List<PointLightData>();
lights.Add(new PointLightData {
    position = new float3(0, 5, 0),
    lightType = 0,              // 0=luz puntual, 1=foco
    color = new float3(1, 1, 1),
    intensity = 2f,
    range = 10f
});
lccManager.SetLights(lights);

Gestión de cámaras

SetMainCamera

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 limpiar

Notas:

  • Debe establecerse antes de Renderer.Load().
  • Solo compatible con plataformas PC / Mac.

Ejemplo:

lccManager.SetMainCamera(Camera.main);

AddCamera

public void AddCamera(Camera _cam)

Añade una cámara secundaria. La cámara secundaria participa en el renderizado pero no afecta a la selección de LOD.

ParámetroTipoDescripción
_camCameraCámara secundaria

Notas:

  • Solo compatible con plataformas PC / Mac.
  • La cámara principal no puede añadirse como cámara secundaria.

Ejemplo:

lccManager.AddCamera(secondCamera);

RemoveCamera

public void RemoveCamera(Camera _cam)

Elimina una cámara secundaria añadida.

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

Notas:

  • Solo compatible con plataformas PC / Mac.

Ejemplo:

lccManager.RemoveCamera(secondCamera);

Recorte / Resaltado / Tono

El recorte, el resaltado y el tono son tres tipos de operaciones de edición, y todos admiten definir la región afectada mediante textura 2D, geometría 3D o una mezcla de ambas. Consulta Data2D, Data3D, DataMix y ToneMix.

SetClip (recorte por plano)

// Valor de retorno: int, 0=éxito
public int SetClip(Vector3 planePoint, Vector3 planeNormal, bool inside = true)

Recorta la nube de puntos con un plano infinito, manteniendo los puntos del lado de la normal o del lado opuesto.

ParámetroTipoDescripción
planePointVector3Un punto en el plano
planeNormalVector3Normal del plano
insidebooltrue mantiene el lado de la normal

Notas:

  • Mutuamente excluyente con otros modos de recorte.

Ejemplo:

lccManager.SetClip(Vector3.zero, Vector3.up, true); // Mantener por encima del suelo

SetClip (recorte por textura 2D)

// Valor de retorno: int, 0=éxito, 1=lista vacía, 2=superado el recuento máximo
public int SetClip(List<Data2D> _2Ds)

Recorta la nube de puntos usando una máscara de textura proyectada 2D.

ParámetroTipoDescripción
_2DsList<Data2D>Lista de selección por textura 2D

Ejemplo:

var clips = new List<Data2D>();
clips.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (recorte por geometría 3D)

// Valor de retorno: int, 0=éxito, 1=lista vacía, 2=superado el recuento máximo, 3=cero geometrías válidas
public int SetClip(List<Data3D> _3Ds)

Recorta la nube de puntos con geometría 3D, admitiendo operaciones booleanas para combinar varias geometrías.

ParámetroTipoDescripción
_3DsList<Data3D>Lista de geometría 3D

Notas:

  • Se requiere al menos una geometría con operation == normal.

Ejemplo:

var clips = new List<Data3D>();
clips.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (recorte en modo mixto)

// Valor de retorno: int, 0=éxito, 1=lista vacía, 2=superado el recuento máximo
public int SetClip(List<DataMix> mix)

Define la región de recorte con una mezcla de texturas 2D y geometrías 3D. Cada entrada especifica su tipo mediante editType.

ParámetroTipoDescripción
mixList<DataMix>Lista de selección mixta (2D + 3D)

Ejemplo:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(mix);

QuitClipMode

public void QuitClipMode()

Sale del modo de recorte y restaura la visualización completa de la nube de puntos.

Ejemplo:

lccManager.QuitClipMode();

SetHighlight (resaltado por textura 2D)

// Valor de retorno: int, 0=éxito, 1=lista vacía, 2=superado el recuento máximo
public int SetHighlight(List<Data2D> _2Ds)

Resalta la nube de puntos usando una máscara de textura proyectada 2D; la nube de puntos fuera de la región resaltada se atenúa.

ParámetroTipoDescripción
_2DsList<Data2D>Lista de selección por textura 2D

Notas:

  • Mutuamente excluyente con el resaltado 3D y el resaltado mixto.

Ejemplo:

var highlights = new List<Data2D>();
highlights.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (resaltado por geometría 3D)

// Valor de retorno: int, 0=éxito, 1=lista vacía, 2=superado el recuento máximo, 3=cero geometrías válidas
public int SetHighlight(List<Data3D> _3Ds)

Define la región resaltada con geometría 3D, admitiendo operaciones booleanas para combinar.

ParámetroTipoDescripción
_3DsList<Data3D>Lista de geometría 3D

Notas:

  • Se requiere al menos una geometría con operation == normal.

Ejemplo:

var highlights = new List<Data3D>();
highlights.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (resaltado en modo mixto)

// Valor de retorno: int, 0=éxito, 1=lista vacía, 2=superado el recuento máximo
public int SetHighlight(List<DataMix> mix)

Define la región resaltada con una mezcla de texturas 2D y geometrías 3D.

ParámetroTipoDescripción
mixList<DataMix>Lista de selección mixta

Ejemplo:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(mix);

QuitHighlightMode

public void QuitHighlightMode()

Sale del modo de resaltado y restaura la visualización normal de la nube de puntos.

Ejemplo:

lccManager.QuitHighlightMode();

SetTone

// Valor de retorno: int, 0=éxito, 1=lista vacía, 2=superado el recuento máximo
public int SetTone(List<ToneMix> mix)

Aplica el ajuste de tono a la región seleccionada, admitiendo filtros de brillo, saturación, contraste y LUT. La región de tono puede definirse mediante textura 2D o geometría 3D.

ParámetroTipoDescripción
mixList<ToneMix>Lista de mezcla de tono

Notas:

  • brightness / saturation / contrast por defecto 1.0.
  • lutid es el índice del filtro LUT; 0 significa no usado.

Ejemplo:

var tones = new List<ToneMix>();
tones.Add(new ToneMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = boxMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal,
    brightness = 1.2f,
    saturation = 1.0f,
    contrast = 1.1f,
    lutid = 0
});
lccManager.SetTone(tones);

QuitToneMode

public void QuitToneMode()

Sale del modo de tono y restaura el color original de la nube de puntos.

Ejemplo:

lccManager.QuitToneMode();

Proyección de decal

La proyección de decal proyecta una textura sobre las superficies 3DGS a lo largo de la dirección del proyector. El decal es un estado global fijo en el mundo, coherente para todas las cámaras. El flujo de trabajo típico es: habilitar el decal → establecer la textura → establecer la pose del proyector. Los siguientes métodos solo son compatibles con plataformas PC / Mac.

SetDecalEnabled

public void SetDecalEnabled(bool enable)

Activa o desactiva la proyección del decal. SetDecalTexture() y SetDecalProjection() deben llamarse por separado para establecer el contenido y la pose del proyector.

ParámetroTipoDescripción
enableboolSi se habilita la proyección del decal

Notas:

  • Desactivarlo no limpia la textura / parámetros en caché.

Ejemplo:

lccManager.SetDecalEnabled(true);
lccManager.SetDecalTexture(decalTex);
lccManager.SetDecalProjection(projectorPos, projectorRot, 60f, 1.778f, 0.1f, 20f);

SetDecalTexture

public void SetDecalTexture(Texture2D tex)

Establece la textura del decal. RGB es el color, y A es la máscara propia del decal, que se multiplica con la opacidad global y el desvanecimiento del borde.

ParámetroTipoDescripción
texTexture2DTextura del decal; pasar null limpia la referencia

Ejemplo:

lccManager.SetDecalTexture(logoTex);

SetDecalProjection

public void SetDecalProjection(Vector3 pos, Quaternion rot, float fov, float aspect, float near, float far)

Establece la pose y los parámetros de perspectiva del proyector del decal. El proyector proyecta a lo largo de su dirección frontal (+Z), y los puntos dentro del frustum quedan cubiertos por el decal.

ParámetroTipoDescripción
posVector3Posición en el mundo del proyector
rotQuaternionOrientación del proyector
fovfloatFOV vertical (grados), limitado a [1, 179]
aspectfloatRelación de aspecto, mínimo 1e-4
nearfloatPlano de recorte cercano, mínimo 1e-3
farfloatPlano de recorte lejano, mínimo near + 1e-3

Ejemplo:

lccManager.SetDecalProjection(new Vector3(0, 10, 0), Quaternion.Euler(90, 0, 0), 60f, 1.778f, 0.1f, 20f);

SetDecalOpacity

public void SetDecalOpacity(float opacity)

Establece la opacidad general del decal.

ParámetroTipoDescripción
opacityfloatOpacidad general del decal, rango [0, 1], se limita automáticamente cuando se supera

Ejemplo:

lccManager.SetDecalOpacity(0.8f);

SetDecalEdgeFade

public void SetDecalEdgeFade(float edgeFade)

Establece el ancho de desvanecimiento del borde del decal. 0 es un borde duro, y un valor mayor hace que la transición del borde sea más suave.

ParámetroTipoDescripción
edgeFadefloatAncho de desvanecimiento del borde (relación en espacio UV), rango [0, 0.5), se limita automáticamente cuando se supera

Ejemplo:

lccManager.SetDecalEdgeFade(0.1f);

SetDecalOcclusion

public void SetDecalOcclusion(bool enable)

Activa o desactiva el culling por oclusión del decal (basado en el mapa de profundidad del proyector). Cuando está activado, las superficies ocluidas no quedan cubiertas por el decal.

ParámetroTipoDescripción
enableboolSi se habilita el culling por oclusión del decal

Notas:

  • Solo plataforma PC / Mac, y solo pipeline URP.
  • SetDecalProjection() debería haberse llamado para configurar el proyector antes de habilitarlo.
  • Depende de los parámetros de calidad configurados por SetDecalOcclusionSettings().

Ejemplo:

lccManager.SetDecalOcclusion(true);

SetDecalOcclusionSettings

public void SetDecalOcclusionSettings(DecalOcclusionSettings settings)

Establece todos los parámetros de calidad del culling por oclusión del decal a la vez. Consulta DecalOcclusionSettings.

ParámetroTipoDescripción
settingsDecalOcclusionSettingsParámetros de calidad del culling por oclusión

Notas:

  • Puede ajustarse en cualquier momento; los parámetros surten efecto inmediatamente.

Ejemplo:

lccManager.SetDecalOcclusionSettings(DecalOcclusionSettings.Default);
lccManager.SetDecalOcclusionSettings(new DecalOcclusionSettings {
    opacityCutoff = 0.1f,
    depthBias = 0.05f,
    footprintMaxPx = 2,
    resolution = 1024
});

Ajuste

La función de ajuste busca automáticamente bordes / esquinas cercanos para alinearse durante el raycasting, y se usa comúnmente para interacciones precisas como la medición y la anotación. Los siguientes métodos solo son compatibles con plataformas PC / Mac.

SetSnapEnabled

public void SetSnapEnabled(bool enable)

Activa o desactiva la función de ajuste. Cuando está activada, RaycastWithSnap() busca automáticamente bordes / esquinas cercanos a los que ajustarse.

ParámetroTipoDescripción
enableboolSi se habilita el ajuste

Notas:

  • Desactivado por defecto.
  • Sin efecto en móvil / VR, y se emite una advertencia.

Ejemplo:

lccManager.SetSnapEnabled(true);

SetSnapRadius

public void SetSnapRadius(float pixels)

Establece el radio de búsqueda del ajuste. Busca el borde / esquina más cercano dentro de este rango de píxeles.

ParámetroTipoDescripción
pixelsfloatRadio de búsqueda del ajuste (píxeles)

Notas:

  • Por defecto 20 píxeles.
  • Un valor mayor significa un rango de búsqueda más amplio, pero puede ajustarse a objetivos no deseados.

Ejemplo:

lccManager.SetSnapRadius(30f);

SetEdgeThreshold

public void SetEdgeThreshold(float threshold)

Establece el umbral de detección de bordes. Un valor menor detecta más bordes.

ParámetroTipoDescripción
thresholdfloatUmbral de detección de bordes, rango recomendado [0.1, 0.8]

Notas:

  • Por defecto 0.3.
  • Un valor demasiado pequeño produce una gran cantidad de bordes ruidosos.

Ejemplo:

lccManager.SetEdgeThreshold(0.2f);

SetSnapPreviewEnabled

public void SetSnapPreviewEnabled(bool enable)

Activa o desactiva la función de previsualización de ajuste. Cuando está activada, el indicador del objetivo de ajuste más cercano se muestra en tiempo real a medida que se mueve el ratón.

ParámetroTipoDescripción
enableboolSi se habilita la previsualización de ajuste

Notas:

  • SetSnapEnabled(true) debe llamarse primero.
  • La previsualización consume continuamente recursos de GPU (detección cada fotograma).

Ejemplo:

lccManager.SetSnapPreviewEnabled(true);

UpdateSnapPreview

public void UpdateSnapPreview(Vector2 mousePos, Camera cam)

Actualiza el estado de la previsualización de ajuste. Se llama a medida que se mueve el ratón para actualizar la posición del indicador de previsualización.

ParámetroTipoDescripción
mousePosVector2Coordenadas de pantalla actuales del ratón
camCameraCámara

Notas:

  • SetSnapPreviewEnabled(true) debe llamarse primero.
  • Se recomienda llamarla continuamente en Update.

Ejemplo:

void Update()
{
    lccManager.UpdateSnapPreview(Input.mousePosition, Camera.main);
}

GetSnapPreviewState

// Valor de retorno: SnapPreviewState
public SnapPreviewState GetSnapPreviewState()

Obtiene el estado actual de la previsualización de ajuste, incluido si hay un objetivo de ajuste, el tipo de objetivo, la posición en pantalla del objetivo y la distancia en píxeles al ratón. Consulta SnapPreviewState.

Notas:

  • SetSnapPreviewEnabled(true) y UpdateSnapPreview() deben llamarse primero.
  • Devuelve default(SnapPreviewState) cuando no hay objetivo.
  • screenPos está en coordenadas de pantalla, no en coordenadas de mundo; usa RaycastWithSnap() para obtener HitResult.hitPos para coordenadas de mundo.

Ejemplo:

var state = lccManager.GetSnapPreviewState();
if (state.hasTarget)
{
    // state.snapType: Corner / Edge
    // state.screenPos: coordenadas de pantalla del objetivo de ajuste
    // state.distanceToMouse: distancia en píxeles
}

Raycasting y consultas de colisión

El raycasting se usa para seleccionar puntos en superficies 3DGS, y las consultas de colisión se usan para la interacción física entre personajes / objetos y la nube de puntos. El resultado del impacto se devuelve mediante HitResult.

Nota:

El campo de coordenadas de mundo del punto de impacto de HitResult se llama hitPos (no position).

Raycast (coordenadas de pantalla)

// Valor de retorno: bool, true=impacto
public bool Raycast(Vector3 mousePos, out HitResult _finalResult)

Emite un rayo desde coordenadas de pantalla para detectar impactos en la nube de puntos. El rayo se genera usando la cámara principal establecida por SetMainCamera().

ParámetroTipoDescripción
mousePosVector3Coordenadas de pantalla
_finalResultout HitResultResultado del impacto

Notas:

  • SetMainCamera() debe llamarse primero para establecer la cámara principal.
  • Devuelve el punto de impacto más cercano a la cámara.
  • La precisión se ve afectada por SetRaycastDelta(), y la distancia máxima se controla mediante SetMaxRaycastDistance().

Ejemplo:

if (lccManager.Raycast(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

Raycast (Ray)

// Valor de retorno: bool, true=impacto
public bool Raycast(Ray _ray, out HitResult _finalResult)

Realiza raycasting con un Ray personalizado, iterando sobre todos los Renderers activos y devolviendo el impacto más cercano.

ParámetroTipoDescripción
_rayRayRay
_finalResultout HitResultResultado del impacto

Ejemplo:

Ray ray = new Ray(origin, direction);
if (lccManager.Raycast(ray, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (coordenadas de pantalla)

// Valor de retorno: bool, true=impacto
public bool RaycastMesh(Vector3 mousePos, out HitResult _finalResult, float _distance = 70.0f)

Emite un rayo desde coordenadas de pantalla para detectar impactos contra la malla de colisión de la nube de puntos. Usa datos Collider para la detección, lo que es más rápido que Raycast() pero menos preciso.

ParámetroTipoDescripción
mousePosVector3Coordenadas de pantalla
_finalResultout HitResultResultado del impacto
_distancefloatDistancia máxima de detección, por defecto 70.0

Notas:

  • Los datos deben contener nodos Collider, y Renderer.SetColliderEnable(true) debe llamarse primero.

Ejemplo:

if (lccManager.RaycastMesh(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (Ray + Bounds)

// Valor de retorno: bool, true=impacto
public bool RaycastMesh(Ray ray, out HitResult result, out Bounds hitBounds, float maxDist = 70.0f)

Realiza la detección de malla de colisión con un Ray personalizado, devolviendo también la caja delimitadora del nodo impactado.

ParámetroTipoDescripción
rayRayRay
resultout HitResultResultado del impacto
hitBoundsout BoundsCaja delimitadora del nodo impactado
maxDistfloatDistancia máxima de detección, por defecto 70.0

Notas:

  • Los datos deben contener nodos Collider.

Ejemplo:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (lccManager.RaycastMesh(ray, out HitResult hit, out Bounds bounds))
{
    Debug.Log(bounds.center);
}

RaycastWithSnap

// Valor de retorno: bool, true=impacto
public bool RaycastWithSnap(Vector2 screenPos, Camera cam, out HitResult result)

Raycasting con ajuste. Primero realiza un raycast normal y luego busca bordes / esquinas cerca del punto de impacto a los que ajustarse.

ParámetroTipoDescripción
screenPosVector2Coordenadas de pantalla
camCameraCámara
resultout HitResultResultado del impacto (incluye información de ajuste)

Notas:

  • SetSnapEnabled(true) debe llamarse primero.
  • Solo plataformas PC / Mac; no disponible en móvil / VR.
  • Prioridad de ajuste: Corner > Edge > None.
  • HitResult.snapType es el tipo de ajuste, HitResult.hitPos es la coordenada de mundo después del ajuste, y HitResult.originalHitPos es el punto de impacto original antes del ajuste.

Ejemplo:

if (lccManager.RaycastWithSnap(mousePos, cam, out HitResult hit))
{
    // hit.snapType: Corner / Edge / None
    // hit.hitPos: coordenada de mundo después del ajuste
    // hit.originalHitPos: punto de impacto original antes del ajuste
}

SetRaycastDelta

public void SetRaycastDelta(float delta)

Establece el parámetro de precisión del raycasting. Un valor menor significa mayor precisión pero mayor consumo de rendimiento.

ParámetroTipoDescripción
deltafloatPrecisión del raycasting, rango [0.1, 10.0], se limita automáticamente cuando se supera

Notas:

  • Por defecto 0.1.
  • Afecta a la precisión de detección de todos los métodos Raycast().

Ejemplo:

lccManager.SetRaycastDelta(0.5f);

SetMaxRaycastDistance

public void SetMaxRaycastDistance(float _distance)

Establece la distancia máxima de detección de los métodos Raycast().

ParámetroTipoDescripción
_distancefloatDistancia máxima de raycast, rango [10, 10000], se limita automáticamente cuando se supera

Notas:

  • Afecta a las sobrecargas Raycast(Vector3) / Raycast(Ray); no afecta a RaycastMesh() (que tiene su propio parámetro de distancia).

Ejemplo:

lccManager.SetMaxRaycastDistance(500f);

IntersectsSphere

// Valor de retorno: bool, true=interseca
public bool IntersectsSphere(Sphere sphere)

// Valor de retorno: bool, true=interseca
public bool IntersectsSphere(Sphere sphere, out Vector3 delta)

Detecta si una esfera interseca con el collider de la nube de puntos. La segunda sobrecarga devuelve además el vector de penetración, que puede usarse para la expulsión física.

ParámetroTipoDescripción
sphereSphereEsfera
deltaout Vector3Vector de penetración (dirección y distancia de expulsión)

Notas:

  • Los datos deben contener nodos Collider, y Renderer.SetColliderEnable(true) debe llamarse primero.
  • Itera sobre todos los Renderers activos.

Ejemplo:

var sphere = new Sphere(transform.position, 0.5f);
if (lccManager.IntersectsSphere(sphere, out Vector3 delta))
{
    transform.position += delta;
}

IntersectsCapsule

// Valor de retorno: bool, true=interseca
public bool IntersectsCapsule(Capsule capsule)

// Valor de retorno: bool, true=interseca
public bool IntersectsCapsule(Capsule capsule, out Vector3 delta)

Detecta si una cápsula interseca con el collider de la nube de puntos, comúnmente usado para la detección de colisiones del controlador de personaje. La segunda sobrecarga devuelve el vector de penetración.

ParámetroTipoDescripción
capsuleCapsuleCápsula
deltaout Vector3Vector de penetración

Notas:

  • Los datos deben contener nodos Collider, y Renderer.SetColliderEnable(true) debe llamarse primero.

Ejemplo:

var capsule = new Capsule(footPos, headPos, 0.3f);
if (lccManager.IntersectsCapsule(capsule, out Vector3 delta))
{
    characterController.Move(delta);
}

Efectos visuales

TriggerVFX

public void TriggerVFX(Vector3 vfxOriginW, int vfxid = 0)

Activa un efecto visual en la coordenada de mundo especificada, expandiéndose hacia afuera desde esa coordenada.

ParámetroTipoDescripción
vfxOriginWVector3Origen en coordenadas de mundo del efecto
vfxidintID del efecto, por defecto 0

Notas:

  • Debe llamarse después de que la escena LCC termine de cargarse.

Ejemplo:

lccManager.TriggerVFX(hitPoint, 0);

Consultas de instancias

GetAllRenderers

// Valor de retorno: List<Renderer>, una copia de todas las instancias Renderer registradas
public List<Renderer> GetAllRenderers()

Obtiene la lista de todas las instancias Renderer registradas actualmente (devuelve una copia).

Ejemplo:

var renderers = lccManager.GetAllRenderers();
foreach (var r in renderers) { /* ... */ }