Tipi di dati: enum e struct
Gli enum e gli struct esposti dall'LCC Unity SDK, usati dai metodi di LCCManager e Renderer.
Enum
PlatformType
Piattaforma di runtime di destinazione. Usata da SetPlatformType().
public enum PlatformType { PC, Mac, Android, iOS, Pico, Quest, AVP, PicoSwan, OpenXR, PCVR }
ActiveRenderMode
Modalità di architettura di rendering globale. Usata da SwitchRenderPass().
public enum ActiveRenderMode { MultiRender, SingleRender }
| Valore | Descrizione |
|---|---|
MultiRender | Usa un buffer GPU condiviso e può renderizzare fino a 255 Renderer contemporaneamente |
SingleRender | L'SDK seleziona automaticamente il percorso di rendering in base alle dimensioni dei dati |
Applicabile solo alle piattaforme PC / Mac; le piattaforme mobile / VR adottano automaticamente una strategia adattiva e la chiamata di
SwitchRenderPass()viene rifiutata.
SourceType
Tipo di origine dati. Restituito da Renderer.GetSourceType().
public enum SourceType { LCC, PLY, SPLAT, TYY, None, SOG, SPZ, KSPLAT }
DataType
Tipo di formato dei dati. Restituito da Renderer.GetDataType().
public enum DataType { L1, L2, L2Pro, K1, K2, Drone, Drone_L2, PortalCam, None }
MipMode
Modalità di rendering Mip. Usata da SetMipMode().
public enum MipMode { Mip, Non_Mip }
| Valore | Descrizione |
|---|---|
Mip | Usa il campionamento mipmap (predefinito) |
Non_Mip | Disattiva la mipmap, con dettagli di rendering più fini ma un maggiore costo in termini di prestazioni |
SnapType
Tipo di snap. Usato da HitResult.snapType e SnapPreviewState.snapType.
public enum SnapType { None, Edge, Corner }
SelectionMode
Strategia di selezione dei nodi. Usata da SetSelectionMode().
public enum SelectionMode { Auto, Normal, Large }
| Valore | Descrizione |
|---|---|
Auto | Deciso automaticamente in base al box di delimitazione complessivo della scena (predefinito) |
Normal | Adatto a scene piccole e medie |
Large | Adatto a scene molto grandi (oltre 1000 metri) |
RenderMode
Modalità di rendering nuvola di punti / 3DGS. Usata da SwitchRenderMode().
public enum RenderMode { PointCloud, LCCGS }
| Valore | Descrizione |
|---|---|
PointCloud | Rendering della nuvola di punti |
LCCGS | Rendering 3DGS |
SelectMode
Modalità di selezione includi/escludi. Usata da dati di selezione come Data2D e Data3D.
public enum SelectMode { normal, invert, clip }
OperationMode
Modalità di operazione booleana multi-geometria. Usata da dati di selezione come Data3D e DataMix.
public enum OperationMode { normal = 0, erase = 1 }
| Valore | Descrizione |
|---|---|
normal | Unione |
erase | Sottrazione |
EditType
Tipo di voce in una selezione mista. Usato da DataMix e ToneMix.
public enum EditType { Edit2D, Edit3D }
ShapeType
Tipo di geometria per ritaglio / evidenziazione 3D. Usato da Data3D, DataMix e ToneMix.
public enum ShapeType { box, sphere }
Struct
HitResult
Risultato del colpo del raycast. Restituito da Raycast(), RaycastMesh() e RaycastWithSnap().
public struct HitResult {
public bool isHit; // Indica se si è verificato un colpo
public float distance; // Distanza
public Vector3 hitPos; // Punto di impatto in coordinate mondo
public Vector3 normal; // Normale del punto di impatto
public float hitAlpha; // Alpha dell'ellissoide colpito
public float dist2Origin; // Distanza dall'origine del raggio
public float scale; // Scala dell'ellissoide
public SnapType snapType; // Tipo di snap (None / Edge / Corner)
public Vector3 originalHitPos; // Punto di impatto originale prima dello snap
}
Il campo della coordinata mondo del punto di impatto si chiama
hitPos.
SnapPreviewState
Stato dell'anteprima di snap. Restituito da GetSnapPreviewState().
public struct SnapPreviewState {
public bool hasTarget; // Indica se esiste una destinazione di snap
public SnapType snapType; // None / Edge / Corner
public Vector2 screenPos; // Coordinate schermo della destinazione di snap
public float distanceToMouse; // Distanza in pixel dalla posizione del mouse
}
screenPosè in coordinate schermo (pixel), non in coordinate mondo. Quando servono le coordinate mondo, usa RaycastWithSnap() per ottenereHitResult.hitPos.
Data2D
Selezione con proiezione di texture 2D. Usata per il ritaglio / l'evidenziazione tramite texture 2D.
public struct Data2D {
public Texture2D texture; // Texture maschera R8 1024x1024
public Matrix4x4 mv; // Matrice ModelView
public Matrix4x4 mvp; // Matrice ModelViewProjection
public SelectMode mode; // normal / invert
}
Data3D
Selezione con geometria 3D. Usata per il ritaglio / l'evidenziazione tramite geometria 3D.
public struct Data3D {
public ShapeType type; // box / sphere
public Matrix4x4 invMat; // Matrice di trasformazione inversa della geometria
public OperationMode operation; // normal=unione, erase=sottrazione
public SelectMode mode; // normal / invert / clip
}
DataMix
Selezione mista 2D + 3D. Usata per il ritaglio / l'evidenziazione in modalità mista.
public struct DataMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // Tipo di geometria 3D
public Matrix4x4 invMat; // Matrice di trasformazione inversa 3D
public Texture2D texture; // Texture maschera 2D
public Matrix4x4 mv; // ModelView 2D
public Matrix4x4 mvp; // MVP 2D
public OperationMode operation;
public SelectMode mode;
}
ToneMix
Selezione del tono, che aggiunge i parametri del tono sopra DataMix. Usata da SetTone().
public struct ToneMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // Tipo di geometria 3D
public Matrix4x4 invMat; // Matrice di trasformazione inversa 3D
public Texture2D texture; // Texture maschera 2D
public Matrix4x4 mv; // ModelView 2D
public Matrix4x4 mvp; // MVP 2D
public OperationMode operation;
public SelectMode mode;
public float brightness; // Luminosità (predefinito 1.0)
public float saturation; // Saturazione (predefinito 1.0)
public float contrast; // Contrasto (predefinito 1.0)
public int lutid; // Indice del filtro LUT (0 = non usato)
}
PointLightData
Dati personalizzati di luce puntiforme / luce spot. Usati da SetLights().
public struct PointLightData {
public float3 position; // Coordinate mondo
public int lightType; // 0=luce puntiforme, 1=luce spot
public float3 color; // Colore RGB (senza componente alpha)
public float intensity; // Intensità della luce
public float3 direction; // Direzione della luce spot (ignorata per la luce puntiforme)
public float range; // Portata della luce
public float spotAngle; // Angolo del cono della luce spot (gradi, ignorato per la luce puntiforme)
public float3 pad; // Padding di allineamento, nessuna assegnazione necessaria
}
Il tipo del campo è
Unity.Mathematics.float3, nonVector4;colornon ha la componente alpha. QuandolightTypeè0si tratta di una luce puntiforme (direction/spotAnglevengono ignorati), mentre quando è1si tratta di una luce spot.
DecalOcclusionSettings
Parametri di qualità del culling di occlusione delle decal. Usati da SetDecalOcclusionSettings().
public struct DecalOcclusionSettings {
public float opacityCutoff; // Opacità minima in [0,1] affinché uno splat partecipi alla depth map, predefinito 0 (partecipano tutti)
public float depthBias; // Rapporto di tolleranza di profondità relativa, predefinito 0.05
public int footprintMaxPx; // Raggio massimo dell'impronta quadrata (px), 0~16, predefinito 2
public int resolution; // Risoluzione della depth map (px, potenza di 2, 256~4096), predefinito 1024
public static DecalOcclusionSettings Default { get; } // cutoff=0, bias=0.05, footprint=2, resolution=1024
}
| Campo | Descrizione |
|---|---|
opacityCutoff | Solo gli splat con opacità ≥ questo valore partecipano alla depth map, il che può filtrare gli splat fluttuanti o simili a nebbia. Predefinito 0 (partecipano tutti). |
depthBias | Rapporto di tolleranza di profondità relativa che assorbe lo spessore della superficie della nuvola di punti in modo proporzionale alla distanza. Predefinito 0.05. Un valore troppo piccolo provoca rumore di auto-occlusione; troppo grande fa perdere le occlusioni. |
footprintMaxPx | Raggio massimo conservativo dell'impronta quadrata (in pixel), usato per coprire l'intorno ed evitare perdite di penetrazione. 0 è un singolo texel, intervallo 0~16, predefinito 2. Un valore troppo grande provoca l'espansione del contorno e una sovra-occlusione. |
resolution | Risoluzione della depth map (pixel, potenza di 2, 256~4096). Abbassandola si riempiono i fori sparsi a costo di confini di occlusione leggermente più grezzi. Predefinito 1024. |
SplatMeta
Metadati dei dati 3DGS. Restituiti da Renderer.GetMeta(), contengono metadati come l'origine dei dati (source) e il formato dei dati (dataType), e possono essere letti senza caricare completamente i dati.
LCCMeshBlockInfo
Metadati dei blocchi Mesh di collisione. Restituiti da Renderer.GetMeshBlockInfos().
public struct LCCMeshBlockInfo {
public string id; // Id del nodo, corrispondente a LCCMeshBlock.id
public Bounds boundsWorld; // AABB nello spazio mondo, usato per selezionare gli id
public Bounds boundsLocal; // AABB nello spazio locale
public int vertexCount; // Numero di vertici
public int faceCount; // Numero di facce
}
| Campo | Tipo | Descrizione |
|---|---|---|
id | string | Id del nodo, corrispondente a LCCMeshBlock.id |
boundsWorld | Bounds | AABB nello spazio mondo, usato per selezionare gli id |
boundsLocal | Bounds | AABB nello spazio locale |
vertexCount | int | Numero di vertici |
faceCount | int | Numero di facce |
LCCMeshBlock
Dati geometrici dei blocchi Mesh di collisione. Restituiti da Renderer.GetMeshes().
public struct LCCMeshBlock {
public string id; // Id del nodo
public Vector3[] vertices; // Vertici, in coordinate locali
public int[] triangles; // Indici dei triangoli, tre per gruppo
public Bounds boundsLocal; // Box di delimitazione nello stesso spazio dei vertici
}
| Campo | Tipo | Descrizione |
|---|---|---|
id | string | Id del nodo |
vertices | Vector3[] | Array di vertici, nel sistema di coordinate locale dell'oggetto |
triangles | int[] | Indici dei triangoli, tre per gruppo |
boundsLocal | Bounds | Box di delimitazione nello stesso spazio dei vertici |
vertices/boundsLocalsono entrambi nel sistema di coordinate locale dell'oggetto; posizionare il GameObject che porta la Mesh sottoRenderer.Transformli allinea automaticamente. Un singolo blocco può avere più di 65535 vertici, quindi prima di costruire la Mesh bisogna impostaremesh.indexFormat = IndexFormat.UInt32.