Häufige Fehler bei UE5-3DGS nach Symptom eingrenzen
Diese Seite ist nach dem Symptom gegliedert, das zu sehen ist, und jeder Eintrag nennt die möglichen Ursachen, wie sie zu bestätigen sind und wie sie zu beheben sind.
Zum Ansehen von Logs und zur Nutzung der Debug-Werkzeuge siehe Logs und Diagnose. Für Beratungsfragen (welche Formate unterstützt werden, der Unterschied zwischen den beiden Pipelines) siehe FAQ.
Inhalt
| Kategorie | Behandelte Symptome |
|---|---|
| Diese zwei Dinge zuerst tun | Bei jedem Problem empfohlen |
| Fehler beim Laden der Daten | Nach Load passiert nichts, nach der Paketierung unsichtbar, Paketierung eines Blueprint-Projekts, falsche GIS-Position, Absturz bei sehr großen Daten |
| Nichts oder nur Teile dargestellt | Überhaupt nichts sichtbar, ferner Inhalt fehlt, Löcher am Rand, leeres SceneCapture, von Wasser verdeckt |
| Probleme mit der Bildqualität | Ghosting, Flackern, Löcher, graue Farben, Nähte, eine Linie durch die Szene |
| Probleme mit der Beleuchtung | Überbelichtung, keine Formschattierung, ProxyMesh ohne Wirkung, abgeschnittene Schatten, verborgene Effekte |
| Änderungen von Parametern haben keine Wirkung | Kontrollkästchen nicht angehakt, vollständiges Laden, Beschneiden und Schneiden, Kugelflächenfunktionen, Lizenzkontingent |
| Probleme mit der Leistung | Niedrige Bildrate, hoher Grafikspeicherbedarf, Ruckeln beim Laden, falsche Occlusion |
| Kollision und Navigation | Line Traces treffen nicht, Charakter fällt oder rutscht durch, NavMesh wird nicht erzeugt |
| Abstürze | Assertion-Fehler ArraySliceIndex |
| Probleme mit der Lizenzierung | Status ist kein grünes Häkchen, verschiedene Lizenzfehler |
| Build und Paketierung | Fehlende Binaries, fehlendes Precompiled Manifest, Fehler bei der Paketierung, Android |
| Weiterhin nicht gelöst | Was vor einer Problemmeldung zusammenzustellen ist |
Diese zwei Dinge zuerst tun
Die meisten Probleme lassen sich innerhalb dieser zwei Schritte eingrenzen, daher bei jedem Symptom zuerst durchlaufen.
- Das Output Log öffnen und das Plugin-Log lesen. Fehler beim Laden, falsche Pfade und Probleme mit der Lizenzierung hinterlassen dort alle klare Informationen. Siehe Das Plugin-Log ansehen.
- Bestätigen, dass die Daten erfolgreich geladen wurden. Den Actor auswählen und prüfen, ob MetaInfo im Details-Panel Inhalt hat (Total Splats größer als 0). Leer bedeutet, dass die Daten nicht hereingekommen sind, daher unmittelbar weiter zu Fehler beim Laden der Daten.
Fehler beim Laden der Daten
Symptom: nach dem Klick auf Load erscheint nichts
Der Reihe nach prüfen:
| Mögliche Ursache | Wie sie zu bestätigen ist | Behebung |
|---|---|---|
| Der Pfad existiert nicht oder ist falsch geschrieben | Das Log zeigt LCC file :<path> does not exist. | Den Pfad prüfen. Relative Pfade beziehen sich auf Content |
| Bei LCC1-Daten fehlen Dateien | Das Log zeigt Load Meta.lcc error oder meta.lcc file :<path> load error | data.bin und index.bin müssen neben der .lcc-Datei liegen; fehlt eine davon, schlägt es fehl |
| Der falsche Actor wird genutzt | Kein ausdrücklicher Fehler, aber ein leeres Bild | .lcc2 nutzt ALCC2Actor, .lcc nutzt ALCCActor, und Einzeldateiformate haben jeweils ihren eigenen Actor. Siehe FAQ |
| Das Format wird nicht unterstützt | Das Log zeigt LCC4Unreal do not support this file format! | Bestätigen, dass die Erweiterung im unterstützten Umfang liegt, siehe Einführung |
Die .ply ist kein 3DGS-Format | Das Log gibt an, dass die PLY abgelehnt wurde | Das Plugin unterstützt nur .ply mit 3DGS-Properties; reguläre geometrische Punktwolken lassen sich nicht laden |
Symptom: im Editor in Ordnung, nach der Paketierung unsichtbar
Zwei Dinge der Reihe nach prüfen.
Erstens, ob ein absoluter Pfad genutzt wurde. Absolute Pfade funktionieren nur auf dem lokalen Rechner und existieren auf einem anderen nicht mehr. Auf einen relativen Pfad wechseln, relativ zum Verzeichnis Content des Projekts, etwa Scenes/Tower/meta.lcc2.
Zweitens, ob das Datenverzeichnis in den Einstellungen zur Paketierung konfiguriert ist. Die beiden Einstellungen dienen unterschiedlichen Zwecken, daher nach Bedarf wählen:
| Einstellung | Zweck |
|---|---|
Additional Non-Asset Directories To Copy | Die Daten werden als reguläre Dateien in die Paketausgabe kopiert |
Additional Non-Asset Directories To Package | Die Daten werden in die pak-Datei gepackt |
Die zweite nutzen, um LCC-Daten in die pak zu packen, und die erste, wenn die Daten nur neben der Paketausgabe mitgeliefert werden müssen. Beide liegen unter ProjectSettings > Packaging.
Nach dem Konfigurieren erneut paketieren und prüfen, ob die Daten wirklich in der Paketausgabe liegen. Zur Konfiguration im Einzelnen siehe Schnellstart.
Symptom: nach der Paketierung eines Blueprint-Projekts arbeitet das Plugin nicht
Reine Blueprint-Projekte werden nur im Editor unterstützt, nicht für die Paketierung. Für die Paketierung ist ein C++-Projekt erforderlich.
Symptom: die geografische Position ist falsch, der GIS-Modus hat keine Wirkung
Diese Punkte prüfen:
- Ob die Daten RTK-Informationen enthalten. Mit
GetMetaInfo().IsRTK()prüfen; zeigt das LogThis lcc does not have RTK information!, haben die Daten keine geografischen Informationen - Beim Aktivieren aus Code
SetGeoPlacement(true)aufrufen, was automatisch neu lädt, damit die Einstellung wirksam wird. Eine unmittelbare Zuweisung anbEnableGeoPlacelöst kein Neuladen aus - Bei einer versetzten Position
GeoLocationOffsetzur Feinanpassung nutzen
Zu den Einrichtungsschritten zusammen mit Cesium siehe Integration von Drittanbieter- und Engine-Plugins.
Symptom: Absturz beim Navigieren in sehr großen LCC2-Daten
Auf v1.0.0 ist das ein bekannter Fehler dieser Version (ein Überlauf eines GPU-Buffers). Auf v2.x oder höher aktualisieren.
Symptom: array-bezogener Fehler beim Laden einer großen PLY
Ein bekannter Fehler von v3.0.0, behoben in v3.3.0 und höher; die Version aktualisieren.
Außerdem können Dateien über 2 GB nicht laden, wenn eine PLY keine Kugelflächenfunktionen hat, daher ist eine Konvertierung in das LCC2-Format empfohlen.
Nichts oder nur Teile dargestellt
Symptom: der Actor liegt in der Szene, aber kein Inhalt ist sichtbar
| Mögliche Ursache | Wie sie zu bestätigen ist | Behebung |
|---|---|---|
| Die Daten wurden nicht geladen | Siehe den vorigen Abschnitt | Zuerst das Problem beim Laden lösen |
LoadMode steht auf None | Das Details-Panel prüfen | Zurück auf Both stellen |
| Die Kamera liegt jenseits der Renderdistanz | Näher herangehen und sehen, ob es erscheint | Max Distance erhöhen |
| Ein Clipping-Volumen hat den Inhalt weggeschnitten | bEnabled am Clipping-Volumen zeitweise deaktivieren | Den Beschneidungsmodus prüfen, denn Inside und Outside wirken entgegengesetzt, siehe EClipType |
| Eine Schnittebene hat den Inhalt weggeschnitten | Die Schnittebene zeitweise deaktivieren | Mode und die Ausrichtung der Ebene prüfen, siehe ESectionType |
GlobalAlpha ist 0 | Das Details-Panel prüfen | Zurück auf 1.0 stellen |
Alles liegt in den Umgebungsdaten, aber OnlyMain ist gesetzt | LoadMode umschalten und vergleichen | Nach den tatsächlichen Daten wählen, siehe ELoadMode |
Symptom: ferner Inhalt fehlt und erscheint erst beim Näherkommen
Das ist das normale Ergebnis von LOD und der Distanzgrenze, kein Fehler. Um fernen Inhalt ebenfalls darzustellen:
- Max Distance erhöhen, um den Preis geringerer Leistung
- Level Factor senken, damit auf derselben Distanz höhere Genauigkeit genutzt wird
- Nebel kann helfen, die Distanzgrenze zu verbergen
Symptom: Löcher am Bildschirmrand beim schnellen Drehen der Ansicht
Das Vorladen der Knoten kommt der Änderung der Ansicht nicht nach. Die LCC-Pipeline kann Add Extra Preload Nodes aktivieren, was zusätzliche Vorlade-Knoten anhängt, um den Preis von mehr zu rendernden Knoten.
Symptom: SceneCapture oder die Minimap ist leer
Zuerst SceneCaptureComponent Support in den Projekteinstellungen aktivieren. Es ist standardmäßig deaktiviert und hat leichte Leistungskosten.
Um die Render-Strategie eines SceneCapture aus Code getrennt zu setzen, siehe SetSceneCaptureRenderMode; zu beachten ist, dass diese Gruppe von Schnittstellen nur in der LCC-Pipeline arbeitet.
Symptom: 3DGS wird von der Wasseroberfläche verdeckt
Verursacht durch die Tiefenbehandlung des Single-Layer-Water-Materials. SingleLayerWater Support aktivieren, siehe Unterstützung von Single Layer Water.
Probleme mit der Bildqualität
Symptom: Ghosting und Schlieren bei Bewegung
Verursacht durch die Methode der Kantenglättung. TSR und TAA verlassen sich auf History-Frames für die zeitliche Akkumulation, ein bewegtes 3DGS lässt daher leicht das vorige Bild zurück.
Der Reihe nach ausprobieren und das Gleichgewicht zwischen Qualität und Ghosting finden:
None → FXAA → MSAA → TAA → TSR
Enthält die Szene nur 3DGS, kann unmittelbar None gesetzt werden, was Ghosting beseitigt und die Kosten der Kantenglättung spart. Zum Standardwert jeder Pipeline und dazu, wo er zu setzen ist, siehe Leistungsparameter.
Symptom: das Bild flackert und Kanten zittern
Diese Punkte in der Reihenfolge des Nutzens ausprobieren:
- Die Methode der Kantenglättung prüfen. Das ist die häufigste Ursache, und für die LCC2-Pipeline ist TSR empfohlen, siehe Leistungsparameter.
- LCC-Pipeline: Sort Factor senken, um häufiger zu sortieren. Ist die Sortierfrequenz zu niedrig, aktualisiert sich die Vorne-Hinten-Reihenfolge der Transluzenz nur alle paar Bilder, was sich als leichtes Zittern zeigt.
- Small Splat Threshold prüfen; ein zu großer Wert macht den Hintergrund körnig.
- Flackern feiner Strukturen beim Ein- und Ausfahren der Kamera: Mip Filter aktivieren, was einen Tiefpassfilter mit Deckkraft-Ausgleich anwendet und über verschiedene Maßstäbe stabiler ist. Bei
.ply/.spz/.sogist er standardmäßig deaktiviert.
Symptom: das Bild hat Löcher und wirkt dünn
SplatScale ist zu niedrig gesetzt. Der Standardwert 1.0 ist die Obergrenze; ein Senken verringert Overdraw und hebt die Bildrate, aber kleinere Quads legen Lücken frei. Ihn etwas zurück erhöhen.
Symptom: die Farben wirken grau und flach
Über die Farbparameter behandeln, siehe Bildeinstellungen. Der gängige Weg ist, Contrast leicht zu erhöhen oder die dunklen Bereiche mit Gamma aufzuhellen. Zur Code-Schnittstelle siehe Farbanpassung.
Symptom: deutliche Nähte im Bild (LCC-Pipeline)
LCC-Dateiversion 5.0 und höher behandelt Nähte automatisch. Bei Daten älterer Versionen Nahtentfernung manuell aktivieren, was der Eigenschaft bEnableSeamCutting entspricht.
Symptom: eine Linie erscheint durch die Szene
Die Skalierung des Actors prüfen. Die LCC-Familie der Actors (ALCCActor, ALCC2Actor, ASogActor, ASpzActor, APlyActor) unterstützt nur gleichmäßige Skalierung.
Keine ungleichmäßige Skalierung wie diese nutzen:
- Mit negativen Werten, etwa
(-1, 1, 1) - Mit ungleichen Achsen, etwa
(2, 1, 3)
Alle drei Achsen müssen gleich bleiben, etwa (1, 1, 1) oder (2, 2, 2). Ungleichmäßige Skalierung verursacht Rendering-Anomalien, die sich als Linie im Bild zeigen.
Probleme mit der Beleuchtung
Symptom: Überbelichtung nach dem Wechsel auf Lit
Die Farben aufgenommener Daten haben die Beleuchtung des Aufnahmeorts bereits eingebacken, und Szenenlichter legen eine weitere Schicht darüber.
- LCC2-Pipeline: die ursprüngliche Helligkeit mit
LightingScalesenken, siehe Normalen und Beleuchtung - Prüfen, ob die Intensität der Szenenbeleuchtung zu hoch ist
Symptom: keine Formschattierung im Lit-Modus, das Bild wirkt flach
Das ist erwartetes Verhalten. 3DGS-Daten haben keine geometrischen Normalen, und Fixed, ViewFacing und Hemispherical konstruieren Normalen alle näherungsweise, sie können daher nur Änderungen der Gesamthelligkeit erzeugen und keiner von ihnen kann eine Schattierung erzeugen, die der Form folgt. Zur Definition jedes Modus siehe ELCC2NormalGenerationMode.
Nur ProxyMesh kann echte Formschattierung erzeugen. Es erfordert das Erstellen und Platzieren eines Proxy Mesh und erfordert eine Lizenz. Siehe Proxy Mesh und Normalen und Beleuchtung.
Der Unterschied zwischen den drei Näherungsmodi liegt darin, wie sich die Gesamthelligkeit mit Beleuchtung und Blickwinkel ändert, nicht darin, ob es Formschattierung gibt:
Fixed: der gesamte Bereich teilt eine feste Normale, vollständig stabil während der KamerabewegungViewFacing: die Normalen folgen der Kamera, die Gesamthelligkeit ändert sich daher beim Drehen der AnsichtHemispherical: Normalen werden von der Bildschirmposition auf eine feste Halbkugel abgebildet, die Gesamthelligkeit geht daher beim Drehen eines Directional Light gleichmäßiger über als bei den anderen beiden
Symptom: der Modus ProxyMesh ist gesetzt, hat aber keine Wirkung
| Zu prüfender Punkt | Wie er zu bestätigen ist |
|---|---|
| Ob NormalMode auf ProxyMesh steht | Das Details-Panel prüfen |
| Ob die Lizenz gültig ist | Status im Plugin-Panel prüfen; ein grünes Häkchen bedeutet, dass die Lizenz in Ordnung ist. Aus Code bedeutet ein Fixed von GetEffectiveNormalGenerationMode(), dass zurückgestuft wurde |
| Ob das Proxy Mesh ein StaticMesh hat | Das Log zeigt eine Warnung has a null StaticMesh |
| Ob das Proxy Mesh das 3DGS räumlich überlappt | Die Zuordnung wird über die Position beurteilt, keine Überlappung bedeutet daher keine Wirkung |
Siehe Proxy Mesh.
Symptom: die Schattierung erscheint an der falschen Stelle
Das Proxy Mesh weicht zu stark von der tatsächlichen 3DGS-Oberfläche ab. Entweder verbessern, wie genau das Proxy Mesh anliegt, oder auf einen Näherungsmodus der Normalen wechseln, der keine Formschattierung hat, aber stabiler ist.
Symptom: ProxyMesh-Schatten erscheinen nur in der Nähe und verschwinden in der Ferne
Schatten werden durch die Distanz abgeschnitten. Das ist ein Problem der Engine, kein Fehler des Plugins.
Behebung: den ProxyMesh-Actor auswählen und Far Shadow aus- und wieder einschalten, um vollständige Schatten wiederherzustellen. Die Eigenschaft liegt unter der Kategorie Lighting von StaticMeshComponent.
Symptom: riesige fehlerhafte Schatten im Lit-Modus
Näherungsmodi der Normalen erzeugen bei bestimmten Beleuchtungswinkeln Anomalien. Der Reihe nach versuchen:
- NormalMode umschalten, um zu finden, welcher Modus sich korrekt verhält
- Den Winkel des Directional Light anpassen
- Auf den Modus ProxyMesh mit einem gut anliegenden Proxy Mesh wechseln, was das beste Ergebnis liefert
Symptom: die Farben haben sich nach dem Aktivieren von Schatten geändert
Das ist erwartetes Verhalten. Sobald 3DGS externe Beleuchtung empfängt, ändern sich seine Farben mit der Lichtquelle, daher Farbe und Intensität des Directional Light anpassen.
Symptom: die Helligkeit lässt sich nicht anpassen, die ganze Szene ist dunkel
Nutzt das Projekt ein Compositing-Plugin wie Composure, die Optionen zur Nachbearbeitung an der Component deaktivieren und die Belichtung stattdessen über ein Post Process Volume steuern.
Zu den Einstellungen der Belichtung siehe Bildeinstellungen.
Symptom: Niagara-Effekte sind auf dem 3DGS unsichtbar
Die LCC2-Pipeline gibt Tiefe aus, die Occlusion von Effekten ist daher korrekt und dieses Problem tritt normalerweise nicht auf.
Nur die LCC-Pipeline (.lcc-Daten) kann darauf treffen, weil sie keine Tiefe ausgibt und die Vorne-Hinten-Reihenfolge der Transluzenz über die Sortier-Priorität entschieden werden muss. Die Behebung ist, Translucent Sort Priority am Niagara System zu erhöhen, damit es über dem 3DGS gerendert wird.
Symptom: wirrer Inhalt um die Szene herum
Das sind die Umgebungsdaten. LoadMode von Both auf OnlyMain ändern, um nur den Hauptteil zu rendern.
Symptom: das Umschalten des Lichtmodus bewirkt nichts
SetLightMode hat im Punktwolkenmodus keine Wirkung: Es überspringt die Zuweisung und gibt eine Warnung aus. Zuerst zurück in den 3DGS-Modus wechseln.
Symptom: nach dem Wechsel in den Lit-Modus kein Lichteffekt
Die Forward-Rendering-Pipeline (Forward Shading) verfügt nicht über einen GBuffer, daher ist Relighting nicht verfügbar. Das Setzen von LightMode auf Lit hat keine Wirkung.
Zum Deferred-Rendering-Pipeline (Deferred Shading) wechseln, damit der Lit-Modus korrekt funktioniert. In Project Settings > Rendering > Forward Shading das Häkchen entfernen. Hinweis: Das UE-VR-Template aktiviert Forward Shading standardmäßig und muss manuell deaktiviert werden.
Änderungen von Parametern haben keine Wirkung
Symptom: Werte unter Performance wurden geändert, aber nichts hat sich geändert
Jeder Parameter hat links ein Kontrollkästchen, und solange es nicht angehakt ist, nutzt das Plugin seinen eingebauten Standardwert und der eingetragene Wert hat keine Wirkung. Das ist die mit Abstand häufigste Falle.
Zum eingebauten Standardwert jedes Parameters siehe Leistungsparameter.
Symptom: das Ändern der Parameter für vollständiges Laden bewirkt nichts
Use Full Load und Full Load Splat Number werden beim Laden ausgewertet, die Daten müssen daher nach einer Änderung neu geladen werden.
Zum Unterschied zwischen den beiden Ladeverfahren siehe Rendering.
Symptom: das Ändern von Eigenschaften eines Clipping-Volumens oder einer Schnittebene zur Laufzeit bewirkt nichts
bEnabled, Mode und VolumeType haben keinen Setter, nach einer Zuweisung zur Laufzeit muss daher Refresh() an diesem Actor aufgerufen werden. Dasselbe gilt für eine Änderung des Transforms (Position, Rotation) zur Laufzeit.
Das Ändern von Eigenschaften im Details-Panel im Editor aktualisiert automatisch und erfordert keinen manuellen Aufruf.
Siehe ALCCClippingVolume.
Symptom: Kugelflächenfunktionen sind aktiviert, aber das Bild hat sich nicht geändert
- Die Daten können vom Typ
Portablesein, der keine Kugelflächenfunktionen enthält. Mit CanSetShcoef() bestätigen; zu den Typdefinitionen siehe EFileType - SetUseShcoef schlägt im Punktwolkenmodus stillschweigend fehl, daher zuerst zurück in den 3DGS-Modus wechseln
- LCC2 kann die Kugelflächenfunktionen vollständig über SetUseShcoef deaktivieren
Symptom: viele Clipping-Volumen wurden hinzugefügt, aber nur einige werden wirksam
Die kostenlose Edition begrenzt jeden Typ auf 50. Das Log gibt es ausdrücklich an: Unlicensed: enabled clipping volumes limited to 50 .... Zur Lizenzierung siehe Editionen und Lizenzierung.
Probleme mit der Leistung
Zum vollständigen Ablauf des Abstimmens bei niedriger Bildrate siehe Leitfaden zur Leistung; dieser Abschnitt nennt nur schnelle Prüfungen.
Symptom: niedrige Bildrate
Zuerst bestätigen, ob der Engpass das 3DGS ist. Mit stat unit Game / Draw / GPU lesen, dann mit stat XGrids die Kosten von LCC selbst. Ist der Anteil von LCC niedrig, liegt das Problem woanders in der Szene (Beleuchtung, Nachbearbeitung, Blueprint-Logik) und das Abstimmen der LCC-Parameter bringt keine Verbesserung.
Sobald 3DGS als Ursache bestätigt ist, in der Reihenfolge des Nutzens anpassen:
- Level Factor erhöhen (der deutlichste Nutzen)
- Max Distance senken
- Max Splat Num senken
- Start Level erhöhen, um das feinste Level zu überspringen
- Kugelflächenfunktionen deaktivieren
- Wenn nötig auf den Punktwolkenmodus wechseln
Symptom: der Grafikspeicherbedarf ist zu hoch
- Level Factor erhöhen
- Max Splat Num senken
- In der LCC2-Pipeline LCC2 GPU Memory Budget anpassen
- Den Freigabe-Schwellwert Max GPU Usage Percetage For Free anpassen
Zu den Zuweisungsregeln des Grafikspeichers und zum Mechanismus der automatischen Freigabe siehe Rendering. Einzeldateiformate (.sog / .spz / .ply) laden vollständig auf einmal, ihr Grafikspeicherbedarf ist daher konstant und ändert sich nicht mit der Ansicht, siehe Ladegrenzen von Einzeldateiformaten.
Symptom: Ruckeln beim Laden
- Das erstmalige Aktivieren der Kollision hat einmalige Kosten für das Backen, daher in der Ladephase aktivieren und nicht mitten in einer Interaktion des Spielers
- Max Load Collision Distance senken, um nur den benötigten Bereich zu laden
- Die Konfiguration der Threads anpassen, siehe Leistungsparameter
Symptom: falsche Occlusion, wenn mehrere 3DGS sich durchdringen
- LCC-Pipeline: Sortierung der Transluzenz bei mehreren Actors aktivieren
- LCC2-Pipeline: den Tiefenschwellwert anpassen, um zu ändern, wo Tiefe geschrieben wird
Kollision und Navigation
Symptom: Line Traces treffen das 3DGS nicht
| Zu prüfender Punkt | Maßnahme |
|---|---|
| Ob die Daten Kollision enthalten | Einzeldateiformate enthalten keine Kollisionsdaten, siehe Voraussetzungen |
| Ob Kollision aktiviert ist | bEnableCollision anhaken, siehe Aktivieren |
| Ob an dieser Stelle Kollision geladen ist | Mit ShowCollision() das Wireframe ansehen, siehe Visualisierung der Kollision |
| Ob die Trace-Distanz den Laderadius der Kollision übersteigt | Max Load Collision Distance erhöhen |
Zeigt das Log There is neither collision.bin nor collision.lci in the folder, liegt keine Kollisionsdatei im Datenverzeichnis.
LCC1 hat eine weitere Gruppe von Schnittstellen für Strahlentests gegen Punktwolken-Positionen, sie sind aber nicht ausreichend getestet, daher ist die Nutzung von Kollision zusammen mit den Strahlentests der Engine empfohlen, siehe ULCCComponent Strahlentest.
Symptom: der Charakter fällt unmittelbar beim Start nach unten
Kollision wird dynamisch in Chunks geladen, die Kollisionsdaten können beim Start des Spiels daher noch nicht aufgebaut sein, und der Charakter fällt, wenn unter ihm keine Kollision liegt.
Wie damit umzugehen ist:
- PlayerStart etwas über dem Boden platzieren
- Oder die Bewegung des Charakters um einige Sekunden verzögern
- Kollision in der Ladephase aktivieren und nicht nachdem der Spieler mit der Interaktion beginnt
Symptom: der Charakter rutscht durch oder fällt, nachdem er sich eine bestimmte Distanz entfernt hat
Kollision wird nach Distanz gestreamt, Bereiche jenseits des Laderadius haben daher keine Kollisionskörper. Max Load Collision Distance(m) erhöhen, um den Aktionsradius des Charakters abzudecken.
Kollision kann auch nicht nachkommen, wenn der Charakter sich zu schnell bewegt, was sich ebenso durch ein Erhöhen der Ladedistanz mildern lässt.
Symptom: das NavMesh wird überhaupt nicht erzeugt
| Zu prüfender Punkt | Maßnahme |
|---|---|
| Die Daten enthalten keine Kollision | Bestätigen, dass .lcc oder .lcc2 genutzt wird; Einzeldateiformate haben keine Kollisionsdaten |
| Kollision ist nicht aktiviert | bEnableCollision anhaken und CanEverAffectNavigation = true bestätigen |
| Kollision ist noch nicht geladen | Im View Mode Player Collision oder Visibility Collision auswählen und bestätigen, dass im Zielbereich Kollisionskörper erschienen sind |
| Der Laderadius der Kollision ist zu klein | Max Load Collision Distance(m) erhöhen, um den gesamten Aktionsbereich der KI abzudecken |
| NavMeshBoundsVolume fehlt oder deckt den Bereich nicht ab | Es platzieren und so skalieren, dass es den Zielbereich abdeckt |
| Die Navigation wurde nicht neu aufgebaut | Build → Build Paths ausführen und das Level speichern |
Zum vollständigen Ablauf siehe Unterstützung des Navigation System.
Abstürze
Symptom: Absturz nach einem Assertion-Fehler ArraySliceIndex
Der Fehler sieht so aus:
Assertion failed: ArraySliceIndex >= 0
Die Ursache ist, dass die aktuelle Version das Adaptive-GBuffer-Format von Substrate nicht unterstützt.
Behebung:
ProjectSettings > Renderingöffnen und Substrate GBuffer Format (Project) finden.- Den Wert auf BlendableGBuffer ändern. Das ist der Standardwert der Engine.
- Die Engine neu starten.
AdaptiveGBuffer ist ein bekanntes inkompatibles Format, und BlendableGBuffer arbeitet korrekt.
Probleme mit der Lizenzierung
Zuerst Status im Plugin-Panel prüfen: Ein grünes Häkchen bedeutet, dass die Lizenz in Ordnung ist und die Funktionen der Pro-Edition verfügbar sind. Alles außer einem grünen Häkchen bedeutet, dass die Lizenz nicht wirksam wurde, daher das Log lesen, um den Grund zu bestätigen.
Die Informationen zur Lizenzierung im Log sind recht ausdrücklich, daher nach dem handeln, was dort steht:
| Log-Meldung | Bedeutung und Maßnahme |
|---|---|
ProjectID is invalid; generate one in Project Settings | Das Projekt hat keine Project ID. Eine unter Project Settings > Project > Description erzeugen |
Failed to decode AppKey, please check. | Der Inhalt des AppKey ist unvollständig oder wurde falsch kopiert, ihn erneut kopieren |
Invalid AppKey, please check. | Das Format des AppKey ist falsch, bestätigen, dass es die vollständige Zeichenfolge von der Entwicklerplattform ist |
Authorization has expired, please check. | Die Lizenz ist abgelaufen, sie auf der Entwicklerplattform neu erzeugen |
AppKey has expired. Please generate a new one. | Wie oben |
HTTP request failed / HTTP error! Status: <code> | Ein Netzwerkproblem oder der Lizenzserver ist nicht erreichbar, Netzwerk und Firewall prüfen |
Signature Verification Failed | Die Signaturprüfung ist fehlgeschlagen, den technischen Support kontaktieren |
Zum Ablauf der Lizenzierung siehe Editionen und Lizenzierung.
Build und Paketierung
Symptom: fehlende Binaries oder Fehler beim Build eines Moduls
Wenn einer der folgenden Fehler erscheint, das Projekt nach den Schritten dieses Abschnitts neu erzeugen und neu bauen:
Missing UnrealGame binary. You may have to build the UE project with your IDE.
Alternatively, build using UnrealBuildTool with the commandline:
UnrealGame <Platform> <Configuration>
*** could not be compiled. Try rebuilding from source manually
Die Ursache ist, dass die Engine nach dem Hinzufügen des Plugins zu einem C++-Projekt die neuen Module erkennt, die zugehörige Build-Ausgabe aber fehlt. Wie folgt vorgehen:
- Das Projekt schließen.
- Die Datei
*.uprojectdes Projekts suchen. - Mit der rechten Maustaste auf
*.uprojectklicken und Generate Visual Studio project files wählen. - Warten, bis das VS-Projekt fertig neu erzeugt ist.
- Mit einem Doppelklick auf
*.slnVisual Studio öffnen. - Im Solution Explorer mit der rechten Maustaste auf das Projekt klicken und Set as Startup Project wählen, um sicherzustellen, dass es das Startprojekt ist.
- Bestätigen, dass die Konfiguration Development Editor und Win64 ist.
- Auf Debug > Start Without Debugging klicken, um das Projekt zu starten.
- Sobald der Build durchläuft, öffnet sich das Projekt normal. Danach genügt ein Doppelklick auf
*.uprojectund dieser Ablauf ist nicht jedes Mal nötig.
Schlägt es nach den obigen Schritten weiterhin fehl, zuerst das Verzeichnis Intermediate des Projekts löschen und dann erneut ab Schritt 3 vorgehen.
Zu den Schritten der Installation des Plugins siehe Schnellstart.
Symptom: die Paketierung schlägt fehl
Zuerst diese drei Punkte prüfen:
- Full Rebuild unter
ProjectSettings > Packagingmuss deaktiviert bleiben, und in VS kein Rebuild ausführen. Das Plugin unterstützt beides nicht, siehe Schnellstart - Bestätigen, dass ein C++-Projekt genutzt wird, denn Blueprint-Projekte lassen sich nicht paketieren
- Bestätigen, dass die Engine-Version im unterstützten Umfang liegt (UE 5.4 ~ 5.8)
Zu konkreten Fehlern siehe die zwei folgenden Abschnitte.
Symptom: fehlendes Precompiled Manifest bei der Paketierung
Der Fehler sieht so aus:
Missing precompiled manifest for 'LCC4UnrealRuntime',
'\Shipping\LCC4UnrealRuntime\LCC4UnrealRuntime.precompiled'.
This module was most likely not flagged for being included in a precompiled build
- set 'PrecompileForTargets = PrecompileTargetsType.Any;' in LCC4UnrealRuntime.build.cs
to override. If part of a plugin, also check if its 'Type' is correct.
Warum es passiert: Die im Fehler genannten Dateien werden mit dem Plugin ausgeliefert und liegen in seinem Verzeichnis Intermediate. Ein Full Rebuild unter ProjectSettings > Packaging oder ein Rebuild in VS lässt die Engine das Verzeichnis Intermediate bereinigen und diese vorkompilierten Ausgaben mit löschen.
LCC4Unreal ist ein Binär-Plugin ohne Quellcode, die gelöschten Ausgaben lassen sich daher nicht neu bauen und nur aus dem Plugin-Paket wiederherstellen. Aus diesem Grund beide Vorgänge vermeiden.
Wie es zu beheben ist:
- Bestätigen, dass Full Rebuild unter
ProjectSettings > Packagingdeaktiviert ist, und in VS kein Rebuild ausführen. - Den Inhalt des Plugin-Verzeichnisses
lcc4unreal/Intermediate/Build/Win64/UnrealGamenach<Projektverzeichnis>/Intermediate/Build/Win64/<Projektname>kopieren. - Den Inhalt des Plugin-Verzeichnisses
lcc4unreal/Intermediate/Build/Win64/x64nach<Projektverzeichnis>/Intermediate/Build/Win64/x64kopieren. - Die Engine neu starten und erneut paketieren.
Hinweis: Der Name des Zielverzeichnisses in Schritt 2 ist der Projektname, nicht
UnrealGame. Für ein Projekt namensMyProjectist der ZielpfadMyProject/Intermediate/Build/Win64/MyProject.
Wenn der Fehler auf andere Dateien zeigt: Die zwei Verzeichnisse oben decken die häufigen Fälle ab. Nennt der Fehler eine andere Datei, genauso vorgehen: diese Datei unter dem Verzeichnis Intermediate des Plugins am gleichen relativen Pfad suchen und an die entsprechende Stelle im Projekt kopieren.
Wenn das Verzeichnis Intermediate des Plugins ebenfalls bereinigt wurde: Dann ist nichts mehr zum Kopieren übrig, daher das Plugin-Paket erneut herunterladen und über die vorhandenen Dateien entpacken, um sie wiederherzustellen.
Symptom: der Build schlägt auf einer benutzerdefinierten Engine fehl
Veröffentlichte Plugin-Pakete funktionieren nur mit von Epic veröffentlichten Engines. Herstellerspezifisch angepasste Branches, von UE abgeleitete kommerzielle Engines und Engines mit lokal geändertem Quellcode erfordern alle einen eigenen Build, siehe Benutzerdefinierte Engine-Versionen.
Symptom: Fehler bei der Paketierung für Android
Die aktuelle Version unterstützt keine direkte Paketierung für die Android-Plattform. Das ist eine Einschränkung der Plattformkompatibilität und lässt sich nicht durch eine Änderung der Konfiguration der Paketierung lösen.
Zur Nutzung auf einem VR-Gerät auf dem PC ausführen und streamen, siehe Schnellstart - Quest3.
Weiterhin nicht gelöst
Die folgenden Informationen zusammenstellen und Kontakt aufnehmen, siehe Kontakt:
- Plugin-Version und Engine-Version
- Datenformat und ungefähre Größe
- Die vollständige Log-Datei des Durchlaufs, in dem das Problem auftrat, ungefiltert und nicht nur die Fehlerzeilen
- Schritte zur Reproduktion
- Modell der Grafikkarte und Version des Treibers
Zum Ablageort der Log-Datei und weiteren Details siehe Logs und Diagnose.