Mip-Karten auf 2D-Sprite verursachen oben eine schwarze Linie. Warum ist das?

8

Ich bin neu in der Einheit. Ich probiere es aus und verwende Futile für einen Code-First-Ansatz, importiere aber immer noch Texturen mit dem Unity-System.

Das Problem, das ich habe, ist, dass ich, wenn ich Mip-Maps verwende, um große Sprites auf kleinere Größen ohne gezackte Kanten zu skalieren, ein Artefakt mit schwarzen Linien über diesen Sprites erhalte.

Schwer zu sehen

Ein bisschen schwer zu sehen, aber sie sind da. Wenn ich die Auflösung ablehne, können Sie sie deutlich sehen:

Einfacher zu sehen

Dies sind meine Textureinstellungen:

die Einstellungen

Meine Frage ist, warum sind diese schwarzen Linien hier? Ist es ein Fehler, den ich gemacht habe? Ist es nur eine häufige Nebenwirkung? Wie kann ich diese reduzieren? Wenn dies der falsche Ansatz ist, wie kann ich in einem Spiel glatte Sprites verwenden, die sich reibungslos skalieren lassen?

Vielen Dank!

Adam K Dean
quelle
1
Sie verwenden einen Atlas, nicht wahr?
Heisenbug

Antworten:

9

Es gibt viele Gründe, warum Sie diese Zeilen erhalten. Ich schrieb eine ausführlichere Antwort in hier , aber das Endergebnis ist:

Atlasieren und Mipmapping nicht gleichzeitig durchführen.

Für 2D möchten / müssen Sie im Allgemeinen kein Mipmapping durchführen. Dies ist vor allem in 3D nützlich, wo Sie nicht wissen, in welcher Größe Ihre Texturen gerendert werden. In 2D ist dies jedoch normalerweise ungewöhnlich.

Wenn Sie definitiv eine Textur haben, die Sie aggressiv verkleinern, nehmen Sie sie nicht in einen Atlas auf.

Und ich würde Ihnen auch empfehlen, die Anisotropie auszuschalten. Das soll Ihnen bessere Ergebnisse bringen, wenn Sie große Texturen aus extrem scharfen Winkeln betrachten. Dies ist einfach nicht der Fall, wenn Ihr Spiel 2D ist.

Panda Pyjama
quelle
Eigentlich sollte eine richtige Polsterung die gemeinsame Verwendung von Atlas und Mipmap ermöglichen. Liege ich falsch? +1 übrigens
Heisenbug
2
@Heisenbug Durch Hinzufügen von Padding verschieben Sie das Problem lediglich auf eine niedrigere Mip-Ebene. Wenn Sie über Mipmaps und Atlanten verfügen müssen, sollten Sie diese manuell und nur bis zu der Ebene erstellen, auf der Ihr kleinstes Objekt 1 x 1 Pixel groß ist. In 2D verkleinern Sie Texturen normalerweise nicht genug, um ein Mipmapping zu erfordern. Daher würde ich Ihnen auf jeden Fall empfehlen, Atlasing und Mipmapping nicht zu mischen.
Panda Pyjama