Nicht eingeloggt
Registrieren

Grafikfehler beheben

Inhaltsverzeichnis:

- Weißer Bildschirm
- BSP Holes - Schwarze Flächen
- Unlit Static Meshes
- Schwarze Static Meshes
- StaticMeshes sind nicht durch eine transparente Fläche sichtbar
- Skybox-Texturen sehen gestreckt aus
- Sunlight scheint nicht durch einen Fenster-StaticMesh
- Seltsames, großes Flackern mitten in der Luft
- Dunkle Flächen, die nicht richtig beleuchtet werden



Einführung
Das Ziel dieses Tutorials soll es sein, euch mit den vielen möglichen Graphikfehlern vertraut zu machen, mit denen euch der Unrealed bombadieren wird und natürlich auch, was ihr gegen sie tun könnt, ohne euer Level dabei kaputt zu machen, oder aufgeben zu müssen. Wenn ihr eine Map erstellt, kann es leicht sein, dass einer oder mehrere der folgenden Fehler bei euch auftreten:


Weißer Bildschirm
Der Bildschirm (oder besser gesagt, die Viewports) is weiß wenn ihr den Editor öffnet.


Obwohl das hier eigentlich nicht wirklich 100%ig in das Themengebiet dieses Tutorials fällt, soll dieser doch recht häufige Fehler hier erwähnt werden. Manchmal tritt er auf, wenn man die Bildschirmauflösung ändert. Einfach ausgedrückt, sind alle Viewports (die Fensterchen, in denen normaler Weise ?editiert? wird) geschlossen. Es ist recht einfach diesen Fehler zu beheben, indem man sie einfach wieder öffnet. Klickt einfach auf 'View' in der oberen Leiste des Editors und wählt dann 'View ports' aus. In dem kleinen Kontextmenu, das dann zur Seite hin auffährt, klickt ihr 'Configure'. Dann sucht euch einen der angebotenen Viewport-Stile aus und drückt auf 'ok'. Mein Vorschlag wäre, zwei der Fensterchen ungebunden zu lassen, damit man sie maximieren kann. Dadurch sieht man besser was man tut und macht weniger 'unbekannte Fehler'.


BSP Holes
Es erscheinen Löcher in der Map. Manchmal kommt es zu einem 'Hall of Mirrors'-Effekt. Sehr häufig sogar.


Im Bild: Ein Loch wurde in die Geomatrie gerissen und man sieht die unendlichen Weiten des Editors; Der Korridor lauf der linke Seite ist in der Mitte durchtrennt. Der schwarze Editor-Hintergrund mit dem blauen Gitter erscheint im Spiel als eine ?Hall of Mirror?. Das sieht häßlich aus, bringt den Spieler durcheinander, tötet ihn, wenn er es berührt und lässt den Spieler durch die Map fallen.

Das hier ist wahrscheinlich der am häufigsten auftretende Fehler wenn Newbies (Anfänger) Levels bauen. Das BSP-Hole (die Löcher in der Map) sind der Albtraum eines jeden Newbies. Sie können durch schlampig gebaute Brush-Konstruktionen, komplizierte Brushes, winzige Fehler nach dem Editieren von vertices (Eckpunkte von Brushes) und schlechtes Zoning (das Abgrenzen von Levels in mehrere Zonen um Rechenleistung zu sparen) hervorgerufen werden. Viele neue Mapper achten nicht darauf ihre Map durchdacht und simpel zu halten, um diese dann durch diesen Fehler in Stücke gerissen zu sehen.



Schritte gegen BSP-Holes:
? Untersucht die Gebiete in denen BSP hole(s) auftreten. Sucht selbst nach den kleinsten Brushteilen, die fehlerhaft oder verschoben sind; Fehlerhafte Brushes sind in den meisten Fällen der Grund für solche Holes ...

? Stellt sicher, dass alle eure Brushes genau am Grid (dem grauen Gitter in den 2d-Viewports) liegen. Und zwar in allen Ansichten! Sie sollten auch untereinander perfekt zusammen passen und sich nach Möglichkeit nicht überschneiden. Es ist nicht immer einfach solche Fehler oder kleinere Ungereimtheiten gleich zu erkennen, also zoomt ganz nah heran indem ihr beide Maustasten gedrückt haltet und die Maus nach vorne schiebt. Falls ihr Fehler entdeckt, versucht sie zu korrigieren indem ihr die Brushes zurecht schiebt, oder sie per Vertex Editing korrigiert. Wenn eure Map viele solcher Fehler enthält, werdet ihr feststellen, dass viele der Holes (und wahrscheinlich auch andere Fehler) durch eure Reperationsaktionen verschwinden. Es lohnt sich also immer alles doppelt und dreifach zu untersuchen.

? Überprüft auch vor allem die Brushes, die direkt von den Holes betroffen sind. Sind sie sehr komplex? Brushes mit sehr ungewöhnlichen Flächen, oder vielen Winkeln, Vertices (Eckpunkte) oder Seiten könnten schuld an der Misere sein. Falls euch etwas derartiges an euren Brushes auffällt, müsst ihr das Gebiet noch einmal bauen und dieses Mal entweder einfachere Brushes, oder mehrere einfachere Brushes benutzen um sie wiederherzustellen. Bleibt am besten bei einfachen Formen wie z.B. vielen Quadern und rebuildet dann. Sehr komplizierte Brushes, sollten sowieso zu StaticMeshes umgewandelt werden. StaticMeshes rufen keine BPS-Holes hervor und sind auch weniger rechenintensiv. Wenn ihr Brushes mit nonplanaren Flächen findet, also Flächen, die durch Punkte begrenzt sind, die keine eindeutige Fläche definieren müsst ihr sie unbedingt ersetzen, oder zu StaticMeshes konvertieren. Solche gekrümmten Flächen rufen sehr leicht Fehler hervor. Beim Konvertieren zu StaticMeshes, werden sie jedoch trianguliert (alle Flächen werden solange geteilt, bis das Objekt nur noch aus Dreiecken besteht) und Dreiecke sind immer planar.

? Solltet ihr irgendwelche Vertices verschoben haben, untersucht ob alle noch am Grid oder auf sonstigen Orientierungslinien liegen und nicht schräg liegen. (So dass alle Flächen des Brushes auch wirklich flach sind und nicht irgendwie gekrümmt. Wenn man z.B. einen Vertex (Eckpunkt) eines Quadrates aus der Fläche des Quadrats schiebt, ergibt sich eine Fläche, die sich nicht eindeutig in Dreiecke teilen lässt. Wenn jeweils die gegenüberliegenden Eckpunkte mit einer Linie verbunden werden, kommen zwei verschiedene 3dimensionale Figuren raus. Der Editor weiß dann nicht welche er benutzen soll und es kommt leicht zu Fehlern). Dafür ist es vielleicht wieder hilfreich an die Szenerie ran zu zoomen.

? Ist vielleicht ein Zoneportal in der Nähe solcher Holes? Stellt sicher, dass das Zoneportal auch wirklich ?dicht macht?, und sich nicht mit komplizierten Brushes überschneidet.

Falls sicher ist, dass keiner der oben angesprochenen Fehler zu finden sind, muss wohl der kaputte Teil des Levels neu entworfen werden, oder zumindest der Brush der beim Adden die Holes verursacht hat muss verschoben und/oder neu gebaut bzw. neu entworfen werden.


Schwarze Flächen:
Eine komplett schwarze Fläche, die kein Licht annimmt; Kann eigentlich überall in der Map zufällig auftreten...



Im Bild: Die Problemfläche ist mit einer roten Linie markiert. Anstatt sich richtig beleuchten zu lassen, bleibt sie komplett schwarz. Was diesen Fehler verursacht, ist mir auch noch nicht klar. Sie treten ganz plötzlich auf, auch wenn man extrem sauber mappt und keine der unter ?BSP-Holes? angesprochenen Fehler auftritt. Außerdem kann man hier so oft rebuilden wie man will, es wird nicht helfen. Aber nach Stunden von fruchtlosen Reparationsversuchen habe ich einen Weg gefunden, sie zu reparieren.



Gegenmaßnahme:
Vergrößert den betroffenen Brush in in einer der 2d-Viewports um eine Einheit/Kästchen auf der kleinsten Gridgröße. Am besten geht das mit dem Vertex Editing Werkzeug, und es hilft auch wenn man die ?Show Large Vertices?-Funktion anschaltet. (Die Knöpfe stehen unten). Jetzt könnt ihr F8 drücken und rebuilden und der Fehler sollte verschwunden sein. (Wenn nicht, versucht es um ein paar Units mehr zu vergrößern, oder zu verkleinern). Alle an diesen Brush angrenzenden Brushes müssen natürlich ebenfalls editiert werden, damit sie sich nicht mit dem anderen überschneiden. Im Spiel sollte man diese kleine Größenänderung dann sowieso nicht mitbekommen.


Das "Vertex Editing?-Tool.

Die ?Show Large Vertices"-Funktion.



Editor Tip:
Das Vertex Editing Toll ist sehr hilfreich wenn man kleine Änderungen an Brushes vornehmen will. Allerdings sollte man damit auch aufpasse, dass man damit keine gekrümmten Flächen oder überlagerte Eckpunkte produziert. Solche Fehler können nämlich leicht zu BSP-Holes oder Editor-Abstürzen führen.

Unlit Static Meshes: (2K3/2K4)
Ein StaticMehs sieht unlit aus wenn man ihn im Spiel, oder in der beleuchteten Ansicht im Editor betrachtet, obwohl er eigentlich korrekt beleuchtet sein sollte.



Im Bild: Ein paar der StaticMeshes sind unlit, während der Rest der Map korrekt ausgeleuchtet ist. Das kommt manchmal vor, wenn StaticMeshes aus Zonen, oder in die unendlichen Weiten des Editors ragen. Einige der von Epic mitgelieferten StaticMeshes benutzen Light Maps in ihren Texturen und könnten deshalb unlit aussehen. Das Problem ist meistens einfach zu bekämpfen.


Schritte gegen Unlit StaticMeshes:
Falls ihr die StaticMeshes auf keinen Fall bewegen wollt, solltet ihr das mal versuchen:. Gebt der Zone in der sich der Static Mesh befindet einen Tag (quasi einen Namen). Doppelklickt dazu auf den ZoneInfoActor, öffnet den Reiter ?Event? und schreibt einen Namen in das Feldchen hinter ?Tag?. Jetzt öffnet ihr die Properties des StaticMeshes, klickt auf ?Display? und schreibt den selben Namen in das Feld hinter 'ForcedVisibilityZone'. Jetzt drückt F8 und startet einen Rebuild. Nebenbei ist das eine effektive Methode die Map zu optimieren, da solche StaticMeshes nur noch berechnet werden, wenn auch die Zone mit der sie so verknüpft sind berechnet wird. Das Beste wäre es, wenn ihr das mit all euren StaticMeshes machen würdet.


Falls das aber nicht hilft, könnt ihr noch versuchen die Lichteinstellungen des StaticMeshes zu verändern. Öffnet wieder die Properties des StaticMeshes, klickt auf Display und versucht folgende Felder zu verändern: (aber immer nur eines und dann erst mal schauen ob es schon geholfen hat) bUseDynamicLights, bUseStaticLighting, bUseLightingFromBase. Überprüft auch die bUnlit Einstellung; standartmäßig sollte sie ausgeschalten sein.

Wenn es euch nichts ausmacht die StaticMeshes ein bischen zu verschieben, oder zu skalieren, dann verschiebt oder skaliert sie so, dass sie nicht in andere Zonen oder die Weiten des Editors ragen.

Ausserdem, gibt es da noch die ?Scale Glow?-Einstellung in den StaticMesh Display Properties. Man kann sie verändern um so den StaticMesh heller oder dunkler zu machen, was auch ohne diesen Fehler mal nützlich sein kann.


Editor Tip:
Die Zonen mit Tags zu versehen und die Forced Zone Visibility der StaticMeshes entsprechend einzustellen, kann, zusammen mit anderen Optimierungsmethoden die Performance und die erzielbaren FPS (Frames Per Second = Bilder Pro Sekunde) erheblich steigern. Außerdem hilft es gegen die angesprochenen Beleuchtungsfehler. Oben steht wie es geht.

Static Meshes sind schwarz: (2K3/2K4)
Ein StaticMesh, der komplett schwarz ist.

Manchmal erscheinen einer oder mehrere StaticMeshes rabenschwarz. Das passiert, wenn keine der Vertices, die den StaticMesh bilden beleuchtet werden. Z.B. weil sie in die Weiten des Editors ragen. StaticMeshes werden mit Vertex Lighting beleuchtet. Das bedeutet, dass nicht die Flächen an sich beleuchtet werden, sondern die Eckpunkte und die Flächen dann, beleuchtungstechnisch, den Eckpunkten angeglichen werden.


Schritte gegen schwarze StaticMeshes:
Die erste Methode wäre, den StaticMeshes mittels DrawScale so zu skalieren, dass seine Eckpunkte angestrahlt werden können. Natürlich hängt das davon ab, ob ihr den StaticMesh verschieben, oder skalieren könnt. Falls er an Ort und Stelle bleiben muss, hilft es vielleicht, wenn ihr ein bischen Platz um den StaticMesh herum subtracted, so dass seine Eckpunkte nicht ins ?Leere? stehen.

If you really can't alter the position or size of the mesh, there's a couple of methods you can try. Firstly, you can turn off the shadow cast of any meshes covering the vertices of your mesh by changing bShadowCast to false (Located in it's display properties). Another method is to turn the static lighting off by setting bStaticLighting to false and add a slight ambient brightness to the mesh, also located in the display properties.

Meshes sind nicht durch eine transparente Fläche sichtbar: (2K3/2K4)
StaticMeshes sind teilweise oder komplett unsichtbar, wenn man sie durch eine durchsichtige Fläche ansieht..


Im Bild: Wenn man durch die markierte Fläche sieht, sieht man die Blätter an dem Baum nicht (die Blätter sind ein StaticMesh). Das tritt auf, wenn ein Sheet oder anderer Brush als Fenster benutzt wird und der StaticMesh zu nah an der anderen Seite ist. Ich bin noch nicht sicher, welche Einstellung dieses Problem verursacht, aber es gibt ja Mittel und Wege dieses Problem zu umgehen.


Was man dagegen tun kann:
Schnell und einfach: Zieht die StaticMeshes weiter von dem Sheet weg, bis sie sichtbar werden. Eventuell müsst ihr dann aber die Umgebung anpassen. Die nächste Methode ist wahrscheinlich besser geeignet ...

Falls ihr die StaticMeshes nicht verschieben wollt: Das Sheet, oder der Brush das/der als Fenster benutzt wird, muss in einen StaticMesh umgewandelt werden (sollte man sowieso machen). Wie das geht steht im FAQ-Thread.


Skybox-Texturen sehen gestreckt aus: (2K4)
Die Himmelstexturen in der Skybox sehen gestreckt, oder gestreift aus.


Im Bild: Wenn man bestimmte Skyboxtexturen verwendet, kann es vorkommen, dass sie gestreckt aussehen. Das kann soweit gehen, dass sie gestreift sind. Solche Texturen verhalten sich so seltsam weil ihr Clamp Mode in den Texturproperties auf TC_clamp gestellt ist. Man kann das einfach beheben indem man sie auf TC_Wrap stellt, aber es ist sicherlich besser zu lernen mit TC_Clamp umzugehen. Dieser Fehler kann ein Problem darstellen, wenn man UT2003-Levels in UT2004 spielen möchte.


Schritte gegen diesen Fehler:


Mit TC_Clamp arbeiten:
Markiert alle Wandflächen der Skybox, rechtsklickt auf eine von ihnen und wählt dann 'alignment > face' aus dem Menü. (Die Texturen sind dann immer noch gestreift. Kein Grund zur Sorge!). Jetzt, immernoch alle Wandflächen markiert, rechtsklickt nochmal auf eine und öffnet die 'surface properties'. Dann klickt auf den Pan/Rot/Scale Reiter. Das Fenster sollte dann so wie auf dem Bild hier aussehen:


Dieses Werkzeug werden wir verwenden um die Texturen zurecht zu rücken. Die Knöpfe in dem mit ?Pan? beschrifteten Bereich bewegen die Textur nach oben/unten oder zur Seite und zwar um so viele Pixel, wie auf den Knöpfen steht. Wenn man z.B. U: 4 drückt bewegt sich die Texture um 4 Pixel. Das ganze ist quasi eine genauere Variante des Texturemoving-Tools. Alles was in dem Rotation-Kästchen steht, genau, richtig geraten, lässt die Textur rotieren (drehen).

Verschiebt jetzt die Textur um einen Pixel zur Seite und nach oben/unten. Sie sollte langsam schärfer werden, aber noch passt sie nicht. Jetzt verschiebt sie um 64 Pixel in die Richtungen, und zumindest die Wand-Texturen sollten schon mal passen.

Boden und Decke sind leider eine andere Geschichte und da bedarf es etwas mehr Arbeit. Hier ist es von Nöten die Verschiebung und die Drehung (Rotation und Pan) korrekt einzustellen.

Trotzdem ist TC_Clamp weitaus besser als jede andere Methode, die Skybox zu texturieren. Es braucht eben ein bischen Geduld um sich an die richtige Handhabung der Werkzeuge und die Fehler und Eigenheiten zu gewöhnen, aber auf lange Sicht zahlt sich das aus.


Wie umgehe ich dieses Problem:
Man muss die Skyboxtexturen exportieren und wieder in myLevel importieren. Wenn man die Skyboxtexturen im Level jetzt mit den frisch importierten Versionen ersetzt, sollte es funktionieren.

Falls es ohnehin selbstgemachte Texturen sind, die verwendet werden sollen, kann man sie auch auf TC_Wrap umstellen. (Rechtsklickt auf die Textur im Textur-Browser und öffnet ihre Properties, unter 'Texture' könnt ihr das dann umstellen.



Skyboxtexturen verschieben sich nach einem Rebuild...
Wie gesagt, liegt das auch an der TC_Clamp-Einstellung. Gleich nach dem Erstellen (oder Korrigieren) sieht die Skybox perfekt aus, aber nach ein paar Rebuilds passen die Texturen nicht mehr zusammen. Bessert das aus, wie oben beschrieben und verschiebt sie dann um einen Pixel auf die Seite und nach oben/unten. Jetzt markiert die gesamte Skybox (also die SkyZoneInfo, den Subtract-Brush und alle Actoren in ihr), und verschiebt sie so, dass die gelben Kanten des Subtracts dort liegen, wo die Streifen anfangen. Jetzt Rebuildet das Level und bessert es notfalls wieder aus. Manchmal braucht man ein paar Anläufe bis es dann klappt. Aus irgend einem Grund werden TC_Clamp-Texturen von den BSP-Cuts in eurem Level betroffen..

(Besonderer Dank an King Mango von Unreal Playground für die TC_Clamp info!)


Sunlight scheint nicht durch einen Fenster-StaticMesh (2K3/2K4)
Ein SunlightActor wird von einem transparenten StaticMesh geblockt, obwohl er eigentlich durchscheinen sollte..

Der SunlightActor kann dazu verwendet werden, Sonnenstrahlen durch ein Fenster scheinen zu lassen. Manchmal kommt es jedoch vor, dass der Fenster-StaticMesh das Sonnenlicht abblockt, so dass es nicht mehr durchscheinen kann.



Was man dagegen tun kann:

Öffnet die Properties der betroffenen StaticMeshes (z.B. indem ihr doppelt auf sie klickt) und stellt bCollideActors unter ?Collision? und bShadowCast both unter ?Display? auf false bzw. Falsch. Sobald der finale Rebuild vollendet ist (also der letzt Rebuild, weil die Map dann fertig ist) können beide Einstellungen wieder auf true bzw. Wahr gestellt werden.


Öffnet den StaticMesh-Browser, sucht euren StaticMesh und stellt die Collision im Skins-Menü auf false bzw. Falsch. Diese Änderung betrifft alle solchen StaticMeshes. Warnung: Diese Methode sollte nur nach dem allerletzten Rebuild der Map angewandt werden, so dass keine anderen StaticMeshes davon betroffen sind. Ansonsten könnte das sogar StaticMeshes in anderen Levels verändern.


Seltsames, großes Flackern mitten in der Luft: (2K3/2K4)
Epilepsieauslösendes, seltsames Flackern über die ganze Map verteilt.


Es ist schwer jemandem dieses Problem zu beschreiben, wenn man der/die es noch nicht gesehen hat. Das Spiel flackert wie verrückt, mal schneller und bunter, mal weniger stark. Normaler weise wird es schlimmer, wenn man in detaillierteren Umgebungen ist. Dieses Problem tritt dann auf allen Maps auf.

Mögliche Ursachen und Lösungen:

? Falls in letzter Zeit Treiber, Patches oder DirectX-Versionen geänddert wurden, stellt sicher dass sie auf dem neuesten Stand sind und spielt notfalls den/die alten wieder auf.

? Die Graphikkarte könnte überhitzt sein (So wars bei mir, dabei ist mir meine Radeon 9800 drauf gegangen). Die Computerkühlung kann in Ordung sein, aber vielleicht ist der Ventilator oder der Kühler der Graphikkarte hinüber. Probiert mal ihn rauszubauen und schaut ob es hilft. Versucht den PC abkühlen zu lassen, wenn er längere Zeit an war und überprüft ihn auch, ob er vielleicht verstaubt ist. Seht auch nach, ob der Ventilator noch geht (Eigentlich alles eine Frage des gesunden Menschenverstandes).


Dunkle Flächen, die nicht richtig beleuchtet werden: (2K3/2K4)
aka (also known as = auch bekannt als) 'Der Two Sided Trick'


Lösung: Aktiviert das Kästchen bei TwoSided in den SurfaceProperties der Problemfläche, und rebuildet die Map dann um den Fehler zu beheben ...