Tipos de datos: Enums y Structs
Los enums y structs expuestos por el LCC Unity SDK, usados por los métodos de LCCManager y Renderer.
Enums
PlatformType
Plataforma de ejecución de destino. Usada por SetPlatformType().
public enum PlatformType { PC, Mac, Android, iOS, Pico, Quest, AVP, PicoSwan, OpenXR, PCVR }
ActiveRenderMode
Modo de arquitectura de renderizado global. Usado por SwitchRenderPass().
public enum ActiveRenderMode { MultiRender, SingleRender }
| Valor | Descripción |
|---|---|
MultiRender | Usa un búfer de GPU compartido y puede renderizar hasta 255 Renderers simultáneamente |
SingleRender | El SDK selecciona automáticamente la ruta de renderizado según el tamaño de los datos |
Aplicable solo a plataformas PC / Mac; las plataformas móviles / VR adoptan automáticamente una estrategia adaptativa, y se rechaza la llamada a
SwitchRenderPass().
SourceType
Tipo de fuente de datos. Devuelto por Renderer.GetSourceType().
public enum SourceType { LCC, PLY, SPLAT, TYY, None, SOG, SPZ, KSPLAT }
DataType
Tipo de formato de datos. Devuelto por Renderer.GetDataType().
public enum DataType { L1, L2, L2Pro, K1, K2, Drone, Drone_L2, PortalCam, None }
MipMode
Modo de renderizado Mip. Usado por SetMipMode().
public enum MipMode { Mip, Non_Mip }
| Valor | Descripción |
|---|---|
Mip | Usa muestreo de mipmap (por defecto) |
Non_Mip | Desactiva el mipmap, con detalles de renderizado más finos pero mayor coste de rendimiento |
SnapType
Tipo de ajuste. Usado por HitResult.snapType y SnapPreviewState.snapType.
public enum SnapType { None, Edge, Corner }
SelectionMode
Estrategia de selección de nodos. Usada por SetSelectionMode().
public enum SelectionMode { Auto, Normal, Large }
| Valor | Descripción |
|---|---|
Auto | Se decide automáticamente según la caja delimitadora general de la escena (por defecto) |
Normal | Adecuado para escenas pequeñas y medianas |
Large | Adecuado para escenas muy grandes (más de 1000 metros) |
RenderMode
Modo de renderizado de nube de puntos / 3DGS. Usado por SwitchRenderMode().
public enum RenderMode { PointCloud, LCCGS }
| Valor | Descripción |
|---|---|
PointCloud | Renderizado de nube de puntos |
LCCGS | Renderizado 3DGS |
SelectMode
Modo de toma/exclusión de selección. Usado por datos de selección como Data2D y Data3D.
public enum SelectMode { normal, invert, clip }
OperationMode
Modo de operación booleana de varias geometrías. Usado por datos de selección como Data3D y DataMix.
public enum OperationMode { normal = 0, erase = 1 }
| Valor | Descripción |
|---|---|
normal | Unión |
erase | Sustracción |
EditType
Tipo de entrada en una selección mixta. Usado por DataMix y ToneMix.
public enum EditType { Edit2D, Edit3D }
ShapeType
Tipo de geometría de recorte / resaltado 3D. Usado por Data3D, DataMix y ToneMix.
public enum ShapeType { box, sphere }
Structs
HitResult
Resultado del impacto del raycast. Devuelto por Raycast(), RaycastMesh() y RaycastWithSnap().
public struct HitResult {
public bool isHit; // Si hubo impacto
public float distance; // Distancia
public Vector3 hitPos; // Punto de impacto en coordenadas de mundo
public Vector3 normal; // Normal del impacto
public float hitAlpha; // Alfa del elipsoide impactado
public float dist2Origin; // Distancia al origen del rayo
public float scale; // Escala del elipsoide
public SnapType snapType; // Tipo de ajuste (None / Edge / Corner)
public Vector3 originalHitPos; // Punto de impacto original antes del ajuste
}
El campo de coordenadas de mundo del punto de impacto se llama
hitPos.
SnapPreviewState
Estado de la previsualización de ajuste. Devuelto por GetSnapPreviewState().
public struct SnapPreviewState {
public bool hasTarget; // Si hay un objetivo de ajuste
public SnapType snapType; // None / Edge / Corner
public Vector2 screenPos; // Coordenadas de pantalla del objetivo de ajuste
public float distanceToMouse; // Distancia en píxeles a la posición del ratón
}
screenPosestá en coordenadas de pantalla (píxeles), no en coordenadas de mundo. Cuando se necesitan coordenadas de mundo, usa RaycastWithSnap() para obtenerHitResult.hitPos.
Data2D
Selección por proyección de textura 2D. Usada para el recorte / resaltado por textura 2D.
public struct Data2D {
public Texture2D texture; // Textura de máscara R8 1024x1024
public Matrix4x4 mv; // Matriz ModelView
public Matrix4x4 mvp; // Matriz ModelViewProjection
public SelectMode mode; // normal / invert
}
Data3D
Selección por geometría 3D. Usada para el recorte / resaltado por geometría 3D.
public struct Data3D {
public ShapeType type; // box / sphere
public Matrix4x4 invMat; // Matriz de transformación inversa de la geometría
public OperationMode operation; // normal=unión, erase=sustracción
public SelectMode mode; // normal / invert / clip
}
DataMix
Selección mixta 2D + 3D. Usada para el recorte / resaltado en modo mixto.
public struct DataMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // Tipo de geometría 3D
public Matrix4x4 invMat; // Matriz de transformación inversa 3D
public Texture2D texture; // Textura de máscara 2D
public Matrix4x4 mv; // ModelView 2D
public Matrix4x4 mvp; // MVP 2D
public OperationMode operation;
public SelectMode mode;
}
ToneMix
Selección de tono, que añade parámetros de tono sobre DataMix. Usada por SetTone().
public struct ToneMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // Tipo de geometría 3D
public Matrix4x4 invMat; // Matriz de transformación inversa 3D
public Texture2D texture; // Textura de máscara 2D
public Matrix4x4 mv; // ModelView 2D
public Matrix4x4 mvp; // MVP 2D
public OperationMode operation;
public SelectMode mode;
public float brightness; // Brillo (por defecto 1.0)
public float saturation; // Saturación (por defecto 1.0)
public float contrast; // Contraste (por defecto 1.0)
public int lutid; // Índice del filtro LUT (0 = no usado)
}
PointLightData
Datos personalizados de luz puntual / foco. Usados por SetLights().
public struct PointLightData {
public float3 position; // Coordenadas de mundo
public int lightType; // 0=luz puntual, 1=foco
public float3 color; // Color RGB (sin componente alfa)
public float intensity; // Intensidad de la luz
public float3 direction; // Dirección del foco (ignorada para luz puntual)
public float range; // Alcance de la luz
public float spotAngle; // Ángulo del cono del foco (grados, ignorado para luz puntual)
public float3 pad; // Relleno de alineación, no requiere asignación
}
El tipo del campo es
Unity.Mathematics.float3, noVector4;colorno tiene componente alfa. CuandolightTypees0es una luz puntual (direction/spotAnglese ignoran), y cuando es1es un foco.
DecalOcclusionSettings
Parámetros de calidad del culling por oclusión del decal. Usados por SetDecalOcclusionSettings().
public struct DecalOcclusionSettings {
public float opacityCutoff; // Opacidad mínima en [0,1] para que un splat participe en el mapa de profundidad, por defecto 0 (todos participan)
public float depthBias; // Relación de tolerancia de profundidad relativa, por defecto 0.05
public int footprintMaxPx; // Radio máximo de huella cuadrada (px), 0~16, por defecto 2
public int resolution; // Resolución del mapa de profundidad (px, potencia de 2, 256~4096), por defecto 1024
public static DecalOcclusionSettings Default { get; } // cutoff=0, bias=0.05, footprint=2, resolution=1024
}
| Campo | Descripción |
|---|---|
opacityCutoff | Solo los splats con opacidad ≥ este valor participan en el mapa de profundidad, lo que puede filtrar splats flotantes / nebulosos. Por defecto 0 (todos participan). |
depthBias | Relación de tolerancia de profundidad relativa que absorbe el grosor de la superficie de la nube de puntos proporcionalmente a la distancia. Por defecto 0.05. Demasiado pequeño causa ruido de autooclusión; demasiado grande omite oclusiones. |
footprintMaxPx | Radio máximo conservador de huella cuadrada (en píxeles), usado para cubrir el vecindario y evitar fugas de penetración. 0 es un solo texel, rango 0~16, por defecto 2. Demasiado grande causa expansión del contorno y sobre-oclusión. |
resolution | Resolución del mapa de profundidad (píxeles, potencia de 2, 256~4096). Bajarla rellena huecos dispersos a costa de límites de oclusión ligeramente más rugosos. Por defecto 1024. |
SplatMeta
Metadatos de los datos 3DGS. Producidos por Renderer.GetMeta(), que contienen metadatos como la fuente de datos (source) y el formato de datos (dataType), y pueden leerse sin cargar completamente los datos.
LCCMeshBlockInfo
Metadatos de bloque de malla de colisión. Devueltos por Renderer.GetMeshBlockInfos().
public struct LCCMeshBlockInfo {
public string id; // Id del nodo, correspondiente a LCCMeshBlock.id
public Bounds boundsWorld; // AABB en espacio de mundo, usado para seleccionar ids
public Bounds boundsLocal; // AABB en espacio local
public int vertexCount; // Recuento de vértices
public int faceCount; // Recuento de caras
}
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Id del nodo, correspondiente a LCCMeshBlock.id |
boundsWorld | Bounds | AABB en espacio de mundo, usado para seleccionar ids |
boundsLocal | Bounds | AABB en espacio local |
vertexCount | int | Recuento de vértices |
faceCount | int | Recuento de caras |
LCCMeshBlock
Datos de geometría de bloque de malla de colisión. Devueltos por Renderer.GetMeshes().
public struct LCCMeshBlock {
public string id; // Id del nodo
public Vector3[] vertices; // Vértices, en coordenadas locales
public int[] triangles; // Índices de triángulos, tres por grupo
public Bounds boundsLocal; // Caja delimitadora en el mismo espacio que los vértices
}
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Id del nodo |
vertices | Vector3[] | Matriz de vértices, en el sistema de coordenadas local del objeto |
triangles | int[] | Índices de triángulos, tres por grupo |
boundsLocal | Bounds | Caja delimitadora en el mismo espacio que los vértices |
vertices/boundsLocalestán ambos en el sistema de coordenadas local del objeto; colocar el GameObject que lleva la Mesh bajoRenderer.Transformlos alinea automáticamente. Un solo bloque puede tener más de 65535 vértices, por lo quemesh.indexFormat = IndexFormat.UInt32debe establecerse antes de construir la Mesh.