Jump to content
Unity Insider Forum

2D Pixel flacker/"verwischen" Problem


Keeper

Recommended Posts

Hallöchen :)

ich beschäftige mich erst seit kurzen mit Unity und teste grade etwas an 2D Steuerung und Grafik herum und mir ist dabei aufgefallen, dass das Bild bei mir leicht flackert, wenn ich die Kamera bewege.

Beim reinzoomen habe ich gesehen, dass die Pixel beispielsweise meines Baumstames bei jeder Bewegung leicht unterschiedlich sind und etwas verwischen o.ô

Da ich recht neu in unity bin weiß ich nicht recht in welcher Ecke ich suchen soll. Ich hab verschiedene Arten ausprobiert wie ich die Kamera und den Spieler bewege, verschiede Update Funktionen probiert, hab alle möglichen Einstellung an dem Sprite(?) verstellt, hab an der Auflösung rumgespielt, aber nichts bracht so recht ein ergebnis.

Ich hab einmal ein Screenshot angefügt wie der Baumstumpf "verschwimt", wenn ich mich auch nur leicht bewege. Ich hab ihn auch noch mal als Orginal Grafik eingefügt so wie ich Ihn importiert habe.

public class Steuerung : MonoBehaviour {

    public float geh_geschwindigkeit= 5000f;
    public Camera kamera_objekt;
    public Vector3 offset;
    
    private Rigidbody2D rgbody;

	void Start () {
        rgbody = gameObject.GetComponent<Rigidbody2D>();
    }
    private void FixedUpdate()
    {     
        rgbody.AddForce(new Vector2(Input.GetAxis("Horizontal") * geh_geschwindigkeit, Input.GetAxis("Vertical") * geh_geschwindigkeit),ForceMode2D.Force);
    }
    void LateUpdate () {
        kamera_objekt.GetComponent<Transform>().position= gameObject.GetComponent<Transform>().position - offset;
    }
}

 

Ich hoffe jemand hat eine Lösung für mich^^"

 

 

Baumstumpf_pixel.png

baumstumpf.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja ich hab es mir etwas einfach gemacht und einfach die Bilddatei in den Editor gezogen, wodurch unity das wohl gemacht hat.

Das ganze sieht so wie auf den Screenshot aus, es kann aber sein, dass die Einstellungen nicht mehr ganz so wie am anfang sind, weil ich so viel daran rumprobiert habe um das flackern wegzubekommen. Geändert hat es aber nichts.baumstumpf_settings.thumb.png.6cf396b6e2c6b03f9a3df060dddf4e6f.png

Ich habe eben auch nochmal schnell das ganz zu fuß gemacht, also erst einen 2D Sprite erstellt und dann die Textur drauf gezogen. Leider ohne Erfolg...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hatte deine Scene mal in Unity 2017.3 fix nachgestellt hab aber keine Verzerrungen des Sprites gesehen (mal abgesehen vom "Softening" des Sprites, was aber normal ist wenn man ein kleines Sprite vergrößert in der Kamera anschaut)

Du scheinst aber eine andere Version zu verwenden?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ich habe noch Unity 5.6.1f1

Ich habe wie du gesagt hast mal eine neue Kamera reingezogen. Bei den Defaulteinstellungen war alles wesendlich größer und beim bewegen, sieht alles soweit ok aus. Um die Einstellung der Kamera jetzt nicht zu verändern. Hab ich die Scale der Objekte angepasst, damit sie wieder kleiner sind und nun tritt das Flackern auch wieder auf.

Kamera.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du musst den Scale der Objekte nicht anpassen (vielleicht liegt hier das Problem), die Entfernung der Kamera (Persp) bestimmt die Größe der Objekte in der Gameview. Bei Ortho wird die Größe über Size bestimmt. Prinzipiell würde ich Sprites nicht über den Scale des Sprites skalieren, sondern wenn dann über den Sprite Importer und hier über "Pixel per Unit".

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, ich hab den Scale jetzt nur angepasst, weil ich an der neuen Kamera nichts verstellen wollte. Vorher war der Scale überall auf 1. Auf jeden fall ist das flackern umso stärker je kleiner die Objekte sind (also im kleinen Fenster).

Ich hab nochmal ein neues Projekt gemacht nur mit den wesentlichsten dingen. Auch hier fällt das Flackern auf...

Ich hab jetzt das neue Projekt man anghängt für denn falls du oder jemand anderes sich das mal anschauen möchte. Man merkt es besonders gut wenn man zwischen die beiden Baumstäme guckt und nicht grade im Vollbild unterweg ist.

2D_test.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, habs mir mal angeschaut. Ich vermute die Verzerrung kommt über den Gameviewzoom (den solltest du nicht verwenden!, der ist eigentlich nur für Debugzwecke gut und hat mit dem eigentlichen Spiel nichts zu tun. Ist wie der digitale Zoom bei einer Handykamera -> unbrauchbar *g).

Geht mal in dein Game-Window und stelle "Scale" auf 1x !  

Dann geht mal zu deiner Kamera in der Szene und stelle hier die Größe deiner Szene ein, beispielsweise:
- Projection "Orthographic"
- Size 1

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, danke schonmal fürs angucken :D Der Scale ist eigentlich 1x ich hab ihn nur kurz immer verstellt um zu gucken was da so flackert.

Die Kamera habe ich jetzt auf Size 1, jetzt ist allerdings alles wieder sehr groß. Wenn ich die Size der Kamera aber wieder hochsetze (5) ist wieder der effekt von vorher da.

Oder hätte ich schlicht alles kleiner Zeichnen müssen um die Kamera auf Size 1 zu stellen^^"?

eingestellt.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie gesagt bei mir flackert nix und die Pixelverschiebungen hatte ich nur wenn ich den Scale in der Gameview manipuliere.

Nein, du kannst die Size der Kamera einstellen wie du magst, ich frage mich nur wie du Pixelverschiebungen bei dieser kleinen Szene dann sehen willst?

Vom Flackern hattest du nix gesagt, es ging ja um's Verwischen der Pixel und daß hatte ich nur wenn ich oben am Scale in der Gameview "spiele".

Was flackert denn bei dir?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja die Pixelverschiebung sieht man am deutlichsten, wenn man den Scale ändert. Das ist mie aber erst später aufgefallen, ich hab die 3 Baumstümpfen oben im ca. 5x Scale oben gepostet, weil ich dachte das man es dadruch besser sieht.

Aber auch wenn er auf 1 ist sieht man beim bewegen, dass da irgendwas sich nicht richtig mitbewegt, ich hab das jetzt mal als Flackern beschrieben, weil es so aussieht als wenn... naja die Texturen bei jeder kleinen Bewegugn sich etwas verändern.

Ich hab jetzt nochmal 2 Screenshots gemacht, so wie es bei mir aussieht wenn ich mich minimal bewege. Das ist jetzt nichts reingezoom oder am Scale verändert.

Ich gebe zu man sieht es nicht wirklich gut, aber zwischen den beiden Baumstämen ändert sich die Farbe. (Wenn man sich bewegt fällt es mehr auf).
1.thumb.png.bf84014effe698048659e137a3481278.png2.thumb.png.de2967d363fe0f22d4231f777da7f140.png

Ich hab nochmal ein Bild gemacht aus den beiden Screenshots zusammen. Hier sieht man das in der mitte sich die Farbe ändert und auch das die Ränder unterschiedlich dick sind.

beiderzusammen.png.d40bdccce394e8c8840a0580ae00c1a3.png

Vielleicht bin ich auch etwas überempfindlich aber ich seh es eben bei jeder Bewegung, grade wenn mehrere Objekte plaziert sind und denke mir so: "Hmmm irgendwie strange..." vielleicht muss ich es mir auch nochmal auf ein anderen Rechner angucken...

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, nun hab ich glaube verstanden was du meintest. Dein "Ansatz" nennt sich "pixel perfect", dafür müssen einige Einstellungen genau angepasst werden. Unter anderem das Verhältnis von Size der Kamera, Höhe der Bildschirmauflösung und Pixels per Unit.

Tut man dies nicht hat man kleine Verschiebungen der Pixel je nach Kameraposition, da die Größe der Sprites auf die Bildschirmauflösung umgerechnet werden muss und diese Umrechnung vermutlich durch Rundungen winzige Fehler produziert und daher die Pixel der Textur nicht stabil bleiben.

Ein Beispiel wäre:
- Camera Orthosize 5
- Bildschirmauflösung xxxx X 1024 (kann man im Gameview einstellen)
- Pixels per Unit = 108

Hier mehr Theorie und Formeln zum Thema:
https://blogs.unity3d.com/2015/06/19/pixel-perfect-2d/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...