Pico 4 Ultra-Entwicklungsanleitung
Der LCC-Entwicklungsworkflow für Pico 4 Ultra entspricht im Wesentlichen dem offiziellen VR-Projekterstellungsworkflow von PICO; siehe die Dokumentation des PICO Unity Integration SDK. Diese Anleitung baut darauf auf und erläutert, wie das LCC Unity SDK für das Rendern von 3DGS-Szenen integriert wird.
Versionsanforderungen
Die in dieser Anleitung verwendeten Software- und Paketversionen sind nachfolgend aufgeführt. Es wird empfohlen, mit denselben Versionen zu entwickeln; andere, nicht getestete Versionen können Kompatibilitätsprobleme aufweisen:
| Software / Paket | Version | Beschreibung |
|---|---|---|
| Unity | v2022.3.62f3 | Verwendet Unity 2022 LTS |
| PICO Unity Integration SDK | v3.4.0 | Bezogen aus dem offiziellen Kanal von PICO |
| LCC Unity SDK | v2.1.27 und neuer | Die Built-in unterstützende Version; laden Sie die mit Unity 2022 LTS kompatible Version herunter |
Detailliertere Hardware- und Softwareanforderungen finden Sie unter Anforderungen an die Entwicklungsumgebung.
Hinweis:
- Da das PICO Unity Integration SDK auf der URP-Pipeline erhebliche Leistungsprobleme aufweist, wird die Render-Pipeline Built-in empfohlen; siehe dessen bekannte Probleme.
- Wenn Sie mit Unity v6000.0.69f1 testen und feststellen, dass die App einfriert oder abstürzt, wechseln Sie zu Unity v2022.3 LTS: Geräte der Pico-4-Serie haben Kompatibilitätsprobleme mit Apps, die Unity 6 und Vulkan gemeinsam verwenden; siehe dessen bekannte Probleme.
- Unity-Version, PICO SDK-Version und LCC SDK-Version beeinflussen alle das Rendering und die Leistung; versuchen Sie, jede Softwareversion mit dieser Anleitung konsistent zu halten.
Entwicklungsworkflow
Schritt 1: Das Projekt erstellen
Wählen Sie in der Projektvorlage den Typ 3D (Built-in Render Pipeline). Da das PICO Unity Integration SDK auf der URP-Pipeline erhebliche Leistungsprobleme aufweist, wählen Sie nicht die URP-Pipeline, wie unten dargestellt:

Ein 3D-Projekt (Built-in Render Pipeline) erstellen
Schritt 2: Die Plattform wechseln
Wählen Sie im Unity-Menü Datei → Build-Profile, um das Build-Fenster zu öffnen und die Plattform auf Android zu wechseln, wie unten dargestellt:

Die Plattform in den Build-Profilen auf Android wechseln
Schritt 3: Das PICO Unity Integration SDK importieren
Laden Sie das PICO Unity Integration SDK von der offiziellen PICO-Website herunter und installieren Sie es gemäß dem PICO-Tutorial; Sie können es auch direkt von GitHub unter https://github.com/Pico-Developer/PICO-Unity-Integration-SDK.git importieren. Diese Anleitung verwendet Version v3.4.0, wie unten dargestellt:

PICO Unity Integration SDK v3.4.0 importieren
Schritt 4: Das LCC Unity SDK importieren
Öffnen Sie das UPM-Fenster über das Unity-Menü Fenster → Paket-Manager, klicken Sie links auf +, wählen Sie im Dropdown-Menü Paket von Datenträger installieren, navigieren Sie zum LCC Unity SDK und wählen Sie die Datei package.json zum Import aus, wie unten dargestellt:

Das LCC Unity SDK über „Paket von Datenträger installieren“ importieren
Schritt 5: Die Unity-Umgebung konfigurieren
XR-Plug-in-Verwaltung konfigurieren
Wählen Sie in der Unity-Menüleiste Datei → Projekteinstellungen, wählen Sie links XR-Plug-in-Verwaltung und aktivieren Sie im Tab der Plattform Android die Option XR beim Start initialisieren, wie unten dargestellt:

In der XR-Plug-in-Verwaltung „XR beim Start initialisieren“ aktivieren
Wählen Sie unter XR-Plug-in-Verwaltung den Eintrag PICO und setzen Sie den Render-Modus der Android-Plattform auf MultiView, wie unten dargestellt:

Den PICO-Render-Modus auf MultiView setzen
Wählen Sie unter XR-Plug-in-Verwaltung den Eintrag Projektvalidierung und klicken Sie auf Alle korrigieren, um die erforderlichen Einstellungen abzuschließen (dies kann auch übersprungen und später manuell erstellt werden), wie unten dargestellt:

In der Projektvalidierung auf „Alle korrigieren“ klicken
Hinweis:
- Ein Klick auf Alle korrigieren erstellt die erforderlichen GameObjects in der aktuell geöffneten Szene; daher müssen Sie die Hauptkamera und das Richtungslicht in der Szene löschen.
- Dieses Beispiel korrigiert nur UIOrientation.LandscapeLeft; alles Weitere wird manuell erstellt.
Den Keystore konfigurieren
Die PICO-Entwicklung erfordert einen Keystore. Gehen Sie zu Player → Tab Android → Veröffentlichungseinstellungen → Keystore-Verwaltung, erstellen Sie einen neuen Keystore und schließen Sie die Einstellungen ab, wie unten dargestellt:

In der Keystore-Verwaltung einen neuen Keystore erstellen
Firmenname und Produktname festlegen
Die PICO-Entwicklung erlaubt nicht den Standardwert defaultCompany. Setzen Sie im Tab Player den korrekten Firmennamen und Produktnamen, wie unten dargestellt:

Firmenname und Produktname festlegen
Qualitätsoptionen konfigurieren
Wählen Sie in Projekteinstellungen den Tab Qualität und setzen Sie Kantenglättung = Deaktiviert, Fester DPI-Faktor für Auflösungsskalierung = 0,7 und VSync-Anzahl = Nicht synchronisieren, wie unten dargestellt:

Im Tab Qualität die Kantenglättung deaktivieren und DPI-Faktor sowie VSync festlegen
Die AppID eintragen
Wählen Sie im Unity-Menü PICO → Plattform → Plattformeinstellung, um das Einstellungsfenster zu öffnen, und tragen Sie die auf der PICO-Entwicklerplattform beantragte AppID in Paste your App ID here ein; siehe Entwicklerkonto, Organisation und App erstellen.

Die AppID in den PICO-Plattformeinstellungen eintragen
Grafik konfigurieren
Wählen Sie in Projekteinstellungen den Tab Grafik, wählen Sie die Plattform Android und konfigurieren Sie sie wie unten dargestellt:

Die Android-Plattform im Tab Grafik konfigurieren
Player konfigurieren
Wählen Sie in Projekteinstellungen den Tab Player, wählen Sie die Plattform Android, setzen Sie Farbraum = Gamma, deaktivieren Sie Automatische Grafik-API und behalten Sie nur Vulkan bei; die übrigen Einstellungen sind wie unten dargestellt:

Den Farbraum auf Gamma setzen und für die Grafik-API nur Vulkan beibehalten
Scrollen Sie im aktuellen Tab weiter nach unten und setzen Sie Mindest-API-Level = Android 10.0, Skripting-Backend = IL2CPP, API-Kompatibilität = .NET Standard 2.1 und Zielarchitektur = ARM64; die übrigen Einstellungen sind wie unten dargestellt:

Mindest-API-Level, Skripting-Backend, API-Kompatibilität und Zielarchitektur festlegen
Scrollen Sie im aktuellen Tab weiter nach unten und setzen Sie Aktive Eingabeverarbeitung = Input System-Paket (Neu); die übrigen Einstellungen sind wie unten dargestellt:

Aktive Eingabeverarbeitung auf „Input System-Paket (Neu)“ setzen
Schritt 6: Die Szene erstellen
Erstellen Sie eine brandneue Szene in Unity und löschen Sie die Hauptkamera und das Richtungslicht. Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie und wählen Sie im Popup-Menü XR → XR Origin (VR), um die erforderlichen XR-Objekte zu erstellen.
Wählen Sie das Objekt XR Origin (VR) aus und fügen Sie über Komponente hinzufügen im Fenster Inspektor die Komponente PXR_Manager hinzu, und konfigurieren Sie deren zugehörige Eigenschaften wie unten dargestellt:

Die Komponente PXR_Manager auf XR Origin (VR) hinzufügen und konfigurieren
Wählen Sie das Objekt XR Origin (VR) aus und setzen Sie in der Komponente XR Origin des Fensters Inspektor den Tracking-Ursprungsmodus auf Boden; die übrigen Eigenschaften sind wie unten dargestellt:

Den Tracking-Ursprungsmodus der Komponente XR Origin auf Boden setzen
Wählen Sie die Hauptkamera (das untergeordnete Element der zweiten Ebene von XR Origin (VR)) aus und setzen Sie die zugehörigen Eigenschaften der Komponente Camera im Fenster Inspektor, wie unten dargestellt:

Die Eigenschaften der Camera-Komponente der Hauptkamera unter XR Origin (VR) festlegen
Klicken Sie im Fenster Hierarchie mit der rechten Maustaste auf Leeres GameObject erstellen, um ein leeres Objekt namens LCCManager zu erstellen, normalisieren Sie dessen Transform und hängen Sie über Komponente hinzufügen das Skript LCCManager an, wie unten dargestellt:

Das leere Objekt LCCManager erstellen und das Skript LCCManager anhängen
Klicken Sie im Fenster Hierarchie mit der rechten Maustaste auf Leeres GameObject erstellen, um ein weiteres leeres Objekt namens LCCRenderer zu erstellen, und setzen Sie dessen Transform mit Rotation.x = -90 und Scale.x = -1, wie unten dargestellt:

Das leere Objekt LCCRenderer erstellen und Rotation.x = -90, Scale.x = -1 festlegen, um das Koordinatensystem auszurichten
Rotation.x = -90 und Scale.x = -1 sind die Ausrichtungstransformation vom LCC-Daten-Koordinatensystem (Z-up, rechtshändig) zum Unity-Koordinatensystem (Y-up, linkshändig); siehe „LCC-Daten-Koordinatensystem“ in Einführung in das Unity SDK.
Schreiben Sie ein C#-Skript namens LCCRenderer.cs mit folgendem Code:
using LCCCore;
using UnityEngine;
using UnityEngine.XR;
public class LCCRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
private void Awake()
{
XRSettings.eyeTextureResolutionScale = 0.8f; // Texturauflösung senken, um die Leistung zu verbessern
}
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.Pico);
m_renderer = m_manager.GetRender(this.gameObject.transform);
m_renderer.Load($"{Application.persistentDataPath}/LccData/meta.lcc2", onProgress, onLoaded);
#endif
}
private void onProgress(float v)
{
Debug.Log("Fortschritt:" + v);
}
private void onLoaded()
{
m_manager.SetStartLod(2);
m_renderer.SetEnvironment(false);
Debug.Log("Daten geladen");
}
}
Hängen Sie dieses Skript im Fenster Hierarchie an das GameObject LCCRenderer an, ziehen Sie anschließend im Fenster Inspektor das GameObject LCCManager auf die Eigenschaft Manager des Skripts und tragen Sie abschließend den Pfad der LCC-Datei ein.

Das Skript LCCRenderer anhängen und Manager sowie Dateipfad binden
Um das Debuggen im Unity-Editor und das direkte Verpacken auf ein Android-Gerät zu erleichtern, verwendet der Code Kompilierungsmakros zur Unterscheidung der Laufzeitumgebung: Im Editor wird der durch m_FilePath angegebene Pfad verwendet; auf dem Android-Gerät wird die On-Device-Datenquelle genutzt. Die On-Device-Daten werden wie folgt abgelegt:
- Führen Sie die verpackte App zunächst einmal auf dem PICO-Gerät aus.
- Nachdem die App installiert ist, öffnen Sie deren Datenverzeichnis (im Allgemeinen PICO-Gerätespeicher → Android → data → App-BundleID → Files; das konkrete Verzeichnis entnehmen Sie dem Android-App-Installationspfad) und erstellen Sie unter dem Unterverzeichnis Files einen Ordner
LccData. - Kopieren Sie alle LCC-Datenquellen in den Ordner
LccData.
Hinweis:
- In der Praxis wird empfohlen, die Datenquelle der PICO-App auf einem Server abzulegen, anstatt sie direkt in die App zu verpacken.
- Das Gerät Pico 4 Ultra rendert etwa 700.000 Gauß-Primitive gleichzeitig auf dem Bildschirm, also rund zwei Größenordnungen weniger als die etwa 25 Millionen auf dem PC. Es wird hauptsächlich für das Rendering und die Anzeige kleiner Szenen und einzelner Objekte empfohlen; große Szenen laufen über PC-Streaming flüssiger.
- Beim Rendern großer LCC-Szenen wird empfohlen, StartLOD auf
2zu setzen und die Anzeige der Umgebungsdaten zu deaktivieren (wie im Beispielcode).
Weiterführende Referenzen
- Zur Projekteinrichtung und Leistungsoptimierung siehe Leitfaden zur Optimierung der Projekteinstellungen und Leitfaden zu den Rendering-Leistungsparametern.
- Zu weiteren PICO-Entwicklungsworkflows siehe die offizielle Dokumentation: PICO-Entwicklerdokumentation.