Antialias bei Bilder

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

soli

Betreff: Antialias bei Bilder

BeitragSa, Feb 28, 2004 5:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Bräuchte eine Lösung oder Idee für BB2

Code: [AUSKLAPPEN]

Graphics 500,200,16,2

kugel=LoadImage("d:/eigene dateien/blitz/"+"Krot.bmp")
MaskImage kugel,192,192,192

While Not KeyHit(1)
   Cls
   
   Color 0,0,0
   Rect 0,0,100,200,1
   
   Color 000,200,0
   Rect 100,0,100,200,1
   
   Color 200,0,0
   Rect 200,0,100,200,1

   Color 0,0,200
   Rect 300,0,100,200,1
   
   Color 255,255,255
   Rect 400,0,100,200,1
         
   For x=0 To 4
      DrawImage kugel,30+x*100,50
   Next
   Flip
Wend


user posted image

Ich hätte gerne das die Kugel nicht so angefressen aussieht.
Vor allen Dingen soll das auch auf wechselnden bunten
Hintergrundgraphiken funktionieren

Kann jemand helfen?

soli
solitaire

TheShadow

Moderator

BeitragSa, Feb 28, 2004 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
tja... dazu must du dann "Alpha-Pixel malen"

und zwar machst du so eine Tabelle mit x,y-koordinate, alphawert und farbe. Diese Pixel malst du dann in den Umriss der Kugel rein - das geht am schnellsten - erfordert aber etwas Arbeit für so eine Tabelle...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Travis

BeitragSa, Feb 28, 2004 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du schon eine Bilddatei nimmst, dann würde ich die Kugel mit einem Grafikprogramm a la Photopaint neu malen. Wozu ein fehlerhaftes Bild nehmen und mit jedem Schleifendurchgang die Fehler rechnerisch ausbessern. Rolling Eyes

erstelle doch ein kleines 3D-Programm mit einer solchen Kugel und mache dann einen Screenshot oder so...
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Edlothiol

BeitragSa, Feb 28, 2004 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber die unschönen Ränder ausbessern kann er nicht mit nem Grafikprogramm. BB2D benutzt ja keine Alphachannels Evil or Very Mad , es lädt sie noch nichtmal mit Evil or Very Mad Evil or Very Mad

TheShadow

Moderator

BeitragSa, Feb 28, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreib einen Brief an Microsoft - die sollen DX nachbessern... Dann klappts auch mit BB Wink
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

BIG BUG

BeitragSa, Feb 28, 2004 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
zumindest aus PNG-Dateien wird der Alphachannel mit geladen. Kann man aber nur mit ReadPixel nutzen.

ansonsten hier mal ein neues Bild ohne störende Ränder
user posted image

habe es in der doppelten Auflösung gerendert und mit folgendem Code verkleinert(Antialiasing ohne Berücksichtigung der Maskcolor):

Code: [AUSKLAPPEN]

Graphics 600,300,32,2
 Const c_mx = 3

 skip = 4
; maskcolor = $FF00FF
; maskcolor = $F800F8 ;Grafikkartenbug?

 maskcolor = $000000

 Dim Col(c_mx)

 file$ = CommandLine$()
 If Not FileType (file$) Then
    file$ = Input$("Datei: ")
 Else 
    Print "Verarbeite Datei: " + file$
 EndIf

 start = LoadImage(file$)
 If Not start Then RuntimeError "Datei nicht gefunden!"

 ausgabe = CreateImage(ImageWidth(start)/2,ImageHeight(start)/2)
 If Not ausgabe Then RuntimeError "Fehler!"

 skip = Input("Skipwert(0-3): ")

 LockBuffer ImageBuffer(start)
 LockBuffer ImageBuffer(ausgabe)

 For x = 0 To ImageWidth(ausgabe)-1
   For y = 0 To ImageHeight(ausgabe)-1
     hx = x Shl 1
     hy = y Shl 1
     maskcnt = 0

     For u = 0 To c_mx   
       Col(u) = ReadPixelFast(hx+(u Shr 1),hy+(u And 1),ImageBuffer(start)) And $FFFFFF;kein Alphakanal
       If col(u) = maskcolor Then maskcnt = maskcnt + 1
     Next     

     If maskcnt > skip Then
        WritePixelFast x, y, maskcolor, ImageBuffer(ausgabe) 
     Else
        writecol = 0
        For u = 0 To c_mx
          If Col(u) <> Maskcolor
             Select maskcnt
               Case 0
                 writecol = writecol + ((Col(u) And $FCFCFC) Shr 2)
               Case 1
                 writecol = writecol + (((Col(u) Shr 16) And $FF) / 3) Shl 16 ;R
                 writecol = writecol + (((Col(u) Shr 8) And $FF) / 3) Shl 8   ;G
                 writecol = writecol + (Col(u)  And $FF) / 3                  ;B

               Case 2
                 writecol = writecol + ((Col(u) And $FEFEFE) Shr 1)
               Case 3
                 writecol = Col(u)
             End Select             
           EndIf
         Next
         WritePixelFast x, y, writecol, ImageBuffer(ausgabe)
      EndIf


   Next
 Next

 UnlockBuffer ImageBuffer(start)
 UnlockBuffer ImageBuffer(ausgabe)


 datei$ = Left (File$,Instr (File$,".")-1) + "_A.bmp"
 SaveImage (ausgabe, datei$)
 Print datei$ + " erzeugt!"

 FreeImage start
 FreeImage ausgabe


 WaitKey()
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

Edlothiol

BeitragSo, Feb 29, 2004 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Lädt BB den Alphachannel von PNG - Dateien wirklich mit? Tut es bei mir nicht, ich hatte das schon ausprobiert Confused

soli

BeitragSo, Feb 29, 2004 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@BigBug
Ich glaube dein Programm,
entfernt das Antialias aus dem bestehenden Bild.
Jetzt sind die Farben am Rand weg, dafür aber die
Kugel immer noch eckig.
Muss es mir aber während der Woche nochmal genauer ansehen.

Ich bräuchte etwas das die Übergänge zum Hintergrundbild sanfter berechnet. Das mit Alpha Kanal verstehe ich jetzt nicht ganz.
Ich hab mir zwar schon überlegt, die Ränder auf 50% Transparenz
zum Hintergrund zu verrechnen, bin mir aber nicht sicher,
ob sich die Mühe lohnt.

Hab mal im Projekte Forum das Spiel dazu vorgestellt.
https://www.blitzforum.de/view...5939#15939
solitaire

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group