Seite 1 von 2

TransparentSpriteColor - Rand trotzdem sichtbar!

Verfasst: 05.02.2006 13:07
von kdeparade
Bin noch dabei mich mit der Grafikprogrammierung anzufreunden.
Bitte entschuldigt daher die scheinbar banale Frage.
Habe mich in zig Beispielprogrammen umgetan und habe folgenden Code verwendet.

LoadSprite(0, "bild.bmp", #PB_Sprite_Texture)
CreateSprite3D(1, 0)
Sprite3DQuality(1)
TransparentSpriteColor(0, 255, 0, 255) ; Our pink is transparent :)
If Start3D()
;RotateSprite3D(1, x, 0)
DisplaySprite3D(1, 400, 300)
Stop3D()

Im Beispielcode war beschrieben, das die Farbe "Schweinchenrosa" nicht dargestellt würde. ABER... Ein rosa Rand ist trotzdem sichtbar. Wie kann man eine Grafik ohne Rand darstellen?
Gruss KU

Re: TransparentSpriteColor - Rand trotzdem sichtbar!

Verfasst: 05.02.2006 13:23
von DarkDragon
kdeparade hat geschrieben:Im Beispielcode war beschrieben, das die Farbe "Schweinchenrosa" nicht dargestellt würde. ABER... Ein rosa Rand ist trotzdem sichtbar.
Altbekanntes Problem, hat sich nichts geändert, mit Alphatransparenz kommst du auch nicht weiter, da dort ein Bug steckt, was ich so gelesen hab.

[EDIT]
Achso, ich dachte schon du zeichnest die Grafiken mit semitransparentem Antialias, was auch einen Rand erzeugt.

Verfasst: 05.02.2006 14:29
von Ypser
Das liegt am Sprite3DQuality(1).
Dadurch verschwimmen die Pixel etwas, logischerweise auch die am Rand zum Rosa. Der Effekt ist, dass sich
dort Pixel befinden, die zwar rosa sind, aber nicht genau den Farbwert der TransparentSpriteColor() haben,
und darum doch angezeigt werden.
Abhilfe: Im Moment hilft nur die Sprite3DQuality() auf 0 zu belassen...

Verfasst: 05.02.2006 15:53
von Batze
Oder die Hintergrundfarbe ähnlich der Randfarbe einstellen.
Also nichts so grelles wie Pink.

Verfasst: 05.02.2006 16:46
von kdeparade
Also das Umstellen der Qualität hat nichts gebracht.
Das Anpassen der Farben ist grundsätzlich ok aber ich bin recht unflexibel.
Wollte eigentlich mit einer Ini-Datei die darzustellenden Bilder jedem Benutzer selbst überlassen. Mit einer Vorgabe, dass hat der Hintergrund "Schweinchenrosa" seien soll.
Egal welche Filterfarbe ich wähle, ich werde immer mit einem Paar, dem Vordergrundbild und einem passenden Hintergrundbild arbeiten müssen :cry:
Schade eigentlich.

Gruss KU

Verfasst: 05.02.2006 16:58
von Ypser
Sicher dass der Rand überall den richtigen Farbwert hat?
Welches Format ist die Grafik?
JPeg verschmiert beim komprimieren meistens die Farben.
Speichere es als BMP ab und geh sicher, dass das Grafikpropgramm ganz klar den Rand zieht
(kein AA / Weichzeichnen)...

Verfasst: 05.02.2006 16:58
von edel
Kann es nicht eher sein das dein Grafikprogramm einen Filter
benutzt der die Farbe am Rand verfaelscht ?

Verfasst: 05.02.2006 17:07
von Batze
Es liegt zwar wahrscheinlich an dem Grafikprogramm, aber wenn nicht könntest du dem Benutzer doch überlassen welche Hintergrundfarbe er wählt.
Also auch in der INI-Datei. :allright:

Verfasst: 05.02.2006 17:08
von Zaphod
photoshop, gimp, etc machen bei sehr vielen aktionen im truecolor modus antialiasing. antialiasing verwischt dann zb den rand, so dass am rand pixel sind, die nicht exakt (255,0,255) sind. zoom mal in deinem grafikprogram ganz nah an den rand. der müßte vor einem einfabigen hintergrund ziemlich zackig aussehen. tut er es nicht, dann ist das dein problem.

Verfasst: 05.02.2006 18:01
von kdeparade
Das mit Gimp und dem "Glätten" ist mir noch nicht eingefallen.
Kann man das in Gimp ausschalten?
Vielleicht hilft es die Farbtiefe runterzusetzen?

Aber erstmal danke.
Gruss KU