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

LCCManager: menedżer główny

Główny menedżer LCC Unity SDK, odpowiedzialny za zarządzanie wszystkimi instancjami Renderer, kamerami, globalnym stanem renderowania, a także operacjami edycji (przycinanie / podświetlanie / korekcja tonów), rzutowaniem dekala, przyciąganiem i zapytaniami interakcji (raycast / kolizja). W całej scenie powinna istnieć tylko jedna instancja LCCManager.

Przestrzeń nazwLCCCore
Klasa bazowaMonoBehaviour

LCCManager nie ma publicznych właściwości; cała funkcjonalność jest dostępna przez metody. Metody są pogrupowane według celu:

  • Inicjalizacja i konfiguracja
  • Sterowanie renderowaniem w czasie działania
  • Oświetlenie i cienie
  • Zarządzanie kamerami
  • Przycinanie / Podświetlanie / Korekcja tonów
  • Rzutowanie dekala
  • Przyciąganie
  • Raycasting i zapytania kolizji
  • Efekty wizualne
  • Zapytania o instancje

Inicjalizacja i konfiguracja

Poniższe metody służą do ukończenia wstępnej konfiguracji platformy, trybu renderowania, pojemności itd. przed załadowaniem danych. Większość metod musi być wywołana przed dowolnym Renderer.Load().

SetPlatformType

public void SetPlatformType(PlatformType _type)

Ustawia docelową platformę środowiska uruchomieniowego SDK, co wpływa na wewnętrzną strategię renderowania i alokację zasobów.

ParametrTypOpis
_typePlatformTypePlatforma docelowa; zobacz PlatformType

Uwagi:

  • Musi być wykonane przed dowolnym wywołaniem GetRender().

Przykład:

lccManager.SetPlatformType(PlatformType.PC);

SwitchRenderPass

public void SwitchRenderPass(ActiveRenderMode _mode)

Ustawia globalny tryb architektury renderowania. MultiRender używa współdzielonego bufora GPU i może renderować do 255 Rendererów jednocześnie; SingleRender pozwala SDK automatycznie wybrać ścieżkę renderowania na podstawie rozmiaru danych.

ParametrTypOpis
_modeActiveRenderModeTryb renderowania; zobacz ActiveRenderMode

Uwagi:

  • Musi być wywołane przed dowolnym Renderer.Load().
  • Działa tylko na platformach PC / Mac; platformy mobilne / VR automatycznie przyjmują strategię adaptacyjną, a wywołanie tej metody jest odrzucane.
  • Tryb MultiRender nie obsługuje źródeł danych HTTP; dla danych HTTP użyj SingleRender.
  • Gdy dowolny Renderer ukończy Load(), tryb jest zablokowany i nie można go ponownie przełączyć.

Przykład:

lccManager.SwitchRenderPass(ActiveRenderMode.MultiRender);

GetRender (Przeciążenie 1: powiąż Transform)

// Wartość zwracana: Renderer, null przy niepowodzeniu
public Renderer GetRender(Transform _transform)

Tworzy nową instancję renderowania i wiąże ją z określonym Transform. Po utworzeniu należy wywołać Renderer.Load(), aby załadować dane.

ParametrTypOpis
_transformTransformTransform, do którego dołączona jest instancja renderowania

Uwagi:

  • Najpierw należy wywołać SetPlatformType() i SetMainCamera().
  • W trybie MultiRender obsługiwanych jest do 255 Rendererów.

Przykład:

var go = new GameObject("LCCScene");
var renderer = lccManager.GetRender(go.transform);
renderer.Load(filePath, null, () => Debug.Log("Załadowane"));

GetRender (Przeciążenie 2: utwórz GameObject automatycznie)

// Wartość zwracana: Renderer, null przy niepowodzeniu
public Renderer GetRender(out GameObject gameObject)

Automatycznie tworzy GameObject o nazwie LCCRenderer i wiąże instancję renderowania z jego Transform.

ParametrTypOpis
gameObjectout GameObjectZwraca automatycznie utworzony GameObject, null przy niepowodzeniu

Przykład:

var renderer = lccManager.GetRender(out GameObject go);
renderer.Load(filePath, null, () => Debug.Log("Załadowane"));

SetMaxBufferSplat

public void SetMaxBufferSplat(int _count)

Ustawia maksymalną pojemność bufora GPU (liczbę Splatów). Alokowany raz i nie może być zmieniany dynamicznie.

ParametrTypOpis
_countintMaksymalna liczba Splatów, jednostka: dziesięć tysięcy (wartość × 10000 = rzeczywista liczba)

Uwagi:

  • Musi być wywołane przed dowolnym Renderer.Load() i najpierw należy wywołać SetPlatformType().
  • Większa pojemność oznacza wyższe zużycie pamięci wideo; ustaw ją w razie potrzeby.
  • Limity platform: PC / Mac / PCVR 45 milionów, Android / iOS 6 milionów, VR (Pico / Quest / PicoSwan / AVP / OpenXR) 2 miliony.
  • Domyślnie: PC / Mac 30 milionów, Android / iOS 3 miliony, VR 1 milion.

Przykład:

lccManager.SetMaxBufferSplat(3000); // 30 milionów punktów

SetFullRenderSplat

public void SetFullRenderSplat(int _count)

Ustawia górny próg pełnego renderowania na PC / Mac. Gdy rozmiar danych jest poniżej tej wartości, używana jest ścieżka pełnego renderowania; w przeciwnym razie używana jest ścieżka renderowania fragmentami.

ParametrTypOpis
_countintGórny limit pełnego renderowania, jednostka: dziesięć tysięcy, zakres [100, 4500]

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac / PCVR.
  • Musi być wywołane przed dowolnym Renderer.Load() i najpierw należy wywołać SetPlatformType().

Przykład:

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

SetMaxRenderSplats

public void SetMaxRenderSplats(int _count)

Ustawia maksymalną liczbę Splatów renderowanych na klatkę w czasie działania. Można wywołać dynamicznie po Load().

ParametrTypOpis
_countintMaksymalna liczba Splatów renderowanych w czasie działania, jednostka: dziesięć tysięcy

Uwagi:

  • Można dostosowywać dynamicznie w czasie działania.
  • Nie może przekraczać pojemności ustawionej przez SetMaxBufferSplat(); po przekroczeniu jest automatycznie przycinane.
  • Brak efektu w trybie pełnego renderowania.

Przykład:

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

GetLoadRatio

// Wartość zwracana: float, [0,1] bieżący postęp ładowania danych
public float GetLoadRatio()

Zapytuje postęp ładowania bieżących danych sceny.

Uwagi:

  • Zawsze zwraca 1.0 w trybie pełnego renderowania.
  • W trybie renderowania fragmentami zwraca stosunek załadowanych węzłów w bieżącym widoku; wartość zmienia się w czasie rzeczywistym wraz z ruchem kamery i nie jest monotonicznie rosnącym ogólnym postępem.

Przykład:

float ratio = lccManager.GetLoadRatio();
progressBar.value = ratio;

SetSelectionMode

public void SetSelectionMode(SelectionMode mode)

Ustawia strategię wyboru węzłów.

ParametrTypOpis
modeSelectionModeStrategia wyboru; zobacz SelectionMode

Uwagi:

  • Auto (domyślnie): decydowane automatycznie na podstawie ogólnego prostokąta ograniczającego sceny; gdy maksymalny wymiar sceny przekracza około 380 metrów, automatycznie uaktualnia się do Large.
  • Normal: odpowiednie dla małych i średnich scen.
  • Large: odpowiednie dla bardzo dużych scen (ponad 1000 metrów).
  • Działa natychmiast po przełączeniu.

Przykład:

lccManager.SetSelectionMode(SelectionMode.Auto);

Sterowanie renderowaniem w czasie działania

Poniższe metody można wywoływać dynamicznie w czasie działania, aby dostosować precyzję renderowania, efekty wyświetlania i przełączniki renderowania.

SetDetailLevel

public void SetDetailLevel(float sse)

Ustawia poziom precyzji renderowania. Większa wartość oznacza drobniejsze renderowanie i wyższe zużycie wydajności.

ParametrTypOpis
ssefloatPoziom precyzji, zakres [1, 100], automatycznie przycinany po przekroczeniu

Uwagi:

  • Używa mapowania logarytmicznego: zmiany są wrażliwe w zakresie niskich wartości i płynne w zakresie wysokich wartości.
  • Można dostosowywać dynamicznie w czasie działania.
  • Działa tylko w trybie wyboru Normal.

Przykład:

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

SetStartLod

public void SetStartLod(int lod)

Ustawia punkt początkowy rozwijania LOD (indeksowany od 0). 0 jest najdrobniejszy, a większa liczba oznacza grubszy poziom.

ParametrTypOpis
lodintPoczątkowy poziom LOD, zakres [0, 10], automatycznie przycinany po przekroczeniu

Uwagi:

  • Rzeczywisty efektywny górny limit jest ograniczony całkowitą liczbą poziomów danych.

Przykład:

lccManager.SetStartLod(0);

SetAutoFov

public void SetAutoFov(bool _auto)

Ustawia, czy automatycznie zarządzać FOV renderowania. Gdy włączone (domyślnie), SDK blokuje bazową ogniskową pikselową przy pierwszej klatce, a następnie co klatkę odwraca pionowy FOV z bieżącej wysokości widoku i zapisuje go z powrotem do Camera.fieldOfView; gdy wyłączone, fieldOfView jest kontrolowane zewnętrznie (SetFOV() lub bezpośrednia zmiana kamery).

ParametrTypOpis
_autoboolCzy używać automatycznego FOV

Uwagi:

  • Domyślnie włączone.
  • Gdy włączone, stale przepisuje Camera.fieldOfView głównej kamery, więc wywołanie SetFOV() jest ignorowane.
  • Gdy wyłączone, należy ręcznie wywołać SetFOV() w celu ustawienia parametrów.

Przykład:

lccManager.SetAutoFov(true);

SetFOV

public void SetFOV(int _width, int _height, float _verticalFov, float _aspect)

Ręcznie ustawia pionowy FOV (w stopniach). Bezpośrednio przepisuje Camera.fieldOfView głównej kamery, tak aby FOV w Inspektorze odpowiadało FOV faktycznie używanemu do renderowania. _width / _height / _aspect to parametry podpisu starszego typu; rzeczywista projekcja używa własnego widoku głównej kamery (użyj SetRecordMode() dla wyjścia pozaekranowego o innym rozmiarze / FOV).

ParametrTypOpis
_widthintSzerokość w pikselach
_heightintWysokość w pikselach
_verticalFovfloatPionowy FOV (stopnie)
_aspectfloatWspółczynnik proporcji

Uwagi:

  • Najpierw należy wywołać SetAutoFov(false), w przeciwnym razie per-klatkowa inwersja auto-FOV nadpisuje wartość ręczną.
  • Pionowy FOV jest przycinany do [1, 179] stopni.
  • Wywołanie na platformach VR / PCVR, podczas nagrywania lub przy kamerze ortograficznej jest odrzucane (ostrzega i zwraca).

Przykład:

lccManager.SetFOV(1920, 1080, 60f, 1.778f);

SetRenderEnable

public void SetRenderEnable(Renderer _renderer, bool _isEnable)

Steruje przełącznikiem renderowania określonego Renderera w czasie działania. Gdy wyłączony, nie uczestniczy w przechodzeniu i rysowaniu.

ParametrTypOpis
_rendererRendererDocelowa instancja renderowania
_isEnableboolCzy włączyć renderowanie

Przykład:

lccManager.SetRenderEnable(renderer, false); // Ukryj

SetEnvironment

public void SetEnvironment(Renderer _renderer, bool _isRender)

Steruje renderowaniem danych środowiskowych określonego Renderera. Dane środowiskowe to niskoprecyzyjna chmura punktów tła używana do wypełniania odległych widoków.

ParametrTypOpis
_rendererRendererDocelowa instancja renderowania
_isRenderboolCzy renderować dane środowiskowe

Uwagi:

  • Dane muszą zawierać węzły środowiskowe.

Przykład:

lccManager.SetEnvironment(renderer, true);

SetZDepth

public void SetZDepth(bool zwrite)

Przełącza zapis głębi Z i odpowiednio dostosowuje kolejkę renderowania.

ParametrTypOpis
zwriteboolCzy włączyć zapis głębi Z

Przykład:

lccManager.SetZDepth(true);

SetAlpha

public void SetAlpha(float alpha)

Ustawia globalną nieprzezroczystość.

ParametrTypOpis
alphafloatGlobalna nieprzezroczystość, zakres [0, 1], automatycznie przycinana po przekroczeniu

Przykład:

lccManager.SetAlpha(0.8f);

SetLightIntensity

public void SetLightIntensity(float intensity)

Ustawia globalne natężenie światła.

ParametrTypOpis
intensityfloatNatężenie światła, zakres [0, 1], automatycznie przycinane po przekroczeniu

Przykład:

lccManager.SetLightIntensity(0.7f);

SetLowPassFilter

public void SetLowPassFilter(float _filter)

Ustawia siłę globalnego filtra dolnoprzepustowego, używanego do tłumienia aliasingu / szumu wysokoczęstotliwościowego.

ParametrTypOpis
_filterfloatSiła filtra dolnoprzepustowego, zakres [0, 1], automatycznie przycinana po przekroczeniu

Przykład:

lccManager.SetLowPassFilter(0.3f);

SetLockFPS

public void SetLockFPS(bool _isLock)

Przełącza blokowanie liczby klatek (statyczne / dynamiczne przełączanie liczby klatek).

ParametrTypOpis
_isLockboolCzy zablokować liczbę klatek

Przykład:

lccManager.SetLockFPS(true);

SetRenderLayer

public void SetRenderLayer(int _layer)

Ustawia warstwę Unity używaną przez renderowanie LCC, do kontroli widoczności CullingMask kamery.

ParametrTypOpis
_layerintWarstwa renderowania Unity, zakres [0, 31]

Uwagi:

  • Można dostosowywać dynamicznie w czasie działania.

Przykład:

lccManager.SetRenderLayer(8); // Użyj warstwy 8

SetForceRefresh

public void SetForceRefresh()

Wymusza odświeżenie renderowania. Czyści wewnętrzną pamięć podręczną informacji o kamerze, aby frustum, LOD i inne parametry zostały ponownie obliczone w następnej klatce. Odpowiednie dla przypadków, w których zewnętrznie zmienione parametry kamery muszą zadziałać natychmiast.

Przykład:

lccManager.SetForceRefresh();

SetMipMode

public void SetMipMode(MipMode _mipMode)

Przełącza tryb renderowania Mip. Tryb Mip używa próbkowania mipmap (domyślnie), a tryb Non_Mip wyłącza mipmapę.

ParametrTypOpis
_mipModeMipModeTryb docelowy; zobacz MipMode

Uwagi:

  • Zwraca natychmiast, jeśli bieżący tryb jest taki sam jak przekazany.
  • Działa natychmiast po przełączeniu.

Przykład:

lccManager.SetMipMode(MipMode.Non_Mip);

SetGraphicsAPI

public void SetGraphicsAPI(GraphicsDeviceType type)

Ustawia typ API graficznego. HDR jest włączone w trybie DX11.

ParametrTypOpis
typeGraphicsDeviceTypeTyp API graficznego (wbudowany typ wyliczeniowy Unity)

Przykład:

lccManager.SetGraphicsAPI(GraphicsDeviceType.Direct3D11);

SetDebugMode

public void SetDebugMode(bool debug)

Przełącza tryb debugowania.

ParametrTypOpis
debugboolCzy włączyć tryb debugowania

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac.

Przykład:

lccManager.SetDebugMode(true);

SetEditorMode

public void SetEditorMode(bool _isEditor)

Przełącza tryb edytora.

ParametrTypOpis
_isEditorboolCzy włączyć tryb edytora

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac.

Przykład:

lccManager.SetEditorMode(true);

SetAECMode

public void SetAECMode(bool _aec)

Przełącza tryb AEC (Architecture / Engineering / Construction).

ParametrTypOpis
_aecboolCzy włączyć tryb AEC

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac.

Przykład:

lccManager.SetAECMode(true);

SetSemantic

// Wartość zwracana: bool, false=nieprawidłowy parametr
public bool SetSemantic(bool enable, Vector4[] color = null)

Przełącza tryb renderowania semantycznego. Po włączeniu można przekazać tablicę kolorów definiującą kolor wyświetlania każdej kategorii semantycznej.

ParametrTypOpis
enableboolCzy włączyć renderowanie semantyczne
colorVector4[]Tablica kolorów semantycznych, długość musi wynosić 100, w przeciwnym razie zwracane jest false; przekaż null, aby użyć kolorów domyślnych

Przykład:

Vector4[] colors = new Vector4[100];
colors[0] = new Vector4(1, 0, 0, 1); // Kategoria 0 = czerwony
lccManager.SetSemantic(true, colors);

SwitchRenderMode

public void SwitchRenderMode(RenderMode mode, Texture2D tex = null)

Przełącza między renderowaniem chmury punktów a renderowaniem 3DGS. W trybie chmury punktów można dostarczyć teksturę rampy kolorów wysokości.

ParametrTypOpis
modeRenderModeTryb renderowania; zobacz RenderMode
texTexture2DTekstura rampy kolorów wysokości (opcjonalna)

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac.

Przykład:

lccManager.SwitchRenderMode(RenderMode.PointCloud, elevationTex);

SetRecordMode

public void SetRecordMode(bool isRecord, Vector2 renderSize, float verticalFov)

Ustawia tryb nagrywania. W trybie nagrywania używana jest stała rozdzielczość i FOV, odpowiednie do nagrywania wideo HD.

ParametrTypOpis
isRecordboolCzy używać trybu nagrywania
renderSizeVector2Rozdzielczość nagrywania
verticalFovfloatPionowy FOV (stopnie)

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac.
  • W trybie nagrywania ogniskowa kamery jest stała i nie zmienia się wraz z komponentem Camera.
  • Po nagrywaniu wywołaj SetRecordMode(false, ...), aby przywrócić.

Przykład:

lccManager.SetRecordMode(true, new Vector2(3840, 2160), 60f);

SetVRPerformance

public void SetVRPerformance(bool _enabled)

Ustawia tryb sortowania wysokowydajnego VR. true używa sortowania radix GPU (GpuSorter), a false przełącza z powrotem na CPU / BitonicSorter.

ParametrTypOpis
_enabledboolCzy włączyć wysokowydajne sortowanie GPU

Uwagi:

  • Dotyczy tylko ścieżki sortowania gogli VR (Pico / Quest / PicoSwan / OpenXR); domyślnie włączone.
  • Gdy nie ma urządzenia obliczeniowego (takiego jak Mali), nadrzędny element sortowania automatycznie przełącza z powrotem na CPU, niezależnie od tego przełącznika.

Przykład:

lccManager.SetVRPerformance(true);

Oświetlenie i cienie

Poniższe metody sterują odbieraniem cieni i niestandardowymi światłami punktowymi na powierzchniach 3DGS. Metody związane z cieniami muszą być wywołane po zakończeniu ładowania sceny LCC.

SetShadowReceive

public void SetShadowReceive(bool enable)

Przełącza odbieranie cieni przez chmurę punktów. Po włączeniu cienie z obiektów siatki w scenie mogą być rzucane na powierzchnie chmury punktów 3DGS.

ParametrTypOpis
enableboolCzy odbierać cienie

Uwagi:

  • Domyślnie wyłączone.
  • Wymaga obiektów siatki rzucających cienie i Światła kierunkowego w scenie.

Przykład:

lccManager.SetShadowReceive(true);

SetShadowColor

public void SetShadowColor(Color color)

Ustawia kolor obszaru cienia.

ParametrTypOpis
colorColorKolor cienia (RGBA)

Uwagi:

  • Domyślnie (0.3, 0.3, 0.3, 1).
  • Najpierw należy włączyć SetShadowReceive(true).

Przykład:

lccManager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));

SetShadowStrength

public void SetShadowStrength(float strength)

Ustawia siłę cienia. 0 to brak cienia, 1 to najsilniejszy cień.

ParametrTypOpis
strengthfloatSiła cienia, zakres [0, 1], automatycznie przycinana po przekroczeniu

Uwagi:

  • Domyślnie 1.0.
  • Najpierw należy włączyć SetShadowReceive(true).

Przykład:

lccManager.SetShadowStrength(0.8f);

SetLights

// Wartość zwracana: int, 0=sukces, -1=przekroczono limit maksymalnej liczby
public int SetLights(List<PointLightData> lights)

Ustawia niestandardową listę świateł punktowych. Przekazanie null lub pustej listy wyłącza niestandardowe oświetlenie.

ParametrTypOpis
lightsList<PointLightData>Lista świateł punktowych; zobacz PointLightData

Uwagi:

  • PointLightData.lightType: 0 to światło punktowe (direction / spotAngle ignorowane), 1 to reflektor (direction / spotAngle wymagane).
  • Przekazanie null lub pustej listy wyłącza niestandardowe oświetlenie.

Przykład:

using Unity.Mathematics; // float3

var lights = new List<PointLightData>();
lights.Add(new PointLightData {
    position = new float3(0, 5, 0),
    lightType = 0,              // 0=światło punktowe, 1=reflektor
    color = new float3(1, 1, 1),
    intensity = 2f,
    range = 10f
});
lccManager.SetLights(lights);

Zarządzanie kamerami

SetMainCamera

public void SetMainCamera(Camera _cam)

Ustawia główną kamerę renderującą. LCC używa tej kamery do odrzucania frustum, wyboru LOD, sortowania i innych operacji.

ParametrTypOpis
_camCameraGłówna kamera renderująca; przekaż null, aby wyczyścić

Uwagi:

  • Musi być ustawiona przed Renderer.Load().
  • Obsługiwane tylko na platformach PC / Mac.

Przykład:

lccManager.SetMainCamera(Camera.main);

AddCamera

public void AddCamera(Camera _cam)

Dodaje kamerę pomocniczą. Kamera pomocnicza uczestniczy w renderowaniu, ale nie wpływa na wybór LOD.

ParametrTypOpis
_camCameraKamera pomocnicza

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac.
  • Kamera główna nie może być dodana jako kamera pomocnicza.

Przykład:

lccManager.AddCamera(secondCamera);

RemoveCamera

public void RemoveCamera(Camera _cam)

Usuwa dodaną kamerę pomocniczą.

ParametrTypOpis
_camCameraKamera pomocnicza do usunięcia

Uwagi:

  • Obsługiwane tylko na platformach PC / Mac.

Przykład:

lccManager.RemoveCamera(secondCamera);

Przycinanie / Podświetlanie / Korekcja tonów

Przycinanie, podświetlanie i korekcja tonów to trzy rodzaje operacji edycji, z których wszystkie obsługują definiowanie dotkniętego regionu przez teksturę 2D, geometrię 3D lub mieszankę obu. Zobacz Data2D, Data3D, DataMix i ToneMix.

SetClip (przycinanie płaszczyzną)

// Wartość zwracana: int, 0=sukces
public int SetClip(Vector3 planePoint, Vector3 planeNormal, bool inside = true)

Przycina chmurę punktów nieskończoną płaszczyzną, zachowując punkty po stronie normalnej lub przeciwnej.

ParametrTypOpis
planePointVector3Punkt na płaszczyźnie
planeNormalVector3Normalna płaszczyzny
insidebooltrue zachowuje stronę normalną

Uwagi:

  • Wzajemnie wykluczające się z innymi trybami przycinania.

Przykład:

lccManager.SetClip(Vector3.zero, Vector3.up, true); // Zachowaj nad podłożem

SetClip (przycinanie teksturą 2D)

// Wartość zwracana: int, 0=sukces, 1=pusta lista, 2=przekroczono maksymalną liczbę
public int SetClip(List<Data2D> _2Ds)

Przycina chmurę punktów za pomocą rzutowanej tekstury maski 2D.

ParametrTypOpis
_2DsList<Data2D>Lista zaznaczeń teksturą 2D

Przykład:

var clips = new List<Data2D>();
clips.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (przycinanie geometrią 3D)

// Wartość zwracana: int, 0=sukces, 1=pusta lista, 2=przekroczono maksymalną liczbę, 3=zero prawidłowej geometrii
public int SetClip(List<Data3D> _3Ds)

Przycina chmurę punktów geometrią 3D, obsługując operacje boolowskie do łączenia wielu geometrii.

ParametrTypOpis
_3DsList<Data3D>Lista geometrii 3D

Uwagi:

  • Wymagana jest co najmniej jedna geometria z operation == normal.

Przykład:

var clips = new List<Data3D>();
clips.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (przycinanie w trybie mieszanym)

// Wartość zwracana: int, 0=sukces, 1=pusta lista, 2=przekroczono maksymalną liczbę
public int SetClip(List<DataMix> mix)

Definiuje region przycinania mieszanką tekstur 2D i geometrii 3D. Każdy wpis określa swój typ przez editType.

ParametrTypOpis
mixList<DataMix>Mieszana lista zaznaczeń (2D + 3D)

Przykład:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(mix);

QuitClipMode

public void QuitClipMode()

Wychodzi z trybu przycinania i przywraca pełne wyświetlanie chmury punktów.

Przykład:

lccManager.QuitClipMode();

SetHighlight (podświetlanie teksturą 2D)

// Wartość zwracana: int, 0=sukces, 1=pusta lista, 2=przekroczono maksymalną liczbę
public int SetHighlight(List<Data2D> _2Ds)

Podświetla chmurę punktów za pomocą rzutowanej tekstury maski 2D; chmura punktów poza podświetlonym regionem jest przyciemniana.

ParametrTypOpis
_2DsList<Data2D>Lista zaznaczeń teksturą 2D

Uwagi:

  • Wzajemnie wykluczające się z podświetlaniem 3D i podświetlaniem mieszanym.

Przykład:

var highlights = new List<Data2D>();
highlights.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (podświetlanie geometrią 3D)

// Wartość zwracana: int, 0=sukces, 1=pusta lista, 2=przekroczono maksymalną liczbę, 3=zero prawidłowej geometrii
public int SetHighlight(List<Data3D> _3Ds)

Definiuje podświetlony region geometrią 3D, obsługując operacje boolowskie do łączenia.

ParametrTypOpis
_3DsList<Data3D>Lista geometrii 3D

Uwagi:

  • Wymagana jest co najmniej jedna geometria z operation == normal.

Przykład:

var highlights = new List<Data3D>();
highlights.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (podświetlanie w trybie mieszanym)

// Wartość zwracana: int, 0=sukces, 1=pusta lista, 2=przekroczono maksymalną liczbę
public int SetHighlight(List<DataMix> mix)

Definiuje podświetlony region mieszanką tekstur 2D i geometrii 3D.

ParametrTypOpis
mixList<DataMix>Mieszana lista zaznaczeń

Przykład:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(mix);

QuitHighlightMode

public void QuitHighlightMode()

Wychodzi z trybu podświetlania i przywraca normalne wyświetlanie chmury punktów.

Przykład:

lccManager.QuitHighlightMode();

SetTone

// Wartość zwracana: int, 0=sukces, 1=pusta lista, 2=przekroczono maksymalną liczbę
public int SetTone(List<ToneMix> mix)

Stosuje korekcję tonów do zaznaczonego regionu, obsługując jasność, nasycenie, kontrast i filtry LUT. Region tonów można zdefiniować teksturą 2D lub geometrią 3D.

ParametrTypOpis
mixList<ToneMix>Lista mieszanki tonów

Uwagi:

  • brightness / saturation / contrast domyślnie 1.0.
  • lutid to indeks filtra LUT; 0 oznacza nieużywany.

Przykład:

var tones = new List<ToneMix>();
tones.Add(new ToneMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = boxMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal,
    brightness = 1.2f,
    saturation = 1.0f,
    contrast = 1.1f,
    lutid = 0
});
lccManager.SetTone(tones);

QuitToneMode

public void QuitToneMode()

Wychodzi z trybu tonów i przywraca oryginalny kolor chmury punktów.

Przykład:

lccManager.QuitToneMode();

Rzutowanie dekala

Rzutowanie dekala rzutuje teksturę na powierzchnie 3DGS wzdłuż kierunku projektora. Dekal to stały w świecie stan globalny, spójny dla wszystkich kamer. Typowy przepływ to: włącz dekal → ustaw teksturę → ustaw pozę projektora. Poniższe metody są obsługiwane tylko na platformach PC / Mac.

SetDecalEnabled

public void SetDecalEnabled(bool enable)

Przełącza rzutowanie dekala. Należy osobno wywołać SetDecalTexture() i SetDecalProjection(), aby ustawić zawartość i pozę projektora.

ParametrTypOpis
enableboolCzy włączyć rzutowanie dekala

Uwagi:

  • Wyłączenie nie czyści buforowanej tekstury / parametrów.

Przykład:

lccManager.SetDecalEnabled(true);
lccManager.SetDecalTexture(decalTex);
lccManager.SetDecalProjection(projectorPos, projectorRot, 60f, 1.778f, 0.1f, 20f);

SetDecalTexture

public void SetDecalTexture(Texture2D tex)

Ustawia teksturę dekala. RGB to kolor, a A to własna maska dekala, która jest mnożona z globalną nieprzezroczystością i zanikaniem krawędzi.

ParametrTypOpis
texTexture2DTekstura dekala; przekazanie null czyści odniesienie

Przykład:

lccManager.SetDecalTexture(logoTex);

SetDecalProjection

public void SetDecalProjection(Vector3 pos, Quaternion rot, float fov, float aspect, float near, float far)

Ustawia pozę i parametry perspektywy projektora dekala. Projektor rzutuje wzdłuż swojego kierunku do przodu (+Z), a punkty wewnątrz frustum są pokrywane przez dekal.

ParametrTypOpis
posVector3Pozycja projektora w świecie
rotQuaternionOrientacja projektora
fovfloatPionowy FOV (stopnie), przycinany do [1, 179]
aspectfloatWspółczynnik proporcji, minimum 1e-4
nearfloatBliska płaszczyzna przycinania, minimum 1e-3
farfloatDaleka płaszczyzna przycinania, minimum near + 1e-3

Przykład:

lccManager.SetDecalProjection(new Vector3(0, 10, 0), Quaternion.Euler(90, 0, 0), 60f, 1.778f, 0.1f, 20f);

SetDecalOpacity

public void SetDecalOpacity(float opacity)

Ustawia ogólną nieprzezroczystość dekala.

ParametrTypOpis
opacityfloatOgólna nieprzezroczystość dekala, zakres [0, 1], automatycznie przycinana po przekroczeniu

Przykład:

lccManager.SetDecalOpacity(0.8f);

SetDecalEdgeFade

public void SetDecalEdgeFade(float edgeFade)

Ustawia szerokość zanikania krawędzi dekala. 0 to twarda krawędź, a większa wartość sprawia, że przejście krawędzi jest miększe.

ParametrTypOpis
edgeFadefloatSzerokość zanikania krawędzi (współczynnik w przestrzeni UV), zakres [0, 0.5), automatycznie przycinana po przekroczeniu

Przykład:

lccManager.SetDecalEdgeFade(0.1f);

SetDecalOcclusion

public void SetDecalOcclusion(bool enable)

Przełącza odcinanie okluzji dekala (oparte na mapie głębi projektora). Po włączeniu zasłonięte powierzchnie nie są pokrywane przez dekal.

ParametrTypOpis
enableboolCzy włączyć odcinanie okluzji dekala

Uwagi:

  • Tylko platforma PC / Mac i tylko potok URP.
  • Przed włączeniem powinno być wywołane SetDecalProjection(), aby ustawić projektor.
  • Zależy od parametrów jakości skonfigurowanych przez SetDecalOcclusionSettings().

Przykład:

lccManager.SetDecalOcclusion(true);

SetDecalOcclusionSettings

public void SetDecalOcclusionSettings(DecalOcclusionSettings settings)

Ustawia wszystkie parametry jakości odcinania okluzji dekala naraz. Zobacz DecalOcclusionSettings.

ParametrTypOpis
settingsDecalOcclusionSettingsParametry jakości odcinania okluzji

Uwagi:

  • Można dostosowywać w dowolnym momencie; parametry działają natychmiast.

Przykład:

lccManager.SetDecalOcclusionSettings(DecalOcclusionSettings.Default);
lccManager.SetDecalOcclusionSettings(new DecalOcclusionSettings {
    opacityCutoff = 0.1f,
    depthBias = 0.05f,
    footprintMaxPx = 2,
    resolution = 1024
});

Przyciąganie

Funkcja przyciągania automatycznie wyszukuje pobliskie krawędzie / narożniki do wyrównania podczas raycastingu i jest powszechnie używana do precyzyjnej interakcji, takiej jak pomiary i adnotacje. Poniższe metody są obsługiwane tylko na platformach PC / Mac.

SetSnapEnabled

public void SetSnapEnabled(bool enable)

Przełącza funkcję przyciągania. Po włączeniu RaycastWithSnap() automatycznie wyszukuje pobliskie krawędzie / narożniki do przyciągnięcia.

ParametrTypOpis
enableboolCzy włączyć przyciąganie

Uwagi:

  • Domyślnie wyłączone.
  • Brak efektu na mobilnych / VR i wyświetlane jest ostrzeżenie.

Przykład:

lccManager.SetSnapEnabled(true);

SetSnapRadius

public void SetSnapRadius(float pixels)

Ustawia promień wyszukiwania przyciągania. Wyszukuje najbliższą krawędź / narożnik w tym zakresie pikseli.

ParametrTypOpis
pixelsfloatPromień wyszukiwania przyciągania (piksele)

Uwagi:

  • Domyślnie 20 pikseli.
  • Większa wartość oznacza szerszy zakres wyszukiwania, ale może przyciągać do niezamierzonych celów.

Przykład:

lccManager.SetSnapRadius(30f);

SetEdgeThreshold

public void SetEdgeThreshold(float threshold)

Ustawia próg wykrywania krawędzi. Mniejsza wartość wykrywa więcej krawędzi.

ParametrTypOpis
thresholdfloatPróg wykrywania krawędzi, zalecany zakres [0.1, 0.8]

Uwagi:

  • Domyślnie 0.3.
  • Zbyt mała wartość daje dużą ilość zaszumionych krawędzi.

Przykład:

lccManager.SetEdgeThreshold(0.2f);

SetSnapPreviewEnabled

public void SetSnapPreviewEnabled(bool enable)

Przełącza funkcję podglądu przyciągania. Po włączeniu wskaźnik najbliższego celu przyciągania jest wyświetlany w czasie rzeczywistym podczas ruchu myszy.

ParametrTypOpis
enableboolCzy włączyć podgląd przyciągania

Uwagi:

  • Najpierw należy wywołać SetSnapEnabled(true).
  • Podgląd stale zużywa zasoby GPU (wykrywanie co klatkę).

Przykład:

lccManager.SetSnapPreviewEnabled(true);

UpdateSnapPreview

public void UpdateSnapPreview(Vector2 mousePos, Camera cam)

Aktualizuje stan podglądu przyciągania. Wywoływane podczas ruchu myszy, aby zaktualizować pozycję wskaźnika podglądu.

ParametrTypOpis
mousePosVector2Bieżące współrzędne ekranowe myszy
camCameraKamera

Uwagi:

  • Najpierw należy wywołać SetSnapPreviewEnabled(true).
  • Zaleca się wywoływanie w sposób ciągły w Update.

Przykład:

void Update()
{
    lccManager.UpdateSnapPreview(Input.mousePosition, Camera.main);
}

GetSnapPreviewState

// Wartość zwracana: SnapPreviewState
public SnapPreviewState GetSnapPreviewState()

Pobiera bieżący stan podglądu przyciągania, w tym informację o tym, czy istnieje cel przyciągania, typ celu, pozycję ekranową celu i odległość w pikselach do myszy. Zobacz SnapPreviewState.

Uwagi:

  • Najpierw należy wywołać SetSnapPreviewEnabled(true) i UpdateSnapPreview().
  • Zwraca default(SnapPreviewState), gdy nie ma celu.
  • screenPos jest we współrzędnych ekranu, a nie współrzędnych świata; użyj RaycastWithSnap(), aby uzyskać HitResult.hitPos dla współrzędnych świata.

Przykład:

var state = lccManager.GetSnapPreviewState();
if (state.hasTarget)
{
    // state.snapType: Narożnik / Krawędź
    // state.screenPos: współrzędne ekranowe celu przyciągania
    // state.distanceToMouse: odległość w pikselach
}

Raycasting i zapytania kolizji

Raycasting służy do wybierania punktów na powierzchniach 3DGS, a zapytania kolizji do fizycznej interakcji między postaciami / obiektami a chmurą punktów. Wynik trafienia jest zwracany przez HitResult.

Uwaga:

Pole współrzędnych świata punktu trafienia w HitResult nazywa się hitPos (nie position).

Raycast (współrzędne ekranu)

// Wartość zwracana: bool, true=trafienie
public bool Raycast(Vector3 mousePos, out HitResult _finalResult)

Wystrzeliwuje promień ze współrzędnych ekranu, aby wykryć trafienia chmury punktów. Promień jest generowany przy użyciu głównej kamery ustawionej przez SetMainCamera().

ParametrTypOpis
mousePosVector3Współrzędne ekranu
_finalResultout HitResultWynik trafienia

Uwagi:

  • Najpierw należy wywołać SetMainCamera(), aby ustawić główną kamerę.
  • Zwraca punkt trafienia najbliższy kamerze.
  • Na precyzję wpływa SetRaycastDelta(), a maksymalna odległość jest kontrolowana przez SetMaxRaycastDistance().

Przykład:

if (lccManager.Raycast(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

Raycast (Ray)

// Wartość zwracana: bool, true=trafienie
public bool Raycast(Ray _ray, out HitResult _finalResult)

Wykonuje raycasting własnym Ray, iterując po wszystkich aktywnych Rendererach i zwracając najbliższe trafienie.

ParametrTypOpis
_rayRayPromień
_finalResultout HitResultWynik trafienia

Przykład:

Ray ray = new Ray(origin, direction);
if (lccManager.Raycast(ray, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (współrzędne ekranu)

// Wartość zwracana: bool, true=trafienie
public bool RaycastMesh(Vector3 mousePos, out HitResult _finalResult, float _distance = 70.0f)

Wystrzeliwuje promień ze współrzędnych ekranu, aby wykryć trafienia w siatce kolizji chmury punktów. Używa danych Collidera do wykrywania, co jest szybsze niż Raycast(), ale mniej precyzyjne.

ParametrTypOpis
mousePosVector3Współrzędne ekranu
_finalResultout HitResultWynik trafienia
_distancefloatMaksymalna odległość wykrywania, domyślnie 70.0

Uwagi:

  • Dane muszą zawierać węzły Collidera, a najpierw należy wywołać Renderer.SetColliderEnable(true).

Przykład:

if (lccManager.RaycastMesh(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (Ray + Bounds)

// Wartość zwracana: bool, true=trafienie
public bool RaycastMesh(Ray ray, out HitResult result, out Bounds hitBounds, float maxDist = 70.0f)

Wykonuje wykrywanie siatki kolizji własnym Ray, zwracając również prostokąt ograniczający trafionego węzła.

ParametrTypOpis
rayRayPromień
resultout HitResultWynik trafienia
hitBoundsout BoundsProstokąt ograniczający trafionego węzła
maxDistfloatMaksymalna odległość wykrywania, domyślnie 70.0

Uwagi:

  • Dane muszą zawierać węzły Collidera.

Przykład:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (lccManager.RaycastMesh(ray, out HitResult hit, out Bounds bounds))
{
    Debug.Log(bounds.center);
}

RaycastWithSnap

// Wartość zwracana: bool, true=trafienie
public bool RaycastWithSnap(Vector2 screenPos, Camera cam, out HitResult result)

Raycasting z przyciąganiem. Najpierw wykonuje normalny raycast, a następnie wyszukuje krawędzie / narożniki w pobliżu punktu trafienia do przyciągnięcia.

ParametrTypOpis
screenPosVector2Współrzędne ekranu
camCameraKamera
resultout HitResultWynik trafienia (w tym informacje o przyciąganiu)

Uwagi:

  • Najpierw należy wywołać SetSnapEnabled(true).
  • Tylko platformy PC / Mac; niedostępne na mobilnych / VR.
  • Priorytet przyciągania: Narożnik > Krawędź > Brak.
  • HitResult.snapType to typ przyciągania, HitResult.hitPos to współrzędna świata po przyciągnięciu, a HitResult.originalHitPos to pierwotny punkt trafienia przed przyciągnięciem.

Przykład:

if (lccManager.RaycastWithSnap(mousePos, cam, out HitResult hit))
{
    // hit.snapType: Narożnik / Krawędź / Brak
    // hit.hitPos: współrzędna świata po przyciągnięciu
    // hit.originalHitPos: pierwotny punkt trafienia przed przyciągnięciem
}

SetRaycastDelta

public void SetRaycastDelta(float delta)

Ustawia parametr precyzji raycastingu. Mniejsza wartość oznacza wyższą precyzję, ale wyższe zużycie wydajności.

ParametrTypOpis
deltafloatPrecyzja raycastingu, zakres [0.1, 10.0], automatycznie przycinana po przekroczeniu

Uwagi:

  • Domyślnie 0.1.
  • Wpływa na precyzję wykrywania wszystkich metod Raycast().

Przykład:

lccManager.SetRaycastDelta(0.5f);

SetMaxRaycastDistance

public void SetMaxRaycastDistance(float _distance)

Ustawia maksymalną odległość wykrywania metod Raycast().

ParametrTypOpis
_distancefloatMaksymalna odległość raycastu, zakres [10, 10000], automatycznie przycinana po przekroczeniu

Uwagi:

  • Wpływa na przeciążenia Raycast(Vector3) / Raycast(Ray); nie wpływa na RaycastMesh() (które ma własny parametr odległości).

Przykład:

lccManager.SetMaxRaycastDistance(500f);

IntersectsSphere

// Wartość zwracana: bool, true=przecięcie
public bool IntersectsSphere(Sphere sphere)

// Wartość zwracana: bool, true=przecięcie
public bool IntersectsSphere(Sphere sphere, out Vector3 delta)

Wykrywa, czy sfera przecina kolider chmury punktów. Drugie przeciążenie dodatkowo zwraca wektor penetracji, który można wykorzystać do fizycznego wypchnięcia.

ParametrTypOpis
sphereSphereSfera
deltaout Vector3Wektor penetracji (kierunek i odległość wypchnięcia)

Uwagi:

  • Dane muszą zawierać węzły Collidera, a najpierw należy wywołać Renderer.SetColliderEnable(true).
  • Iteruje po wszystkich aktywnych Rendererach.

Przykład:

var sphere = new Sphere(transform.position, 0.5f);
if (lccManager.IntersectsSphere(sphere, out Vector3 delta))
{
    transform.position += delta;
}

IntersectsCapsule

// Wartość zwracana: bool, true=przecięcie
public bool IntersectsCapsule(Capsule capsule)

// Wartość zwracana: bool, true=przecięcie
public bool IntersectsCapsule(Capsule capsule, out Vector3 delta)

Wykrywa, czy kapsuła przecina kolider chmury punktów, powszechnie używane do wykrywania kolizji kontrolera postaci. Drugie przeciążenie zwraca wektor penetracji.

ParametrTypOpis
capsuleCapsuleKapsuła
deltaout Vector3Wektor penetracji

Uwagi:

  • Dane muszą zawierać węzły Collidera, a najpierw należy wywołać Renderer.SetColliderEnable(true).

Przykład:

var capsule = new Capsule(footPos, headPos, 0.3f);
if (lccManager.IntersectsCapsule(capsule, out Vector3 delta))
{
    characterController.Move(delta);
}

Efekty wizualne

TriggerVFX

public void TriggerVFX(Vector3 vfxOriginW, int vfxid = 0)

Wywołuje efekt wizualny w określonej współrzędnej świata, rozprzestrzeniający się na zewnątrz z tej współrzędnej.

ParametrTypOpis
vfxOriginWVector3Współrzędna świata będąca początkiem efektu
vfxidintID efektu, domyślnie 0

Uwagi:

  • Musi być wywołane po zakończeniu ładowania sceny LCC.

Przykład:

lccManager.TriggerVFX(hitPoint, 0);

Zapytania o instancje

GetAllRenderers

// Wartość zwracana: List<Renderer>, kopia wszystkich zarejestrowanych instancji Renderer
public List<Renderer> GetAllRenderers()

Pobiera listę wszystkich aktualnie zarejestrowanych instancji Renderer (zwraca kopię).

Przykład:

var renderers = lccManager.GetAllRenderers();
foreach (var r in renderers) { /* ... */ }