Echte Normalen für 3DGS mit einem Proxy Mesh liefern
Überblick
ProxyMesh ist eine Funktion der Pro Edition von LCC4Unreal. Es liefert über ein platziertes Proxy Mesh echte Tiefen- und Normaleninformationen und ist der einzige Normalenmodus mit echter Formmodellierung. Es gilt für jedes Format der LCC2-Pipeline (.lcc2 / .sog / .spz / .ply). Zur Lizenzierung siehe Editionen und Lizenzierung.
Hinweis: ProxyMesh erfordert eine gültige Lizenz. Ohne Lizenz fällt es automatisch auf den Modus Fixed zurück.
Was ein Proxy Mesh ist
3DGS-Daten haben keine eigenen Oberflächennormalen und schreiben nichts in den GBuffer, sie können daher nicht an regulären Lichtberechnungen teilnehmen. Aufgabe des Proxy Mesh ist es, Geometrie zu liefern, deren Form zum 3DGS passt. Das Plugin entnimmt ihr Tiefe, Normalen und die Materialeigenschaften im GBuffer und übergibt sie an die Beleuchtung und Nachbearbeitung der Engine; das Mesh selbst erscheint nie im Endbild.
3DGS-Daten Proxy Mesh
(Farbe, Deckkraft) (Tiefe, Normalen, Materialeigenschaften)
│ │
│ ▼
│ In den GBuffer geschrieben
│ │
│ ┌───────────────┴───────────────┐
│ ▼ ▼
│ Beleuchtung der Engine Nachbearbeitung, die vom
│ (Directional, Point, Schatten) GBuffer abhängt
│ │ (Reflexion, Refraktion usw.)
│ └───────────────┬───────────────┘
▼ ▼
Farbquelle ─────────────────▶ Endbild zusammensetzen
│
▼
Das Proxy Mesh selbst ist unsichtbar
Anders gesagt: Die Farbe im Bild kommt vom 3DGS, die Lichtreaktion vom Proxy Mesh.
Die Herkunft des Mesh ist nicht eingeschränkt. Das Plugin liest nur dessen Rendering-Ergebnis und interessiert sich nicht dafür, wie es entstanden ist. Häufige Quellen:
| Quelle | Beschreibung |
|---|---|
| Zusammen mit dem 3DGS erzeugtes Näherungs-Mesh | Vom Aufnahme-Workflow ausgegebenes Mesh; passt der Form am nächsten und ist die erste Wahl |
| Aus dem 3DGS konvertiertes Mesh | Mit einem Drittanbieter-Werkzeug aus dem 3DGS rekonstruiertes Mesh |
| Manuell erstelltes Mesh | In einer DCC-Software nach der 3DGS-Form modelliert, geeignet für Szenen, die präzise Kontrolle brauchen |
| Aus einfachen Primitiven zusammengesetzt | Grobe Volumen aus Cube, Plane und weiteren einfachen Meshes, geeignet für regelmäßige Formen wie Gebäude und Boden |
Die einzige Anforderung ist, dass das Mesh der 3DGS-Form im Raum entspricht. Je genauer die Übereinstimmung, desto realistischer die Beleuchtung. Ist die Abweichung zu groß, passt die Lichtrichtung nicht mehr zur im Bild sichtbaren Form.
Das Mesh braucht keine hohe Genauigkeit: vereinfachte Low-Poly-Geometrie genügt, solange Volumen und Ausrichtung korrekt sind.
Was das Material bewirkt
Die Materialeigenschaften des Proxy Mesh werden mit dem GBuffer gelesen, sie entscheiden also, wie die 3DGS-Oberfläche auf Licht reagiert.
Für rein grundlegende Beleuchtung genügt ein Whitebox-Material, Texturen sind nicht nötig. Für Effekte, die von Materialeigenschaften abhängen, an der entsprechenden Stelle des Mesh das passende PBR-Material verwenden, zum Beispiel:
- Reflexion und Refraktion von Wasser: am Wasserbereich ein Wassermaterial mit passenden Werten für Metallic und Roughness verwenden
- Metallische Glanzlichter: an metallischen Strukturen passende Werte für Metallic und Roughness setzen
- Raue Oberflächen: hohe Roughness verwenden, um Glanzlichter zu unterdrücken, die nicht auftreten sollten
Passen die Materialeigenschaften nicht zur tatsächlichen Form, passt das Beleuchtungsergebnis nicht zum 3DGS-Erscheinungsbild im Bild, etwa Glanzlichter auf einer Wand, die rau sein sollte.
Schnelle Einrichtung
Schritt 1: Den ProxyMesh-Actor platzieren
- Im Editor über das Panel des LCC4Unreal-Plugins einen
ALCC2ProxyMesh-Actor hinzufügen - Seiner
StaticMeshComponentein StaticMesh zuweisen (beliebige Quelle, siehe Abschnitt oben) - Die Position des ProxyMesh so anpassen, dass es sich im Raum mit dem 3DGS-Inhalt überlagert

Einen ALCC2ProxyMesh-Actor in der Szene platzieren
Schritt 2: Den ProxyMesh-Modus aktivieren
- Den Actor der LCC2-Pipeline auswählen (
ALCC2Actor/ASogActor/ASpzActor/APlyActor) - LightMode im Details-Panel suchen und auf Lit ändern
- Im Details-Panel die Kategorie Lighting von LCC2Component suchen
NormalModeaufProxyMeshsetzen

Lit aktivieren und NormalMode auf ProxyMesh setzen
Schritt 3: Prüfen
- Die Lichtrichtung der Szene ändern und beobachten, ob das 3DGS Eigenverschattung erzeugt
- Prüfen, ob das Proxy Mesh im Endbild verborgen ist

Beleuchtungsergebnis, nachdem ProxyMesh echte Normalen liefert
Beispiel für die Verwendung von ProxyMesh

Der Einrichtungsvorgang von ProxyMesh und das Beleuchtungsergebnis
ALCC2ProxyMesh
Der Proxy-Actor, der bei NormalMode = ProxyMesh mit den Actors der LCC2-Pipeline zusammenarbeitet.
Eigenschaften
| Eigenschaft | Beschreibung |
|---|---|
| StaticMeshComponent | Das Static Mesh, das Tiefe und Normalen der Szene liefert |
Standard-Transform
- Scale (100, 100, 100): Die Mesh-Einheit ist standardmäßig Meter, während UE Zentimeter verwendet
- Rotation (0, 180, 0): Kompensiert, dass die Mesh-Erzeugungs-Pipeline die entgegengesetzte Vorwärtsachse zu UE hat
Verhalten
- Aktiviert das CustomDepth-Rendering automatisch, wenn das StaticMesh gültig ist
- Protokolliert eine Warnung und deaktiviert CustomDepth, wenn das StaticMesh leer ist
Lizenzprüfung
Der ProxyMesh-Modus erfordert eine Lizenz der Pro Edition, siehe Editionen und Lizenzierung. Ohne Lizenz fällt er automatisch auf den Modus Fixed zurück, und der gespeicherte Eigenschaftswert wird nicht verändert.
Umschalten zur Laufzeit
NormalMode kann zur Laufzeit aus Blueprint oder C++ geändert werden und wird im nächsten Bild wirksam.
Verwendung in Blueprint
Ein ProxyMesh erzeugen
SpawnActor->Class: ALCC2ProxyMesh
→ Das StaticMesh der StaticMeshComponent setzen
→ Die Position an den 3DGS-Inhalt ausrichten
Modi umschalten
LCC2Component->NormalMode = ProxyMesh
Bewährte Vorgehensweisen
- Mesh-Abdeckung: sicherstellen, dass das Proxy Mesh denselben räumlichen Bereich abdeckt wie der 3DGS-Inhalt.
- Mesh-Genauigkeit: eine vereinfachte Annäherung an die Szenengeometrie genügt, hohe Polygonzahlen sind nicht nötig.
- Mehrere Actors: Es können mehrere
ALCC2ProxyMesh-Actors platziert werden, um verschiedene Bereiche abzudecken. - Keine explizite Bindung: Das ProxyMesh muss nicht mit einem bestimmten Actor verknüpft werden, die Zuordnung erfolgt automatisch.
- Rückwärtskompatibilität: Projekte, die ProxyMesh nicht verwenden, verhalten sich genau wie vor dem Upgrade, ohne zusätzlichen Aufwand.
Fehlerbehebung
ProxyMesh hat keine Wirkung
- Prüfen, ob
NormalModeaufProxyMeshgesetzt ist - Prüfen, ob die Lizenz gültig ist
- Sicherstellen, dass dem ProxyMesh-Actor ein gültiges StaticMesh zugewiesen ist
- Prüfen, ob sich das ProxyMesh im Raum mit dem 3DGS-Inhalt überlagert
Warnung: „has a null StaticMesh“
Dem ALCC2ProxyMesh-Actor ein StaticMesh zuweisen. Die Warnung wird gedrosselt und nur einmal pro Instanz ausgegeben.
Whitebox-Farbe im Endbild sichtbar
- Sicherstellen, dass mindestens eine LCC2Component im ProxyMesh-Modus ist
LCC2.ProxyMeshDepthEpsilonanpassen, wenn die Tiefenzuordnung zu streng ist
Beleuchtungsergebnis ist falsch
- Prüfen, ob die Normalen des Proxy Mesh eine sinnvolle Annäherung an die tatsächliche Szenengeometrie sind
Schatten erscheinen nur in der Nähe und brechen in der Ferne ab
Ein Problem der Engine. Den ProxyMesh-Actor auswählen und Far Shadow an der StaticMeshComponent aus- und wieder einschalten, um vollständige Schatten wiederherzustellen.