XGRIDSDocs
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Seria Lixel PortalCam

    • PortalCam P1

      • Przegląd produktu
      • Podstawowa obsługa
      • Korzystanie z aplikacji LCC Scan
      • Konserwacja i pielęgnacja
      • FAQ
  • Seria Lixel K

    • Lixel K1

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Przebieg skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Fuzja map
      • Zalecenia dotyczące planowania trasy dla typowych scen
      • Środki ostrożności
      • FAQ
    • Lixel K2

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Przebieg skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Fuzja map
      • Zalecenia dotyczące planowania trasy dla typowych scen
      • Środki ostrożności
      • FAQ
  • Seria Lixel L

    • Lixel L2 Pro

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Proces skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Punkt pomiarowy
      • Dodatek
      • FAQ
    • Lixel L3

      • Przegląd produktu
      • Podstawowe funkcje urządzenia
      • Aktywacja i połączenie urządzenia
      • Przechwytywanie danych
      • Przechwytywanie współrzędnych bezwzględnych
      • Dodatek
  • Akcesoria

    • Stick Light

      • Przewodnik instalacji
      • Podstawowa obsługa
      • Często zadawane pytania
  • Lixel Studio

    • Wersja i prawa autorskie
    • Instalacja i aktywacja
    • Interfejs oprogramowania
    • Operacje na plikach
    • Przetwarzanie projektu
    • Narzędzia
    • Rysowanie 2D
    • Zastosowania
    • Ustawienia
    • Połączenie z urządzeniem
  • 07-plugin-sdk

    • Unity

      • Wprowadzenie do Unity SDK
      • Funkcje techniczne
      • Wymagania środowiska deweloperskiego
      • Przewodnik szybkiego startu dla PC
      • Przewodnik optymalizacji ustawień projektu
      • Przewodnik deweloperski dla Pico 4 Ultra
      • Przewodnik strumieniowania PC dla Pico 4 Ultra
      • Przewodnik deweloperski dla Quest 3
      • Przewodnik strumieniowania PC dla Quest 3
      • Przewodnik deweloperski dla OpenXR
      • Przewodnik Business Streaming dla Pico 4 Ultra
      • Słownik
      • Często zadawane pytania (FAQ)
      • Skontaktuj się z nami
      • Przewodnik programowania funkcji

        • Przewodnik mieszanego renderowania wielu scen
        • Przewodnik odbierania cieni
        • Przewodnik oświetlenia w czasie rzeczywistym
        • Przewodnik renderowania wielokamerowego
        • Przewodnik renderowania obrazów wysokiej rozdzielczości
        • Przewodnik zgodności formatów danych LCC i LCC2
        • Przewodnik efektu ładowania
        • Przewodnik przełączania trybu renderowania Mip
        • Przewodnik przyciągania do krawędzi i narożników
        • Przewodnik dekala projekcyjnego
        • Przewodnik wideo dekala projekcyjnego
        • Przewodnik podświetlania
        • Przewodnik przycinania w czasie rzeczywistym
        • Przewodnik korekcji kolorów
        • Przewodnik pobierania danych siatki sceny
        • Przewodnik trybu edytora
        • Przewodnik konfiguracji parametrów wydajności renderowania
        • Przewodnik współpakowania aplikacji i danych
        • Przewodnik systemu kolizji
        • Przewodnik problemów z uprawnieniami w deweloperstwie na macOS
        • Przewodnik kompilacji i pakowania na urządzenia iOS
      • Dokumentacja API

        • LCCManager
        • Renderer
        • Typy danych
      • Dziennik zmian

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14

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
MultiRenderUżywa współdzielonego bufora GPU i może renderować do 255 Rendererów jednocześnie
SingleRenderSDK 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
MipUżywa próbkowania mipmap (domyślnie)
Non_MipWyłą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
AutoDecydowana automatycznie na podstawie ogólnego prostokąta ograniczającego sceny (domyślnie)
NormalOdpowiednia dla małych i średnich scen
LargeOdpowiednia 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
PointCloudRenderowanie chmury punktów
LCCGSRenderowanie 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
normalSuma
eraseOdejmowanie

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
}

screenPos jest 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 nie Vector4; color nie ma składowej alfa. Gdy lightType to 0, jest to światło punktowe (direction / spotAngle są ignorowane), a gdy 1, 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
}
PoleOpis
opacityCutoffTylko 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ą).
depthBiasWzglę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.
footprintMaxPxKonserwatywny 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ę.
resolutionRozdzielczość 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
}
PoleTypOpis
idstringId węzła, odpowiadające LCCMeshBlock.id
boundsWorldBoundsAABB w przestrzeni świata, używany do wyboru id
boundsLocalBoundsAABB w przestrzeni lokalnej
vertexCountintLiczba wierzchołków
faceCountintLiczba ś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
}
PoleTypOpis
idstringId węzła
verticesVector3[]Tablica wierzchołków, w lokalnym układzie współrzędnych obiektu
trianglesint[]Indeksy trójkątów, trzy na grupę
boundsLocalBoundsProstokąt ograniczający w tej samej przestrzeni co wierzchołki

vertices / boundsLocal są oba w lokalnym układzie współrzędnych obiektu; umieszczenie GameObject zawierającego Mesh pod Renderer.Transform wyró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.