Farben aus Zeichen

Grafik, Musik, Sound, Spieledesign, Spielmechanik, Story Writing und sonstiger kreativer Kram, der nichts mit Programmieren zu tun hat.
Antworten
focus0941
Beiträge: 44
Registriert: 27.03.2023, 18:28
Benutzertext: hatte mit 3 einen Bart
Echter Name: Vladimir Ilyushko

Farben aus Zeichen

Beitrag von focus0941 »

Als ich einen einfachen Raycaster in Python programmierte, fiel mir auf, dass beim Runterskalieren des Outputs (In diesem Fall Buchtaben und Satzzeichen) verschiedene Farben entstanden. Das fand ich ganz interessant, aber ich konnte nichts dazu im Internet finden, also wollte ich mal fragen, ob jemand das schon einmal gesehen hat. Gibt es dabei eine Regelmäßigkeit?

Diese Farben habe ich bereits gefunden:
# "-" -> rot
# "O" -> gelb
# "'" -> grün
# "*" -> türkis
# "#" -> hellblau
# "´" -> blau
# "/" -> lila
# "$" -> weiß
So sieht es aus wenn man es verkleinert.
So sieht es aus wenn man es verkleinert.
Farben.PNG (4.66 KiB) 3563 mal betrachtet
Dateianhänge
So sieht es normal aus.
So sieht es normal aus.
Benutzeravatar
TomasRiker
Beiträge: 96
Registriert: 18.07.2011, 11:45
Echter Name: David Scherfgen
Wohnort: Hildesheim

Re: Farben aus Zeichen

Beitrag von TomasRiker »

Das müsste vom Subpixel-Rendering kommen (nutzt aus, dass in Bildschirmen ein Pixel aus nebeneinander angeordneten roten, grünen und blauen Subpixeln besteht, um Anti-Aliasing bei Schriftzeichen zu realisieren) - kombiniert mit dem Algorithmus, der zum Herunterskalieren benutzt wird. Beim Herunterskalieren wird jedes Zeichen auf wenige Pixel reduziert, und je nach Zeichen kriegst du dann eine andere Farbe, weil die Subpixel mit reinspielen.
focus0941
Beiträge: 44
Registriert: 27.03.2023, 18:28
Benutzertext: hatte mit 3 einen Bart
Echter Name: Vladimir Ilyushko

Re: Farben aus Zeichen

Beitrag von focus0941 »

Also den Algorithmus kenne ich icht. Das ist einfach nur die Python Commadzeile, wo der Output ausgedruckt wird.
Benutzeravatar
TomasRiker
Beiträge: 96
Registriert: 18.07.2011, 11:45
Echter Name: David Scherfgen
Wohnort: Hildesheim

Re: Farben aus Zeichen

Beitrag von TomasRiker »

Ja, und beim Darstellen der Zeichen nutzt Windows Subpixel-Rendering, wodurch Farben ins Spiel kommen. Bei der Herunterskalierung oder beim Rendering mit sehr kleiner Schriftgröße werden die Farben deutlicher sichtbar.
focus0941
Beiträge: 44
Registriert: 27.03.2023, 18:28
Benutzertext: hatte mit 3 einen Bart
Echter Name: Vladimir Ilyushko

Re: Farben aus Zeichen

Beitrag von focus0941 »

Ok, das habe ich jetzt verstanden, aber kann man auch irgendwie vorraussagen, welche Farbe ein bestimmtes Zeichen kriegt?
Benutzeravatar
TomasRiker
Beiträge: 96
Registriert: 18.07.2011, 11:45
Echter Name: David Scherfgen
Wohnort: Hildesheim

Re: Farben aus Zeichen

Beitrag von TomasRiker »

Realistisch nur durch Ausprobieren. Wahrscheinlich klappt das auch nicht auf jedem System gleich - es ist wahrscheinlich, dass man auf einem anderen Rechner (anderer Monitor, andere Grafikkarte, andere Windows-Version, andere Schriftart oder -größe ...) andere Farben sieht.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5040
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Farben aus Zeichen

Beitrag von Schrompf »

Man kann doch aber auch die Zeichen der Konsole einfach einfärben, oder? Also absichtlich Farben anzeigen, nicht nur durch SubPixel-Effekte im Monitor. Konsole-Farben kriegst Du, indem Du taktische Sonderzeichen ausprintest. Die tauchen dann nicht als Zeichen in der Anzeige auf, sondern konfigurieren nur die nachfolgende Textausgabe. Auf die Schnelle habe ich StackOverflow gefunden: https://stackoverflow.com/questions/484 ... -sequences
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2543
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Farben aus Zeichen

Beitrag von Jonathan »

Insgesamt ist der Effekt hier wohl eher als Bug zu betrachten. Also als Bug in deinem Programm:

"Worte dürfen nicht als einzelne Buchstaben gerendert werden, es entstehen sonst bei leicht überlappenden Buchstaben Fehler."

Du renderst wohl sehr viele sehr kleine Buchstaben unabhängig. Python versucht jeden einzelnen Buchstaben möglichst exakt darzustellen, und zwar alle in weiß, aber da du Buchstaben einzeln renderst verletzt du die Spezifikation des Buchstabenrenderings, also bekommst du ein falsches Ergebnis (Farben die nicht da sein sollten). (Damit Subpixelrendering korrekt funktionieren kann muss es ja auf die Subpixelanordnung im Bildschirm abgestimmt sein. Wird ein anderer Bildschirm verwendet oder ist Subpixelrendering falsch konfiguriert, würdest du andere Farben bekommen).

Um das zu korrigieren, müsstest du entweder alles gleichzeitig rendern (weiß nicht, ob das hier überhaupt möglich ist), oder Subpixelrendering explizit deaktivieren. Wenn du Farben sehen will, solltest du die gemäß Spezifikation setzen (also z.B. so wie von Schrompf vorgeschlagen), dann sollte es auch auf jedem System funktionieren und gleich aussehen.

Der Englische Wikipediaartikel zum Thema ist übrigens auch recht gut. Die Idee dahinter ist auch echt clever, es lohnt sich, das man anzuschauen (3 mal höhere räumliche Auflösung, bei gleicher Anzahl Pixel, yay!) auch wenn man es danach im Alltag nie wieder bewusst verwendet.

Ich wäre btw. nicht so schnell darauf gekommen, dass es hier um Subpixelrendering geht, aber es macht natürlich total Sinn.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
TomasRiker
Beiträge: 96
Registriert: 18.07.2011, 11:45
Echter Name: David Scherfgen
Wohnort: Hildesheim

Re: Farben aus Zeichen

Beitrag von TomasRiker »

@Jonathan: Er rendert nichts, das ist eine ganz normale Windows-Konsole.
Antworten