Blending
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Blending
Hat jemand eine Idee wie man ein Blending wie ähnlich in diesen Bild(Auge)
http://phraseologie.free.fr/Copie%20de%20dragon.jpg
Programmieren, Malen oder andere möglichkeiten machen könnte?
Mein Problem ist das ungleichmäßige Verschwimmen der Farbe mit den Hintergrund
Am Liebsten Wäre mir ein Grafikprogramm das etwas derartiges kann
http://phraseologie.free.fr/Copie%20de%20dragon.jpg
Programmieren, Malen oder andere möglichkeiten machen könnte?
Mein Problem ist das ungleichmäßige Verschwimmen der Farbe mit den Hintergrund
Am Liebsten Wäre mir ein Grafikprogramm das etwas derartiges kann
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
-
Kekskiller
- Beiträge: 752
- Registriert: 14.09.2004 21:39
- Kontaktdaten:
Also ich hatte da mal sone schöne Funktion geschrieben...
Also im Prinzip so hier:
- großes Keisbild machen
- mit bestimmtem Transparentwert malen
- bild verkleinern und mit gleicher transparenz auf den bilschirm malen (zentriert)
dan eigentlich nur halt noch so oft verkleinern und malen, wie viele Übergänge du haben willst... Ist aber auch nicht grad das nonplus-Ultra. Da du ja sicher die Mathematik dahinter wissen willst, wird dir ja wohl auch egal sein, dass PB solche grauen Bitmaps durch Directx benutzen kann, um Schattierungen hervorzurufen.
Aber eigentlich könnt ich ja mal gucken, ob ich die mal optimieren kann, wäre ja bestimmt schön so... Naja, aber für so große Kreisflächen taugt das nicht. Du könntest als schnelle Variante ja mal einfach die ein Bild mit einem Kreis machen, dass transparent aufmalen, es verkleinern, nochmal auf dem gleichen Punkt transparent aufmalen... und so weiter.#ScreenWidth=320
#ScreenHeight=240
Procedure PutPixel(x.w,y.w, ired.w,igre.w,iblu.w, t.f)
If x.w>=0 And y.w>=0 And x.w<#ScreenWidth And y.w<#ScreenHeight
ocol.l = Point(x.w,y.w)
ored.w = Red(ocol.l)
ogre.w = Green(ocol.l)
oblu.w = Blue(ocol.l)
If ored.w<ired.w
fred.w = ored.w + ( Abs(ored.w - ired.w) * t.f )
ElseIf ored.w>ired.w
fred.w = ired.w + ( Abs(ored.w - ired.w) * t.f )
ElseIf ored.w=ired.w
fred.w=ored.w
EndIf
If ogre.w<igre.w
fgre.w = ogre.w + ( Abs(ogre.w - igre.w) * t.f )
ElseIf ogre.w>igre.w
fgre.w = igre.w + ( Abs(ogre.w - igre.w) * t.f )
ElseIf ogre.w=igre.w
fgre.w=ogre.w
EndIf
If oblu.w<iblu.w
fblu.w = oblu.w + ( Abs(oblu.w - iblu.w) * t.f )
ElseIf oblu.w>iblu.w
fblu.w = iblu.w + ( Abs(oblu.w - iblu.w) * t.f )
ElseIf oblu.w=iblu.w
fblu.w=oblu.w
EndIf
Plot(x.w, y.w, RGB(fred.w,fgre.w,fblu.w))
EndIf
EndProcedure
Also im Prinzip so hier:
- großes Keisbild machen
- mit bestimmtem Transparentwert malen
- bild verkleinern und mit gleicher transparenz auf den bilschirm malen (zentriert)
dan eigentlich nur halt noch so oft verkleinern und malen, wie viele Übergänge du haben willst... Ist aber auch nicht grad das nonplus-Ultra. Da du ja sicher die Mathematik dahinter wissen willst, wird dir ja wohl auch egal sein, dass PB solche grauen Bitmaps durch Directx benutzen kann, um Schattierungen hervorzurufen.
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Ich glaube du hasst nicht ganz verstanden
ich brauche das um den Auge also der Lichtefekt NICHT Das Auge selber!
Das habe ich schon!
mit Malen und dann Verschwimmenlassen(schärfe minimieren) habe ich es schon probiert.
Nur leider sieht das lang nicht so gut aus!
Wenn du mich verstehst.
Am Besten wäre eine Art halbtransparentes Sprite Das ich auf Das Bild lege dass es mittig wäre
Wichtig Halbtransparent NICHT Transparent da es sonst nur "Aufgelegt" aussieht!
Also am besten ein Grafikprogramm mit den man ein Solchen Effekt machen kann. Möglichchst realistisch!
Obwohl ich schon mit Halbtransparenz arbeite kann ich nicht gut genug malen!
Aber trotzdem Danke wenn du mich falsch verstanden haben soltest!
[EDIT]
Code fürs Verschwimmen lassen:
Wobei ihr merken wird das auch der Code noch nicht ausgereift ist
==> Horenzontal, Vertical
ich brauche das um den Auge also der Lichtefekt NICHT Das Auge selber!
Das habe ich schon!
mit Malen und dann Verschwimmenlassen(schärfe minimieren) habe ich es schon probiert.
Nur leider sieht das lang nicht so gut aus!
Wenn du mich verstehst.
Am Besten wäre eine Art halbtransparentes Sprite Das ich auf Das Bild lege dass es mittig wäre
Wichtig Halbtransparent NICHT Transparent da es sonst nur "Aufgelegt" aussieht!
Also am besten ein Grafikprogramm mit den man ein Solchen Effekt machen kann. Möglichchst realistisch!
Obwohl ich schon mit Halbtransparenz arbeite kann ich nicht gut genug malen!
Aber trotzdem Danke wenn du mich falsch verstanden haben soltest!
[EDIT]
Code fürs Verschwimmen lassen:
Code: Alles auswählen
InitSprite()
InitKeyboard()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
OpenScreen(800,600,16,"")
LoadSprite(0,"E:\Bilder\Games\BlendGreen.jpg")
CopySprite(0,1)
Global Detail.b : Detail = 2
Global e.b : e = 30 ;e = Empfindlichkeit und Detail Verschwimmgröße
StartDrawing(SpriteOutput(1))
;{ Herenzontal
For y = 0 To SpriteHeight(0)
For x = 0 To SpriteWidth(0)
Color1 = Point(x,y)
R1 = Red(Color1)
G1 = Green(Color1)
B1 = Blue(Color1)
Color2 = Point(x+1,y)
R2 = Red(Color2)
G2 = Green(Color2)
B2 = Blue(Color2)
If Abs(R1-R2) > e Or Abs(G1-G2) > e Or Abs(B1-B2) > e
For xx = Detail*-1 To Detail
If xx <> 0 And X+xx > -1 And X+xx < SpriteWidth(1)+1
Colorx = Point(X+xx,Y)
Rx = Red(Colorx)
Gx = Green(Colorx)
Bx = Blue(Colorx)
diR.f = R1 - Rx
diG.f = G1 - Gx
diB.f = B1 - Bx
zR.f = diR / Detail
zG.f = diG / Detail
zB.f = diB / Detail
i.f = xx
eR = Rx + (zR * (Abs(i)*-1+Detail))
eG = Gx + (zG * (Abs(i)*-1+Detail))
eB = Bx + (zB * (Abs(i)*-1+Detail))
;Zeichnen
FrontColor(eR, eG, eB)
Plot(X+xx,Y)
EndIf
Next
EndIf
Next
Next
;}
;{ Vertical
For x = 0 To SpriteWidth(0)
For y = 0 To SpriteHeight(0)
Color1 = Point(x,y)
R1 = Red(Color1)
G1 = Green(Color1)
B1 = Blue(Color1)
Color2 = Point(x,y+1)
R2 = Red(Color2)
G2 = Green(Color2)
B2 = Blue(Color2)
If Abs(R1-R2) > e Or Abs(G1-G2) > e Or Abs(B1-B2) > e
For yy = Detail*-1 To Detail
If yy <> 0 And Y+yy > -1 And Y+yy < SpriteHeight(1)+1
Colorx = Point(X,Y+yy)
Rx = Red(Colorx)
Gx = Green(Colorx)
Bx = Blue(Colorx)
diR.f = R1 - Rx
diG.f = G1 - Gx
diB.f = B1 - Bx
zR.f = diR / Detail
zG.f = diG / Detail
zB.f = diB / Detail
i.f = yy
eR = Rx + (zR * (Abs(i)*-1+Detail))
eG = Gx + (zG * (Abs(i)*-1+Detail))
eB = Bx + (zB * (Abs(i)*-1+Detail))
;Zeichnen
FrontColor(eR, eG, eB)
Plot(X,Y+yy)
EndIf
Next
EndIf
Next
Next
;}
StopDrawing()
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
DisplaySprite(1,0,0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
SaveSprite(1, "E:\Bilder\Games\BlendGreenb.jpg", #PB_ImagePlugin_JPEG,5)
EndWobei ihr merken wird das auch der Code noch nicht ausgereift ist
==> Horenzontal, Vertical
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
nein wir habens erst einmal von verschwimmen gehabt da ich aber festgestellt habe das das Scheiße aussieht wollte ich das echte "Blending"
Das ganze mit den verschwimmen war nur ein Versuch!
Deshalb frage ich euch ja nach einer Lösung für ein echtes "Blending"
Oder wie auch immer ihr so etwas bezeichnet
<== keine Ahnung von so etwas
Das ganze mit den verschwimmen war nur ein Versuch!
Deshalb frage ich euch ja nach einer Lösung für ein echtes "Blending"
Oder wie auch immer ihr so etwas bezeichnet
<== keine Ahnung von so etwas
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Juhuu ZeHa hat mein Problem gut erkannt
aber ZeHa wenn man es Halbtransparent Auflegt also kurz mit dem Hintergrung verschwimmen lässt sieht das doch keine Sau.
Natürlich darf di Halbtransparenz nicht primitiv sein wie
============== Bild
==============Transparenz
============== Bild
==============Transparenz
============== Bild
==============Transparenz
.
.
.
Das würde wie Streifen aussehen sondern richtig haltransprent!
aber ZeHa wenn man es Halbtransparent Auflegt also kurz mit dem Hintergrung verschwimmen lässt sieht das doch keine Sau.
Natürlich darf di Halbtransparenz nicht primitiv sein wie
============== Bild
==============Transparenz
============== Bild
==============Transparenz
============== Bild
==============Transparenz
.
.
.
Das würde wie Streifen aussehen sondern richtig haltransprent!
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Schon probiert aber das anzeigen ist ja nicht das Problem sonder die Form "Malen" oder am besten mit ein grafikprogramm erzeugen meine sehen hässlich aus! auch wenn sie schon perfekt halbtransparent sind (siehe mein Code
)
das heist ich brauche die Form!
(Ring und Strahlen)
Was für ein Grafikprogramm kann so etwas?
<== hat nur Paint
das heist ich brauche die Form!
(Ring und Strahlen)
Was für ein Grafikprogramm kann so etwas?
<== hat nur Paint
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
@ZeHa
sorry, ist nicht ganz topic, aber....
ich hab da diverse probs mit DisplayTranslucideSprite()
das teil ist einfach sch**** langsam
ich kann es deswegen nicht verwänden
auch mit StartSpecialFX() wirds nicht sehr viel schneller.....wieso das?
3D Sprites sind ei mir dabei um längen schneller
sorry, ist nicht ganz topic, aber....
ich hab da diverse probs mit DisplayTranslucideSprite()
das teil ist einfach sch**** langsam
ich kann es deswegen nicht verwänden
auch mit StartSpecialFX() wirds nicht sehr viel schneller.....wieso das?
3D Sprites sind ei mir dabei um längen schneller
-.-"