Przewodnik deweloperski dla Quest 3
Przepływ pracy LCC dla Quest 3 różni się nieco od oficjalnego przepływu tworzenia projektu VR firmy Meta: oficjalne modyfikacje konfiguracji Unity wprowadzane przez Meta sprawiają, że renderowanie LCC jest niezgodne z przepływem pracy zalecanym w ich dokumentacji deweloperskiej. Oficjalny przepływ pracy Meta znajdziesz w Set up Unity for XR development. Opierając się na tym przepływie, ten przewodnik wyjaśnia, jak zintegrować LCC Unity SDK w celu renderowania scen 3DGS.
Wymagania dotyczące wersji
Wersje oprogramowania i wtyczek używane w tym przewodniku są następujące. Zaleca się tworzenie z użyciem tych samych wersji; inne, nieprzetestowane wersje mogą mieć problemy ze zgodnością:
| Oprogramowanie / Wtyczka | Wersja |
|---|---|
| Unity | v6000.0.69f1 |
| Meta XR All-in-One SDK | v205.0.0 |
| LCC Unity SDK | v2.1.35 i nowsze |
Uwaga:
- Meta SDK obsługuje tylko przestrzeń kolorów Linear w URP, a sceny LCC renderowane w tej przestrzeni kolorów będą wyglądać na nieco wyblakłe.
- Wersja Unity, wersja Meta SDK i wersja LCC SDK wpływają na renderowanie i wydajność, więc staraj się utrzymywać wersje oprogramowania spójne z tym przewodnikiem.
Przepływ pracy deweloperskiej
Krok 1: Utwórz projekt URP
Wybierz Uniwersalny 3D w szablonie projektu, jak pokazano poniżej:

Utwórz projekt Uniwersalny 3D (URP)
Krok 2: Przełącz platformę
Po utworzeniu projektu wybierz Plik → Profile kompilacji z menu Unity, aby otworzyć okno kompilacji, i przełącz platformę na Android, jak pokazano poniżej:

Przełącz platformę na Android w Profilach kompilacji
Krok 3: Zaimportuj Unity OpenXR
Otwórz okno UPM przez menu Unity Okno → Menedżer pakietów, wybierz Unity Registry na liście po lewej stronie, wpisz OpenXR w polu wyszukiwania, wybierz OpenXR Plugin z wyników wyszukiwania i zainstaluj go, jak pokazano poniżej:

Zainstaluj wtyczkę OpenXR Plugin z Unity Registry
Krok 4: Zaimportuj XR Interaction Toolkit
Wybierz Unity Registry na liście po lewej stronie, wpisz XR w polu wyszukiwania, wybierz XR Interaction Toolkit z wyników wyszukiwania i zainstaluj go, jak pokazano poniżej:

Zainstaluj XR Interaction Toolkit z Unity Registry
Krok 5: Zaimportuj Meta XR All-in-One SDK
Meta XR All-in-One SDK to zestaw narzędzi deweloperskich XR firmy Meta; zobacz Meta XR All-in-One SDK (UPM).
Przed użyciem tego SDK dodaj go do swoich zasobów osobistych w Unity Asset Store: https://assetstore.unity.com/packages/tools/integration/meta-xr-all-in-one-sdk-269657. Następnie otwórz UPM przez Okno → Menedżer pakietów, wybierz Moje zasoby po lewej stronie, wpisz Meta XR w polu wyszukiwania i zainstaluj Meta XR All-in-One SDK, jak pokazano poniżej:

Zainstaluj Meta XR All-in-One SDK z Moich zasobów
Krok 6: Zaimportuj LCC Unity SDK
Otwórz okno UPM przez menu Unity Okno → Menedżer pakietów, kliknij + po lewej stronie, wybierz Zainstaluj pakiet z dysku z menu rozwijanego, znajdź LCC Unity SDK i wybierz plik package.json, aby go zaimportować, jak pokazano poniżej:

Zaimportuj LCC Unity SDK przez Zainstaluj pakiet z dysku
Po ukończeniu powyższych kroków uruchom ponownie Unity przed przejściem do kolejnych ustawień.
Krok 7: Skonfiguruj środowisko Unity
Skonfiguruj XR Plug-in Management
Wybierz Plik → Ustawienia projektu z paska menu Unity, po lewej stronie wybierz Zarządzanie wtyczkami XR i zaznacz Zainicjuj XR przy uruchomieniu na platformach Pulpit i Android, jak pokazano poniżej:

Zaznacz Zainicjuj XR przy uruchomieniu na platformie Pulpit

Zaznacz Zainicjuj XR przy uruchomieniu na platformie Android
Wybierz pozycję OpenXR w sekcji Zarządzanie wtyczkami XR i ustaw Tryb renderowania dla platform Pulpit i Android na Multi-pass, jak pokazano poniżej:

Ustaw Tryb renderowania OpenXR na Multi-pass
Uwaga: Meta XR All-in-One SDK zmodyfikuje wartość Trybu renderowania; przed kompilacją upewnij się, że ta wartość to Multi-pass.
Skonfiguruj Odtwarzacz (platforma Pulpit)
Po lewej stronie Ustawień projektu wybierz Odtwarzacz, przełącz na platformę Pulpit, rozwiń sekcję Inne ustawienia, odznacz Automatyczny API grafiki, ustaw API graficzne na Vulkan, Direct3D12, Direct3D11 i usuń pozostałe API graficzne; ustaw Przestrzeń kolorów na Linear, jak pokazano poniżej:

Ustaw API graficzne i przestrzeń kolorów Linear na platformie Pulpit
Skonfiguruj Odtwarzacz (platforma Android)
Po lewej stronie Ustawień projektu wybierz Odtwarzacz, przełącz na platformę Android, rozwiń sekcję Inne ustawienia, odznacz Automatyczny API grafiki, ustaw API graficzne na Vulkan i usuń pozostałe API graficzne; ustaw Przestrzeń kolorów na Linear (Meta SDK obsługuje tylko przestrzeń kolorów Linear), jak pokazano poniżej:

Ustaw API graficzne na Vulkan i przestrzeń kolorów Linear na platformie Android
Ustaw Nazwę firmy i Nazwę produktu
Na karcie Odtwarzacz ustaw poprawnie Nazwę firmy i Nazwę produktu, jak pokazano poniżej:

Ustaw Nazwę firmy i Nazwę produktu
Ustaw backend skryptowy i wejście platformy Android
Przewiń kartę Inne ustawienia platformy Android w dół i ustaw Minimalny poziom API = Android 12L (poziom API 32) lub wyższy, Backend skryptowy = IL2CPP, Architektury docelowe = ARM64, Aktywna obsługa wejścia = Pakiet Input System (nowy), jak pokazano poniżej:

Ustaw Minimalny poziom API, Backend skryptowy, Architektury docelowe i Aktywną obsługę wejścia
Sprawdź Grafikę i Jakość
Po lewej stronie Ustawień projektu wybierz Grafika i sprawdź Render Asset odpowiadający Domyślnemu potokowi renderowania używanemu przez platformę Mobile, w tym przykładzie Mobile_RPAsset, jak pokazano poniżej:

Sprawdź Render Asset Domyślnego potoku renderowania na platformie Mobile
Po lewej stronie Ustawień projektu wybierz Jakość, sprawdź Render Asset odpowiadający Domyślnemu potokowi renderowania używanemu przez platformę Mobile (w tym przykładzie Mobile_RPAsset), ustaw Stały współczynnik DPI skalowania rozdzielczości = 0.7, Liczba VSync = Bez synchronizacji, jak pokazano poniżej:

Ustaw współczynnik DPI i VSync w Jakości
Skonfiguruj Render Asset
Znajdź Render Asset odpowiadający Domyślnemu potokowi renderowania używanemu przez platformę Mobile (w tym przykładzie Mobile_RPAsset). Po kliknięciu zasób zostanie zlokalizowany w oknie projektu (Projekt). Wybierz zasób, a następnie w oknie właściwości (Inspektor): odznacz Teksturę głębi, Teksturę nieprzezroczystą, HDR; ustaw Wygładzanie krawędzi (MSAA) = Wyłączone, Skala renderowania = 0.7, Filtr skalowania = Automatyczny, jak pokazano poniżej:

Wyłącz Teksturę głębi/nieprzezroczystą, HDR, MSAA i ustaw Skalę renderowania = 0.7 w Render Asset
Znajdź pasujący Renderer dla tego Render Asset, w tym przykładzie Mobile_Renderer (Universal Renderer Data), i ustaw jego odpowiednie właściwości w oknie właściwości (Inspektor), jak pokazano poniżej:

Skonfiguruj właściwości Mobile_Renderer (Universal Renderer Data)
Walidacja projektu
Po lewej stronie Ustawień projektu wybierz Zarządzanie wtyczkami XR, a następnie Walidacja projektu. Napraw elementy walidacji oznaczone na czerwono — kliknij przycisk Napraw po prawej stronie każdego czerwonego elementu, aby go naprawić; żółte elementy ostrzeżeń można naprawić według potrzeb lub na razie pozostawić bez obsługi. Przed przetworzeniem, jak pokazano poniżej:

Walidacja projektu przed przetworzeniem (obecne elementy oznaczone na czerwono)
Po przetworzeniu, jak pokazano poniżej:

Walidacja projektu po przetworzeniu (elementy oznaczone na czerwono naprawione)
Krok 8: Utwórz scenę
Ten przykład zaczyna się od zupełnie nowej sceny (Scena). Po utworzeniu sceny Unity usuń GameObject Kamera główna w oknie hierarchii (Hierarchia), następnie kliknij prawym przyciskiem myszy w pustym obszarze okna i wybierz XR → XR Origin (VR) z menu podręcznego, jak pokazano poniżej:

Utwórz XR Origin (VR) przez menu podręczne
Krok 9: Skonfiguruj scenę
Wybierz GameObject XR Origin (VR) w oknie hierarchii (Hierarchia) i w komponencie XR Origin w oknie właściwości (Inspektor) ustaw Tryb początku śledzenia na Podłoga, jak pokazano poniżej:

Ustaw Tryb początku śledzenia XR Origin na Podłoga
Wybierz GameObject Kamera główna pod XR Origin (VR) w oknie hierarchii (Hierarchia) i ustaw właściwości kamery w oknie właściwości (Inspektor):
| Właściwość | Zalecana wartość | Opis |
|---|---|---|
| Pole widzenia | 60 | FOV |
| Płaszczyzny przycinania → Blisko | 0.2 ~ 0.3 | Bliska płaszczyzna przycinania |
| Płaszczyzny przycinania → Daleko | 3000 ~ 5000 | Daleka płaszczyzna przycinania, obejmująca sceny wielkoskalowe |
| Wygładzanie krawędzi | Bez wygładzania krawędzi | Wygładzanie krawędzi domyślnie wyłączone |
| Tekstura nieprzezroczysta | Wyłączone | Domyślnie wyłączone |
| Tekstura głębi | Wyłączone | Domyślnie wyłączone |
| Typ tła | Jednolity kolor | Zalecany jednolity kolor |
| Tło | Czarny | Zalecany czarny jako domyślny kolor tła |
| Renderowanie HDR | Wyłączone | Domyślnie wyłączone |
| MSAA | Wyłączone | Domyślnie wyłączone |
| URP Dynamic Resolution | Wyłączone | Domyślnie wyłączone |
Pozostałe właściwości jak pokazano poniżej:

Ustaw właściwości komponentu Kamera Kamery głównej pod XR Origin (VR)
Krok 10: Napisz kod, aby załadować scenę
Kliknij prawym przyciskiem myszy Utwórz pusty w oknie hierarchii (Hierarchia), aby utworzyć pusty obiekt, nazwij go LCCManager, znormalizuj jego Transform i dołącz do niego skrypt LCCManager, jak pokazano poniżej:

Utwórz pusty obiekt LCCManager i dołącz skrypt LCCManager
Kliknij prawym przyciskiem myszy Utwórz pusty w oknie hierarchii (Hierarchia), aby utworzyć kolejny pusty obiekt, nazwij go LCCRenderer i ustaw jego Transform Rotation.x = -90, Scale.x = -1, jak pokazano poniżej:

Utwórz pusty obiekt LCCRenderer i ustaw Rotation.x = -90 oraz Scale.x = -1, aby wyrównać układy współrzędnych
Rotation.x = -90 i Scale.x = -1 to transformacja wyrównująca z układu współrzędnych danych LCC (prawoskrętny z osią Z w górę) do układu współrzędnych Unity (lewoskrętny z osią Y w górę); zobacz „Układ współrzędnych danych LCC" w Wprowadzenie do Unity SDK.
Napisz skrypt C# o nazwie LCCRenderer.cs z następującym kodem:
using LCCCore;
using UnityEngine;
public class LCCRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
void Start()
{
#if UNITY_EDITOR
m_manager.SetPlatformType(PlatformType.PC);
m_renderer = m_manager.GetRender(this.gameObject.transform);
m_renderer.Load(m_FilePath, onProgress, onLoaded);
#else
m_manager.SetPlatformType(PlatformType.Quest);
m_renderer = m_manager.GetRender(this.gameObject.transform);
m_renderer.Load(m_FilePath, onProgress, onLoaded);
//m_renderer.Load($"{Application.persistentDataPath}/LccData/meta.lcc2", onProgress, onLoaded);
#endif
}
private void onProgress(float v)
{
Debug.Log("postęp:" + v);
}
private void onLoaded()
{
m_manager.SetStartLod(2);
m_renderer.SetEnvironment(false);
Debug.Log("Dane załadowane");
}
}
Dołącz skrypt do GameObject LCCRenderer w oknie hierarchii (Hierarchia), następnie przeciągnij GameObject LCCManager na właściwość Manager skryptu w oknie właściwości (Inspektor), a na koniec wpisz ścieżkę pliku LCC, po czym skompiluj i uruchom.

Dołącz skrypt LCCRenderer do obiektu i powiąż Manager oraz ścieżkę pliku
Aby ułatwić debugowanie w Edytorze Unity i bezpośrednią kompilację na urządzenie z Androidem, kod używa makr kompilacji do rozróżnienia środowiska uruchomieniowego: w Edytorze Unity używa platformy PC, a na urządzeniu Quest używa platformy Quest.
Dla urządzeń Quest zaleca się umieszczenie źródła danych na serwerze; podczas testowania możesz też używać źródła danych bezpośrednio na urządzeniu. Konkretne kroki:
- Uruchom zbudowaną aplikację na urządzeniu Quest raz.
- Po zainstalowaniu aplikacji wejdź do jej katalogu danych (zwykle Pamięć urządzenia Quest → Android → data → BundleID aplikacji → Files; konkretny katalog znajdziesz w ścieżce instalacji aplikacji Android) i utwórz folder
LccDataw podkatalogu Files. - Skopiuj wszystkie źródła danych LCC do folderu
LccData.
Uwaga:
- W praktyce zaleca się umieszczenie źródła danych aplikacji Quest na serwerze, zamiast pakowania go bezpośrednio do aplikacji.
- Możliwość renderowania 3DGS na ekranie urządzenia Quest 3 wynosi około 700 000 prymitywów gaussowskich, czyli mniej więcej o dwa rzędy wielkości mniej niż możliwość po stronie PC wynosząca około 25 milionów. Zaleca się ją głównie do renderowania i wyświetlania małych scen i pojedynczych obiektów; duże sceny będą płynniejsze przy strumieniowaniu PC.
- Podczas renderowania dużych scen LCC zaleca się ustawienie StartLOD na
2i wyłączenie wyświetlania danych środowiskowych (jak w przykładowym kodzie).
Powiązane materiały
- Ustawienia projektu i optymalizację wydajności znajdziesz w rozdziałach Przewodnik optymalizacji ustawień projektu i Przewodnik parametrów wydajności renderowania.
- Inne przepływy pracy deweloperskiej Meta znajdziesz w oficjalnej dokumentacji: Dokumentacja deweloperska Meta.
- Podczas tworzenia dla Quest ustaw Tryb renderowania platformy Pulpit na Multi-pass w Ustawienia projektu → OpenXR; w przeciwnym razie sceny LCC nie mogą renderować się poprawnie w Unity (dotyczy to zarówno Edytora, jak i środowiska uruchomieniowego).