Entwicklungsanleitung für das Umschalten des Mip-Rendering-Modus
Mip und Non-Mip sind zwei technische Pfade für die Rekonstruktion und das Rendering von 3DGS. Das Rendering-Ergebnis ist am besten, wenn Rekonstruktion und Rendering denselben technischen Pfad verwenden. Das LCC Unity SDK unterstützt das dynamische Umschalten des Rendering-Modus zur Laufzeit; die vollständigen Schritte werden im Folgenden beschrieben.
Schritt 1: Die Szene und die GameObjects erstellen
Erstellen Sie in Unity eine brandneue Szene. Unity erstellt standardmäßig die Hauptkamera und das Richtungslicht.
Hauptkamera einrichten
Wählen Sie die Hauptkamera im Fenster Hierarchie aus und legen Sie deren Eigenschaften im Fenster Inspektor wie unten dargestellt fest.

Die Eigenschaften der Hauptkamera festlegen
LCCManager erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, wählen Sie im Popup-Menü Leeres GameObject erstellen, um ein leeres GameObject zu erstellen, benennen Sie es LCCManager, normalisieren Sie dessen Transform und fügen Sie über Komponente hinzufügen das Skript LCCManager hinzu.

Das GameObject LCCManager erstellen und das Skript LCCManager hinzufügen
LCCRenderer erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, wählen Sie Leeres GameObject erstellen, um ein leeres GameObject zu erstellen, benennen Sie es LCCRenderer und setzen Sie dessen Transform auf Rotation.x = -90 und Scale.x = -1.

LCCRenderer erstellen und dessen Transform festlegen (Rotation.x = -90, Scale.x = -1)
Hinweis:
Die Transform-Einstellungen des GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) richten es am LCC-Daten-Koordinatensystem aus. Details zur Ausrichtung am Koordinatensystem finden Sie unter „LCC-Daten-Koordinatensystem“ in Einführung in das Unity SDK.
Den Umschalt-Button erstellen
Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Fensters Hierarchie, wählen Sie im Popup-Menü UI → Button, um einen Button namens BtnMipSwitch zu erstellen.
Schritt 2: Ein Skript zum Umschalten des Rendering-Modus schreiben
Erstellen Sie ein neues C#-Skript namens MipSwitch.cs mit folgendem Code:
using LCCCore;
using UnityEngine;
using UnityEngine.UI;
public class MipSwitch : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
public Button m_BtnMipSwitch;
private LCCCore.Renderer m_renderer;
private MipMode m_mipMode;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
Debug.Log("Gestartet ");
// Muss in den Edit-Modus wechseln
m_manager.SetEditorMode(true);
m_mipMode = MipMode.Mip;
m_BtnMipSwitch.onClick.AddListener(onMipSwitch);
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] Datei-Ladefortschritt: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] Datei geladen");
}
private void onMipSwitch()
{
if (m_mipMode == MipMode.Mip)
{
m_mipMode = MipMode.Non_Mip;
}
else
{
m_mipMode = MipMode.Mip;
}
m_manager.SetMipMode(m_mipMode);
}
}
Hinweis:
Dieses Beispiel initialisiert in
Startden ModusMipMode.Mipund bindet das Klick-Ereignis für BtnMipSwitch; jeder Klick wechselt zwischenMipundNon_Mipund wird überSetMipMode()sofort wirksam.
Schritt 3: Das Skript anhängen und die Eigenschaften festlegen
- Hängen Sie das Skript
MipSwitch.csim Fenster Hierarchie an das GameObject LCCManager. - Ziehen Sie im Fenster Inspektor das GameObject LCCManager auf die Eigenschaft Manager des Skripts.
- Tragen Sie den LCC-Dateipfad in die Eigenschaft File Path des Skripts ein.
- Ziehen Sie den Button BtnMipSwitch auf die Eigenschaft Btn Mip Switch des Skripts.

Das MipSwitch-Skript anhängen und die Eigenschaften Manager, File Path sowie BtnMipSwitch festlegen
Schritt 4: Ausführen
Klicken Sie im Fenster Spiel auf die Schaltfläche Play und anschließend auf den Button BtnMipSwitch, um zu sehen, wie das Szenen-Rendering in Echtzeit zwischen dem Mip- und dem Non-Mip-Modus umschaltet.

Ein Klick auf den Button schaltet nach dem Ausführen in Echtzeit zwischen dem Mip- und Non-Mip-Rendering-Modus um
Auswahlempfehlungen
- Das Rendering-Ergebnis ist nur dann am besten, wenn die Rekonstruktion von 3DGS und das Rendering von 3DGS denselben technischen Pfad verwenden.
- Nach dem Umschalten in den Non-Mip-Modus ist das Rendering-Detail in der Regel besser, die Rendering-Leistung wird jedoch bis zu einem gewissen Grad beeinträchtigt.
Mip-bezogene APIs
Das LCC Unity SDK stellt über LCCManager die folgenden APIs rund um das Umschalten des Mip-Rendering-Modus bereit.
SetMipMode
// Rückgabewert: void
public void SetMipMode(MipMode _mipMode)
Schaltet den Mip-Rendering-Modus um. Der Modus Mip verwendet Mipmap-Sampling (Standard), und der Modus Non_Mip deaktiviert Mipmap.
| Parameter | Typ | Beschreibung |
|---|---|---|
_mipMode | MipMode | Zielmodus, entweder Mip oder Non_Mip |
Verwendungsbeispiel:
m_manager.SetMipMode(MipMode.Non_Mip); // Mipmap deaktivieren
m_manager.SetMipMode(MipMode.Mip); // Mipmap wiederherstellen
Hinweise:
- Wenn der aktuelle Modus mit dem übergebenen Modus identisch ist, kehrt die Methode ohne wiederholten Aufwand direkt zurück.
Das Enum MipMode ist wie folgt definiert:
public enum MipMode { Mip, Non_Mip }
SetEditorMode
// Rückgabewert: void
public void SetEditorMode(bool _isEditor)
Schaltet den Editor-Modus um. Dieses Beispiel ruft SetEditorMode(true) vor dem Laden der Daten auf.
| Parameter | Typ | Beschreibung |
|---|---|---|
_isEditor | bool | Ob der Editor-Modus aktiviert werden soll |
Verwendungsbeispiel:
m_manager.SetEditorMode(true);
Hinweise:
- Nur auf PC-/Mac-Plattformen unterstützt.