Typy danych: typy wyliczeniowe i struktury
Typy wyliczeniowe i struktury udostępniane przez LCC Unity SDK, używane przez metody LCCManager i Renderer.
Typy wyliczeniowe
PlatformType
Docelowa platforma środowiska uruchomieniowego. Używana przez SetPlatformType().
public enum PlatformType { PC, Mac, Android, iOS, Pico, Quest, AVP, PicoSwan, OpenXR, PCVR }
ActiveRenderMode
Globalny tryb architektury renderowania. Używany przez SwitchRenderPass().
public enum ActiveRenderMode { MultiRender, SingleRender }
| Wartość | Opis |
|---|---|
MultiRender | Używa współdzielonego bufora GPU i może renderować do 255 Rendererów jednocześnie |
SingleRender | SDK automatycznie wybiera ścieżkę renderowania na podstawie rozmiaru danych |
Dotyczy tylko platform PC / Mac; platformy mobilne / VR automatycznie przyjmują strategię adaptacyjną, a wywołanie
SwitchRenderPass()jest odrzucane.
SourceType
Typ źródła danych. Zwracany przez Renderer.GetSourceType().
public enum SourceType { LCC, PLY, SPLAT, TYY, None, SOG, SPZ, KSPLAT }
DataType
Typ formatu danych. Zwracany przez Renderer.GetDataType().
public enum DataType { L1, L2, L2Pro, K1, K2, Drone, Drone_L2, PortalCam, None }
MipMode
Tryb renderowania Mip. Używany przez SetMipMode().
public enum MipMode { Mip, Non_Mip }
| Wartość | Opis |
|---|---|
Mip | Używa próbkowania mipmap (domyślnie) |
Non_Mip | Wyłącza mipmapę, z drobniejszymi szczegółami renderowania, ale wyższym narzutem wydajności |
SnapType
Typ przyciągania. Używany przez HitResult.snapType i SnapPreviewState.snapType.
public enum SnapType { None, Edge, Corner }
SelectionMode
Strategia wyboru węzłów. Używana przez SetSelectionMode().
public enum SelectionMode { Auto, Normal, Large }
| Wartość | Opis |
|---|---|
Auto | Decydowana automatycznie na podstawie ogólnego prostokąta ograniczającego sceny (domyślnie) |
Normal | Odpowiednia dla małych i średnich scen |
Large | Odpowiednia dla bardzo dużych scen (ponad 1000 metrów) |
RenderMode
Tryb renderowania chmury punktów / 3DGS. Używany przez SwitchRenderMode().
public enum RenderMode { PointCloud, LCCGS }
| Wartość | Opis |
|---|---|
PointCloud | Renderowanie chmury punktów |
LCCGS | Renderowanie 3DGS |
SelectMode
Tryb włączania/wyłączania zaznaczenia. Używany przez dane zaznaczenia, takie jak Data2D i Data3D.
public enum SelectMode { normal, invert, clip }
OperationMode
Tryb operacji boolowskiej wielu geometrii. Używany przez dane zaznaczenia, takie jak Data3D i DataMix.
public enum OperationMode { normal = 0, erase = 1 }
| Wartość | Opis |
|---|---|
normal | Suma |
erase | Odejmowanie |
EditType
Typ wpisu w zaznaczeniu mieszanym. Używany przez DataMix i ToneMix.
public enum EditType { Edit2D, Edit3D }
ShapeType
Typ geometrii przycinania / podświetlania 3D. Używany przez Data3D, DataMix i ToneMix.
public enum ShapeType { box, sphere }
Struktury
HitResult
Wynik trafienia raycastu. Zwracany przez Raycast(), RaycastMesh() i RaycastWithSnap().
public struct HitResult {
public bool isHit; // Czy wystąpiło trafienie
public float distance; // Odległość
public Vector3 hitPos; // Punkt trafienia we współrzędnych świata
public Vector3 normal; // Normalna trafienia
public float hitAlpha; // Alfa trafionej elipsoidy
public float dist2Origin; // Odległość do początku promienia
public float scale; // Skala elipsoidy
public SnapType snapType; // Typ przyciągania (Brak / Krawędź / Narożnik)
public Vector3 originalHitPos; // Pierwotny punkt trafienia przed przyciągnięciem
}
Pole współrzędnych świata punktu trafienia nazywa się
hitPos.
SnapPreviewState
Stan podglądu przyciągania. Zwracany przez GetSnapPreviewState().
public struct SnapPreviewState {
public bool hasTarget; // Czy istnieje cel przyciągania
public SnapType snapType; // Brak / Krawędź / Narożnik
public Vector2 screenPos; // Współrzędne ekranowe celu przyciągania
public float distanceToMouse; // Odległość w pikselach do pozycji myszy
}
screenPosjest we współrzędnych ekranu (piksele), a nie współrzędnych świata. Gdy potrzebne są współrzędne świata, użyj RaycastWithSnap(), aby uzyskaćHitResult.hitPos.
Data2D
Zaznaczenie rzutowaniem tekstury 2D. Używane do przycinania / podświetlania teksturą 2D.
public struct Data2D {
public Texture2D texture; // Tekstura maski R8 1024x1024
public Matrix4x4 mv; // Macierz ModelView
public Matrix4x4 mvp; // Macierz ModelViewProjection
public SelectMode mode; // normal / invert
}
Data3D
Zaznaczenie geometrią 3D. Używane do przycinania / podświetlania geometrią 3D.
public struct Data3D {
public ShapeType type; // box / sphere
public Matrix4x4 invMat; // Macierz transformacji odwrotnej geometrii
public OperationMode operation; // normal=suma, erase=odejmowanie
public SelectMode mode; // normal / invert / clip
}
DataMix
Zaznaczenie mieszane 2D + 3D. Używane do przycinania / podświetlania w trybie mieszanym.
public struct DataMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // Typ geometrii 3D
public Matrix4x4 invMat; // Macierz transformacji odwrotnej 3D
public Texture2D texture; // Tekstura maski 2D
public Matrix4x4 mv; // ModelView 2D
public Matrix4x4 mvp; // MVP 2D
public OperationMode operation;
public SelectMode mode;
}
ToneMix
Zaznaczenie tonów, które dodaje parametry tonów na wierzch DataMix. Używane przez SetTone().
public struct ToneMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // Typ geometrii 3D
public Matrix4x4 invMat; // Macierz transformacji odwrotnej 3D
public Texture2D texture; // Tekstura maski 2D
public Matrix4x4 mv; // ModelView 2D
public Matrix4x4 mvp; // MVP 2D
public OperationMode operation;
public SelectMode mode;
public float brightness; // Jasność (domyślnie 1.0)
public float saturation; // Nasycenie (domyślnie 1.0)
public float contrast; // Kontrast (domyślnie 1.0)
public int lutid; // Indeks filtra LUT (0 = nieużywany)
}
PointLightData
Dane niestandardowego światła punktowego / reflektora. Używane przez SetLights().
public struct PointLightData {
public float3 position; // Współrzędne świata
public int lightType; // 0=światło punktowe, 1=reflektor
public float3 color; // Kolor RGB (bez składowej alfa)
public float intensity; // Natężenie światła
public float3 direction; // Kierunek reflektora (ignorowany dla światła punktowego)
public float range; // Zasięg światła
public float spotAngle; // Kąt stożka reflektora (stopnie, ignorowany dla światła punktowego)
public float3 pad; // Wypełnienie wyrównania, brak potrzeby przypisania
}
Typ pola to
Unity.Mathematics.float3, a nieVector4;colornie ma składowej alfa. GdylightTypeto0, jest to światło punktowe (direction/spotAnglesą ignorowane), a gdy1, jest to reflektor.
DecalOcclusionSettings
Parametry jakości odcinania okluzji dekala. Używane przez SetDecalOcclusionSettings().
public struct DecalOcclusionSettings {
public float opacityCutoff; // Minimalna nieprzezroczystość w [0,1], aby splat uczestniczył w mapie głębi, domyślnie 0 (wszystkie uczestniczą)
public float depthBias; // Względny współczynnik tolerancji głębi, domyślnie 0.05
public int footprintMaxPx; // Maksymalny promień kwadratowego śladu (px), 0~16, domyślnie 2
public int resolution; // Rozdzielczość mapy głębi (px, potęga dwójki, 256~4096), domyślnie 1024
public static DecalOcclusionSettings Default { get; } // cutoff=0, bias=0.05, footprint=2, resolution=1024
}
| Pole | Opis |
|---|---|
opacityCutoff | Tylko splaty o nieprzezroczystości ≥ tej wartości uczestniczą w mapie głębi, co może odfiltrować unoszące się / mgliste splaty. Domyślnie 0 (wszystkie uczestniczą). |
depthBias | Względny współczynnik tolerancji głębi absorbujący grubość powierzchni chmury punktów proporcjonalnie do odległości. Domyślnie 0.05. Zbyt mały powoduje szum samo-okluzji; zbyt duży pomija okluzje. |
footprintMaxPx | Konserwatywny maksymalny promień kwadratowego śladu (w pikselach), używany do pokrycia sąsiedztwa i uniknięcia przecieków penetracji. 0 to pojedynczy teksel, zakres 0~16, domyślnie 2. Zbyt duży powoduje rozszerzenie konturu i nadmierną okluzję. |
resolution | Rozdzielczość mapy głębi (piksele, potęga dwójki, 256~4096). Zmniejszanie jej wypełnia rzadkie dziury kosztem nieco bardziej szorstkich granic okluzji. Domyślnie 1024. |
SplatMeta
Metadane danych 3DGS. Wyprowadzane przez Renderer.GetMeta(), zawierające metadane takie jak źródło danych (source) i format danych (dataType), i mogą być odczytane bez pełnego ładowania danych.
LCCMeshBlockInfo
Metadane bloku siatki kolizji. Zwracane przez Renderer.GetMeshBlockInfos().
public struct LCCMeshBlockInfo {
public string id; // Id węzła, odpowiadające LCCMeshBlock.id
public Bounds boundsWorld; // AABB w przestrzeni świata, używany do wyboru id
public Bounds boundsLocal; // AABB w przestrzeni lokalnej
public int vertexCount; // Liczba wierzchołków
public int faceCount; // Liczba ścian
}
| Pole | Typ | Opis |
|---|---|---|
id | string | Id węzła, odpowiadające LCCMeshBlock.id |
boundsWorld | Bounds | AABB w przestrzeni świata, używany do wyboru id |
boundsLocal | Bounds | AABB w przestrzeni lokalnej |
vertexCount | int | Liczba wierzchołków |
faceCount | int | Liczba ścian |
LCCMeshBlock
Dane geometrii bloku siatki kolizji. Zwracane przez Renderer.GetMeshes().
public struct LCCMeshBlock {
public string id; // Id węzła
public Vector3[] vertices; // Wierzchołki, w lokalnych współrzędnych
public int[] triangles; // Indeksy trójkątów, trzy na grupę
public Bounds boundsLocal; // Prostokąt ograniczający w tej samej przestrzeni co wierzchołki
}
| Pole | Typ | Opis |
|---|---|---|
id | string | Id węzła |
vertices | Vector3[] | Tablica wierzchołków, w lokalnym układzie współrzędnych obiektu |
triangles | int[] | Indeksy trójkątów, trzy na grupę |
boundsLocal | Bounds | Prostokąt ograniczający w tej samej przestrzeni co wierzchołki |
vertices/boundsLocalsą oba w lokalnym układzie współrzędnych obiektu; umieszczenie GameObject zawierającego Mesh podRenderer.Transformwyrównuje je automatycznie. Pojedynczy blok może mieć ponad 65535 wierzchołków, więc przed zbudowaniem Mesh należy ustawićmesh.indexFormat = IndexFormat.UInt32.