TransparentSpriteColor - Rand trotzdem sichtbar!

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
kdeparade
Beiträge: 41
Registriert: 16.01.2006 21:08

TransparentSpriteColor - Rand trotzdem sichtbar!

Beitrag 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
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: TransparentSpriteColor - Rand trotzdem sichtbar!

Beitrag 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.
Zuletzt geändert von DarkDragon am 05.02.2006 14:32, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Ypser
XMas-Contest-Gewinner '03
Beiträge: 128
Registriert: 29.08.2004 14:35
Computerausstattung: Win7
Wohnort: Ingelheim
Kontaktdaten:

Beitrag 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...
Bild
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Oder die Hintergrundfarbe ähnlich der Randfarbe einstellen.
Also nichts so grelles wie Pink.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
kdeparade
Beiträge: 41
Registriert: 16.01.2006 21:08

Beitrag 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
Benutzeravatar
Ypser
XMas-Contest-Gewinner '03
Beiträge: 128
Registriert: 29.08.2004 14:35
Computerausstattung: Win7
Wohnort: Ingelheim
Kontaktdaten:

Beitrag 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)...
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Kann es nicht eher sein das dein Grafikprogramm einen Filter
benutzt der die Farbe am Rand verfaelscht ?
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag 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:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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.
kdeparade
Beiträge: 41
Registriert: 16.01.2006 21:08

Beitrag 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
Antworten