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
  • 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

Przewodnik konfiguracji parametrów wydajności renderowania

Przegląd

Aby dostosować się do urządzeń o różnym poziomie wydajności, LCC Unity SDK udostępnia kilka parametrów konfiguracji wydajności renderowania. Są one rozmieszczone na klasie LCCManager i klasie Renderer, obejmując głównie następujące metody:

KlasaMetodaCelMoment wywołania
LCCManagerSetMaxBufferSplatUstaw maksymalną pojemność bufora (alokowaną raz na GPU)Musi być przed dowolnym Renderer.Load()
LCCManagerSetFullRenderSplatUstaw próg liczby Splatów między renderowaniem pełnym/fragmentowymMusi być przed Load()
LCCManagerSetMaxRenderSplatsUstaw całkowitą liczbę Splatów renderowanych na ekranie w renderowaniu fragmentamiW dowolnym momencie podczas renderowania fragmentami
LCCManagerSetStartLodUstaw początkowy poziom LODDziała w czasie działania, po Load()
LCCManagerSetDetailLevelUstaw poziom szczegółowości renderowania (dostrajanie precyzji renderowania)Można dostosowywać dynamicznie w czasie działania
RendererSetRenderAllUstaw, czy wymusić pełne renderowanieMusi być przed Load()

Uwaga:

Spośród powyższych parametrów jednostki metod związanych z liczbą Splatów (SetMaxBufferSplat, SetFullRenderSplat, SetMaxRenderSplats) są wszystkie w dziesiątkach tysięcy, tj. przekazana wartość × 10000 = rzeczywista liczba Splatów.

Uwaga:

SetMaxBufferSplat ustawia maksymalną przestrzeń bufora pamięci CPU i pamięci wideo GPU dostępną do renderowania, natomiast SetMaxRenderSplats ustawia liczbę prymitywów Splat renderowanych na ekranie podczas renderowania strumieniowego fragmentami. Dlatego jeśli wartość ustawiona przez SetMaxRenderSplats przekracza wartość ustawioną przez SetMaxBufferSplat, zostanie przycięta.

Tryby renderowania SDK

Aby dostosować się do różnych danych i platform, SDK ma 3 główne tryby renderowania. Zrozumienie trybów renderowania jest warunkiem prawidłowego ustawiania parametrów wydajności, ponieważ różne parametry działają tylko w określonych trybach.

  • Tryb SingleRender (domyślny): używany głównie na PC/Mac. Ten tryb nie pozwala na tworzenie wielu Rendererów, co oznacza, że naraz można renderować tylko jedną scenę LCC. Gdy ilość danych jest mała i spełnia wymagania, dane będą renderowane w pełni (ładowane są pełne dane LOD0, bez dynamicznego przełączania LOD, najlepsza jakość renderowania); gdy prymitywy Splat LOD0 przekraczają całkowitą ilość, którą można w pełni wyrenderować, dane będą renderowane fragmentami, przy użyciu mechanizmu dynamicznego strumieniowego renderowania LOD w czasie działania do renderowania bardzo dużych scen.
  • Tryb MultiRender: używany głównie na PC/Mac. Ten tryb pozwala na mieszane renderowanie wielu scen LCC w czasie rzeczywistym; wszystkie dane sceny będą renderowane fragmentami przy użyciu mechanizmu dynamicznego LOD.
  • Ścieżka renderowania fragmentami: na platformach Mobile (iOS / Android), VR (Pico 4 / Quest 3) oraz dla źródeł danych HTTP na PC/Mac używana jest ścieżka renderowania fragmentami, wykorzystująca mechanizm dynamicznego LOD.
Relacja między trzema trybami renderowania SDK a ścieżkami renderowania pełnego/fragmentowego

Relacja między trzema trybami renderowania SDK a ścieżkami renderowania pełnego / fragmentowego

Renderowanie pełne a renderowanie fragmentami:

  • Renderowanie pełne: ładuje i renderuje pełne dane LOD0 naraz, najlepsza jakość obrazu, włączane tylko w trybie SingleRender na PC/Mac, gdy ilość danych LOD0 spełnia warunki.
  • Renderowanie fragmentami: dynamicznie ładuje dane poziomu LOD zgodnie z frustum kamery renderującej, kontroluje liczbę Splatów na ekranie i dostosowuje się do środowisk sprzętowych o ograniczonej pamięci wideo i wydajności.

Wartości domyślne SDK

Wartości domyślne, minimalne dozwolone wartości i maksymalne dozwolone wartości dla każdej platformy są następujące (jednostka: dziesiątki tysięcy):

ElementWartość domyślnaMinimalna dozwolona wartośćMaksymalna dozwolona wartośćUwagi
Bufor globalnyPC/Mac: 3000
Mobile: 300
VR: 100
100PC/Mac: 4450
Mobile: 600
VR: 200
Sterowany przez SetMaxBufferSplat()
Próg pełnego renderowania25001004450Sterowany przez SetFullRenderSplat(); działa tylko dla trybu SingleRender na PC/Mac
Liczba renderowanych na ekranie w trybie fragmentowymPC/Mac: 2000
Mobile: 200
VR: 60
10——Sterowana przez SetMaxRenderSplats(); maksymalna wartość jest ograniczona ilością bufora globalnego
Czy wymusić pełneNie————Działa tylko na PC/Mac i tylko dla trybu SingleRender

Strategia konfiguracji PC/Mac

Dla PC/Mac zaleca się konfigurowanie parametrów zgodnie z następującymi poziomami jakości (jednostka liczby Splatów: dziesiątki tysięcy):

PoziomBufor globalnyPróg pełnego renderowaniaLiczba na ekranie w trybie fragmentowymStartLODWymuś pełne
Bardzo niski3003003002Nie
Niski1000100010001Nie
Średni3000190019001Nie
Wysoki3000250025000Nie
Bardzo wysoki3000300030000Nie

Uwagi dotyczące przełączania poziomów w czasie działania

  • Przy przełączaniu między poziomami Średni / Wysoki / Bardzo wysoki możesz pozostawić bufor globalny bez zmian, a logika obsługi jest bardzo prosta: wystarczy ustawić próg pełnego renderowania, liczbę renderowanych na ekranie i StartLOD.
  • Przy przełączaniu między poziomami Bardzo niski / Niski a innymi poziomami sytuacja jest bardziej złożona: ponieważ bufor globalny mógł już zostać zaalokowany, musisz najpierw zniszczyć oryginalny bufor globalny, a następnie utworzyć nowy bufor. Ta operacja wymaga zwolnienia wszystkich Rendererów przez Dispose() i zwolnienia bufora, a następnie ponownego pozyskania Renderera przez GetRender().
  • Aktualne zalecenie: ustaw domyślny poziom na Wysoki; przy przełączaniu poziomów pozostaw bufor globalny bez zmian, ale nadal obsługuj przełączanie renderowania pełnego/fragmentowego.

Uwagi

  1. SetMaxBufferSplat() musi być ustawione na samym początku, najlepiej przed GetRender(). Jeśli ustawisz tę wartość po tym, jak scena już działa, musisz zwolnić wszystkie Rendery przez Dispose(), a następnie ponownie pozyskać Renderer, aby zadziałało.
  2. SetFullRenderSplat() działa tylko dla trybu SingleRender na PC/Mac i musi być ustawione przed Load().
  3. SetMaxRenderSplats() dotyczy całego renderowania fragmentami i można je ustawić w dowolnym momencie, ale musi być późniejsze niż SetMaxBufferSplat() (jeśli ta metoda jest wywoływana).

API wydajności renderowania

SetMaxBufferSplat

// Wartość zwracana: void
public void SetMaxBufferSplat(int _count)

Ustawia maksymalną pojemność bufora GPU (liczbę Splatów). Na ścieżce RenderCore (fragmenty MultiRender / SingleRender) określa rozmiar współdzielonego bufora globalnego; w trybie SingleRender Full Load jest alokowany zgodnie z rzeczywistą ilością danych i nie odwołuje się do tej wartości. Alokowany raz i nie może być modyfikowany dynamicznie.

ParametrTypOpis
_countintRozmiar globalnego zunifikowanego bufora, w liczbie Splatów 3DGS, jednostka: dziesiątki tysięcy

Przykład użycia:

lccManager.SetMaxBufferSplat(3000); // 30 milionów punktów (domyślnie PC/Mac)
lccManager.SetMaxBufferSplat(4450); // 44.5 miliona punktów (maksimum PC/Mac)

Opis:

  • Jednostka to „dziesiątki tysięcy"; przekazana wartość × 10000 = rzeczywista liczba Splatów.
  • Musi być wywołane przed dowolnym Renderer.Load(), w przeciwnym razie zgłasza błąd i zwraca.
  • Najpierw należy wywołać SetPlatformType.
  • Im większa pojemność, tym większe zużycie pamięci wideo; ustaw w razie potrzeby.
  • Limity platform: PC/Mac 44.5 miliona, Android/iOS 6 milionów, VR 2 miliony; minimum 1 milion.
  • Wartości domyślne: PC/Mac 30 milionów, Android/iOS 3 miliony, VR 1 milion.

SetFullRenderSplat

// Wartość zwracana: void
public void SetFullRenderSplat(int _count)

Ustawia próg liczby Splatów między renderowaniem pełnym a renderowaniem fragmentami w trybie SingleRender na PC/Mac. Gdy liczba Splatów LOD0 danych jest mniejsza niż ta wartość, używana jest ścieżka pełnego renderowania (dedykowany bufor GPU); w przeciwnym razie używana jest ścieżka renderowania fragmentami.

ParametrTypOpis
_countintLiczba Splatów 3DGS, jednostka: dziesiątki tysięcy

Przykład użycia:

lccManager.SetFullRenderSplat(2500); // 25 milionów punktów

Opis:

  • Jednostka to „dziesiątki tysięcy".
  • Obsługiwane tylko na platformach PC/Mac; wywołanie na innych platformach zgłasza błąd i zwraca bezpośrednio.
  • Musi być wywołane przed dowolnym Renderer.Load().
  • Najpierw należy wywołać SetPlatformType.
  • Zakres wartości [100, 4450] (tj. 1 milion ~ 44.5 miliona).

SetMaxRenderSplats

// Wartość zwracana: void
public void SetMaxRenderSplats(int _count)

Ustawia maksymalną liczbę Splatów renderowanych na ekranie na klatkę w renderowaniu fragmentami. Można wywołać dynamicznie po Load() i jest przycinane przez górny limit ustawiony przez SetMaxBufferSplat. Wywołanie w trybie pełnego renderowania SingleRender nie ma efektu (rejestruje ostrzeżenie i zwraca bezpośrednio).

ParametrTypOpis
_countintLiczba Splatów 3DGS, jednostka: dziesiątki tysięcy; minimum 100 tysięcy, maksimum nieprzekraczające rozmiaru bufora ustawionego przez SetMaxBufferSplat()

Przykład użycia:

lccManager.SetMaxRenderSplats(2000); // 20 milionów punktów

Opis:

  • Jednostka to „dziesiątki tysięcy"; przekazana wartość × 10000 = rzeczywista liczba Splatów.
  • Można dostosowywać dynamicznie w czasie działania.
  • Nie może przekraczać górnego limitu pojemności ustawionego przez SetMaxBufferSplat (po przekroczeniu jest automatycznie przycinane i rejestruje ostrzeżenie).
  • Dostosowywanie w czasie działania nie jest obsługiwane w trybie pełnego renderowania SingleRender.

SetStartLod

// Wartość zwracana: void
public void SetStartLod(int lod)

Ustawia punkt początkowy rozwijania LOD (indeksowany od 0). 0 oznacza najdrobniejszy; im większa liczba, tym grubszy poziom. Ta metoda działa w czasie działania i musi być wywołana po Load().

ParametrTypOpis
lodintPoczątkowy poziom LOD, zakres [0, 10], 0 jest najdrobniejszy

Przykład użycia:

lccManager.SetStartLod(0);

Opis:

  • Działa tylko dla renderowania fragmentami, zakres [0, 10], automatycznie przycinane po przekroczeniu.
  • Rzeczywisty efektywny górny limit jest ograniczony przez totalLevels danych.
  • SDK działa natychmiast po wywołaniu.

SetDetailLevel

// Wartość zwracana: void
public void SetDetailLevel(float sse)

Ustawia poziom szczegółowości renderowania, używany do dostrajania precyzji renderowania. Im większa wartość, tym drobniejsze renderowanie i wyższy koszt wydajności.

ParametrTypOpis
ssefloatWspółczynnik podziału, zakres [1, 100]. 1 = najgrubszy (brak doprecyzowania nawet z bliska), 100 = najdrobniejszy (wszystkie poziomy doprecyzowane do najniższego)

Przykład użycia:

lccManager.SetDetailLevel(50f); // Średnia precyzja

Opis:

  • Ten parametr służy do dostrajania szczegółowości sceny, dotyczy tylko renderowania fragmentami, domyślnie 40, zakres [1, 100], automatycznie przycinany po przekroczeniu.
  • Używa mapowania logarytmicznego: zakres niskich wartości jest wrażliwy na zmiany, a zakres wysokich wartości zmienia się łagodnie.
  • Można dostosowywać dynamicznie w czasie działania.

SetRenderAll

// Wartość zwracana: void
public void SetRenderAll(bool _renderAll)

Metoda klasy Renderer. Ustawia, czy ten Renderer wymusza pełne renderowanie, i musi być wywołana przed Load(). Używana tylko dla trybu SingleRender na PC/Mac: w momencie wykonania porównuje ilość danych LOD0 z górnym limitem 44.5 miliona; jeśli LOD0 < 44.5 miliona, dane pełne LOD0 są używane bezpośrednio do renderowania; jeśli LOD0 > 44.5 miliona, to ustawienie jest nieskuteczne (ograniczone maksymalnym GBufferem Unity) i zamiast tego używane jest renderowanie fragmentami.

ParametrTypOpis
_renderAllboolCzy wymusić pełne renderowanie

Przykład użycia:

renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Pełne załadowane"));

Opis:

  • Obsługiwane tylko na platformach PC/Mac; wywołanie na mobilnych / VR rejestruje ostrzeżenie i zwraca.
  • Ustawienie działa przy następnym wywołaniu Load() i nie wpływa na aktualnie załadowany zestaw danych.
  • Może być używane razem z właściwością IsRenderAll do zapytania o bieżący stan.