Bild verschwimmen lassen

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Ratchet

Betreff: Bild verschwimmen lassen

BeitragMo, Dez 04, 2006 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte ein Bild verschwommen darstellen, möglichst in Echtzeit. In vielen 3D Spielen hat man diesen Effekt wo dann z.B. der Hintergrund verschwommen ist, so wie eine Kameraunschärfe. In einem Spiel wird sogar richtig die Kameraschärfe verändert, also vom Hintergrund zum Vordergrund fokusiert. Und das ist 100% Echtzeit. Gibt es da eventuell sogar spezielle OpenGL/DirectX-Befehle für oder wie könnte man das am Besten realisieren?
Habe schon rumprobiert indem ich das Bild einfach mehrmals aufeinander ausgebe, mit etwas trasparenz und immer ein wenig verschoben. Richtig verschwommen/unscharf sieht es aber nicht aus. Außerdem sind meine Bilder sehr groß (min. 1024x768), da kann es bei einigen Rechners schon mal ruckeln wenn ich das Bild fünf oder mehr mal zeichne.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Blitzcoder

Newsposter

BeitragMo, Dez 04, 2006 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Möglichkeit:Code: [AUSKLAPPEN]
Strict

Graphics 800,600,0

Global img:TImage=LoadImage("test.jpg")

While Not KeyDown(KEY_ESCAPE)
   
   If KeyDown(KEY_SPACE)
      drawblurimage img,0,0,15
   Else
      SetAlpha 1
      DrawImage img,0,0
   EndIf

   Flip;Cls
Wend
End



Function drawblurimage(image:TImage,x:Int,y:Int,factor:Int)
   SetBlend alphablend
   SetScale 1,1
   SetRotation 0
   SetAlpha 1.0/factor
   For Local i:Int =0 To factor
      DrawImage image,x+i,y+i
   Next
End Function


=====Hier Download===== (Für Blur Leerteste drücken)

So macht man es in B3D, ist in Bmax aber nicht so schön anzusehen:


Code: [AUSKLAPPEN]
Strict

Graphics 800,600,0


Global img1:TPixmap = LoadPixmap:TPixmap( "test.jpg" )
Global img3:TPixmap=ResizePixmap( img1,PixmapWidth(img1)/10,PixmapHeight(img1)/10)

Global img2:TImage = LoadImage(img3)


While Not KeyDown(KEY_ESCAPE)
   
   SetScale 10,10
   DrawImage img2,0,0

   Flip;Cls
Wend
End

MfG Blitzcoder

Ratchet

BeitragMo, Dez 04, 2006 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau so mache ich es ja im Moment (siehe erster Post). Ich woltle ja wissen ob es da eine elegantere Lösung gibt.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]
 

Dreamora

BeitragMo, Dez 04, 2006 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Elegantere Lösungen gibt es verschiedene:

1. Du renderst das ganze auf einen kleineren Hintergrund und zeichnest es gestreckt. Wenn das Image mit filtered image flag erstellt wurde wird das automatisch "unschärfe" geben, hat aber nichts mit DoF zu tun wie man es bei Cam mit Fokusieren oder so erreichst.

2. Du baust dir Shader Support ein um den gleichen Effekt direkt hardwareseitig zu erreichen, sofern du den entsprechenden Shader schreiben kannst. (mit DX7 also Max2D DX garnicht machbar. Mit OpenGL wenn du es selbst unter zuhilfe nahme von pub.glew integrierst)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group