jan´s blurfilter mit camerazoom läuft fehlerhaft?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

rctuner

Betreff: jan´s blurfilter mit camerazoom läuft fehlerhaft?

BeitragMo, Feb 12, 2007 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo ich habe meiner kamera den camerazoom wert 1.5 gegeben. Nun leuft der Filter aber fehlerhaft. das bild der blurcam wirkt irgendwie versetzt, schwer zu beschreiben.
Muss ich den code irgendwo anpassen?

hier jan´s filter code:



Code: [AUSKLAPPEN]
;Blur Libary by Jan Kuhnert
;Diese Blur effekt Libary für Blitz Basic 3D wurde von Jan Kuhnert entwickelt.

Global Blur_image_primaer, blur_texture, blur_gw, blur_gh,Blur_W,Blur_H,Blur_R,Blur_g,Blur_B
Global Blur_image_secundaer,Blur_image_tri,Blur_Wett#,Blur_TX,Blur_TY,Blur_surface,Blur_def
Global Blur_Time,Blur_Timeset

Dim Blur_Point(10,10)

Function CreateBlur(BlurCam,CameraEntfernung# = 4,Weichen# = 0,r=255,g=255,b=255,Zoomeffekt# = 1.5,Blend = False,X_Teilung=1,Y_Teilung=1)
   Local sf,spr,w#,h#,BildschirmVerhaeltnis#
   Local ScaleX#,ScaleY#

   Dim Blur_Point(X_Teilung,Y_Teilung)
   
   Blur_TX=X_Teilung
   Blur_TY=Y_Teilung
   
   ;Blur_Cam = BlurCam
   
   Blur_R=r
   Blur_g=g
   Blur_B=b
   
   If blurimage = 0 Then
     FreeBlur()
   EndIf
   
   blur_gw = GraphicsWidth()
   blur_gh = GraphicsHeight()
   
   blur_texture = CreateTexture(blur_gw, blur_gh, 1+256)
   Blur_W=TextureWidth(blur_texture)
   Blur_H=TextureHeight(blur_texture)

   w#=Blur_W - blur_gw
   h#=Blur_H - blur_gh
   
   BildschirmVerhaeltnis#= Float(blur_gh)/Float(blur_gw)*CameraEntfernung#

   ScaleX# = CameraEntfernung# + (CameraEntfernung#*w#/Float(blur_gw))
   ScaleY# = BildschirmVerhaeltnis#+ (BildschirmVerhaeltnis#*h#/Float(blur_gh))

   BB_to_Pixel_X# =  (ScaleX#/Blur_W)
   BB_to_Pixel_Y# =  (ScaleY#/Blur_H)

   Local Schnitt_X#,Schnitt_Y#
   Schnitt_X#=((1.0/Blur_W)*w#)/2.0
   Schnitt_Y#=((1.0/Blur_H)*h#)/2.0

   spr = CreateMesh(BlurCam)
   sf = CreateSurface(spr)

   Local X,Y
   Local X2#,Y2#
   X2#=X_Teilung/2.0
   Y2#=Y_Teilung/2.0
   
   For X = 0 To X_Teilung
      For Y = 0 To Y_Teilung
         Blur_Point(X,Y) = AddVertex(sf,(X-X2#)/X2#,(Y-Y2#)/Y2#,0,(X/Float(X_Teilung))-(Schnitt_X#*((X-X2#)/X2#)),(-Y/Float(Y_Teilung))+(Schnitt_Y#*(Y-Y2#)/Y2#))
      Next
   Next
   For X = 1 To X_Teilung
      For Y = 1 To Y_Teilung
         AddTriangle sf,Blur_Point(X,Y),Blur_Point(X,Y-1),Blur_Point(X-1,Y)
         AddTriangle sf,Blur_Point(X,Y-1),Blur_Point(X-1,Y-1),Blur_Point(X-1,Y)
      Next
   Next

    EntityFX spr, 1+8+32

   EntityOrder spr, -(2^30)
   EntityBlend spr, 1
   EntityAlpha spr,0
   If Blend EntityBlend spr, 3
   
      ScaleEntity spr,1.0*CameraEntfernung#,0.75*CameraEntfernung#,1.0   

   PositionEntity spr,-BB_to_Pixel_X#,BB_to_Pixel_Y#,CameraEntfernung#
   
   Blur_W=(w#/2.0)
   Blur_H=(h#/2.0)
   
   EntityTexture spr, blur_texture
   
   Blur_image_primaer = spr
   Blur_surface = sf
   
   If Weichen# <>0
      Blur_image_secundaer = CopyEntity(spr,BlurCam)
      Blur_image_tri = CopyEntity(spr,BlurCam)

      Blur_Wett#=Weichen#
      
      PositionEntity Blur_image_primaer,-BB_to_Pixel_X#+((Sin#(0)*BB_to_Pixel_X#)*Weichen#/2.0),BB_to_Pixel_y#+(Cos#(0)*BB_to_Pixel_y#*Weichen#)/2.0,CameraEntfernung#,0
      
      PositionEntity Blur_image_secundaer,-BB_to_Pixel_X#+((Sin#(120)*BB_to_Pixel_X#)*Weichen#/2.0),BB_to_Pixel_y#+(Cos#(120)*BB_to_Pixel_y#*Weichen#)/2.0,CameraEntfernung#,0

      PositionEntity Blur_image_tri,-BB_to_Pixel_X#+((Sin#(240)*BB_to_Pixel_X#)*Weichen#/2.0),BB_to_Pixel_y#+(Cos#(240)*BB_to_Pixel_y#*Weichen#)/2.0,CameraEntfernung#,0

    EndIf
    
   

End Function

Function SetBlurUpdateTime(time)
   Blur_Timeset = time
End Function

Function SetBlurDeform(X,Y,MoveX#,MoveY#)
   Local Real_X,Real_Y
   Local VX#,VY#,VZ#
   Local REd,Green,Blue

   Real_X=Blur_TX/Float(blur_gw)*Float(X)
   Real_Y=Blur_TY/Float(blur_gh)*Float(Y)
   VX#=(Real_X-(Blur_TX/2.0))/Float(Blur_TX/2.0) +(MoveX#/Float(Blur_TX))
   VY#=(Real_Y-(Blur_TY/2.0))/Float(Blur_TY/2.0) +(MoveY#/Float(Blur_TY))
   VZ#=VertexZ#(Blur_surface,Blur_Point(Real_X,Real_Y))
   VertexCoords Blur_surface,Blur_Point(Real_X,Real_Y),VX#,VY#,VZ#
   REd=VertexRed(Blur_surface, Blur_Point(Real_X,Real_Y))
   Green=VertexGreen(Blur_surface, Blur_Point(Real_X,Real_Y))
   Blue=VertexBlue(Blur_surface, Blur_Point(Real_X,Real_Y))
   VertexColor Blur_surface, Blur_Point(Real_X,Real_Y), REd, Green, Blue ,1

End Function

Function InitDeform()
   Local Real_X,Real_Y
   Local VX#,VY#,VZ#
   Local REd,Green,Blue

   For Real_X=0 To Blur_TX
     For Real_Y=0 To Blur_TY
         VX#=(Real_X-(Blur_TX/2.0))/Float(Blur_TX/2.0)
         VY#=(Real_Y-(Blur_TY/2.0))/Float(Blur_TY/2.0)
         VZ#=VertexZ#(Blur_surface,Blur_Point(Real_X,Real_Y))
         VertexCoords Blur_surface,Blur_Point(Real_X,Real_Y),VX#,VY#,VZ#
         REd=VertexRed(Blur_surface, Blur_Point(Real_X,Real_Y))
         Green=VertexGreen(Blur_surface, Blur_Point(Real_X,Real_Y))
         Blue=VertexBlue(Blur_surface, Blur_Point(Real_X,Real_Y))
         VertexColor Blur_surface, Blur_Point(Real_X,Real_Y), REd, Green, Blue ,0
      Next
   Next
   Blur_def=1

End Function

Function UpdateBlur(power#)
   Local Time
   If power# >0.99 Then power# = 0.99

   If Blur_Wett# <>0
      If power# >0.48 Then power# = 0.48
      EntityAlpha Blur_image_secundaer, power#
      EntityColor Blur_image_secundaer,Blur_R,Blur_g,Blur_B
      EntityAlpha Blur_image_tri, power#
      EntityColor Blur_image_tri,Blur_R,Blur_g,Blur_B
   EndIf

   EntityAlpha Blur_image_primaer, power#
   EntityColor Blur_image_primaer,Blur_R,Blur_g,Blur_B
   Time = MilliSecs()
   If Blur_Time < Time-Blur_Timeset
      Blur_Time = Time
      CopyRect  0, 0, blur_gw, blur_gh, Blur_W, Blur_H, BackBuffer(), TextureBuffer(blur_texture)
   EndIf
End Function

Function SetBlurColor(R,G,B)
   If R > 255 Then R= 255
   If G > 255 Then G= 255
   If B > 255 Then B= 255
   If R < 0 Then R= 0
   If G < 0 Then G= 0
   If B < 0 Then B= 0
   Blur_R=R:Blur_g=G:Blur_B=B
End Function

Function SetBlurParent(Parent)
   Local X#,Y#,Z#
   X#=EntityX#(Blur_image_primaer,0)
   Y#=EntityY#(Blur_image_primaer,0)
   Z#=EntityZ#(Blur_image_primaer,0)
   EntityParent Blur_image_primaer,Parent
   PositionEntity Blur_image_primaer,X#,Y#,Z#,False
   If Blur_Wett# <>0
      X#=EntityX#(Blur_image_secundaer,0)
      Y#=EntityY#(Blur_image_secundaer,0)
      Z#=EntityZ#(Blur_image_secundaer,0)
      EntityParent Blur_image_secundaer,Parent
      PositionEntity Blur_image_secundaer,X#,Y#,Z#,False
      
      X#=EntityX#(Blur_image_tri,0)
      Y#=EntityY#(Blur_image_tri,0)
      Z#=EntityZ#(Blur_image_tri,0)
      EntityParent Blur_image_tri,Parent
      PositionEntity Blur_image_tri,X#,Y#,Z#,False
   EndIf
End Function

Function FreeBlur()
   FreeEntity Blur_image_primaer
   If Blur_Wett# <>0
      FreeEntity Blur_image_secundaer
      FreeEntity Blur_image_tri
      Blur_image_secundaer=0
      Blur_image_tri=0
   EndIf
   Blur_def=0
   FreeTexture blur_texture
   Blur_image_primaer=0
   blur_texture=0
   Blur_Wett=0
End Function
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
  • Zuletzt bearbeitet von rctuner am Mo, Feb 12, 2007 21:56, insgesamt einmal bearbeitet

StepTiger

BeitragMo, Feb 12, 2007 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke mal, da war das sprite nicht ganz optimal positioniert oder die textur nicht richtig skaliert.

das "leuft" dann natürlich nicht so wie es soll.

Das Problem hatte ich auch mal bei einem Versuch einen Blur Filter zu schreiben. Ich habs damals einfach aufgegeben, hatte keine Lust, mich weiter mit dem Problem auseinanderzusetzen, "leuft" ja auch so.

Frage: Wofür brauchst du das?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

rctuner

BeitragMo, Feb 12, 2007 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@ "leuft" okay ich hab den rechtschreibfehler ja schon gemerkt^^

wofür ich die blurlib brauche? für mein aktuelles auto rennspiel. je nach zunehmender geschwindigkeit soll das bild verschwimmen.

Zitat:
"leuft" ja auch so.
nein eben nicht. das ist ja das problem Smile
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]

StepTiger

BeitragMo, Feb 12, 2007 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso. Motion Blur.
Da gabs auch extra Funktions Libs zu. (Direkt zu Motion Blur)
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

rctuner

BeitragMo, Feb 12, 2007 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
stimmt es muss an der scallierung oder positionierung liegen. nur finde ich nicht genau raus wo und was Crying or Very sad
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]

FireballFlame

BeitragDi, Feb 13, 2007 0:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Notfalls kannst du ja mal unsere BlurLib (Blackspider's und meine) probieren ^^ (da isse)
Könnt aber sein, dass das da auch auftritt... Confused
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Jan_

Ehemaliger Admin

BeitragDi, Feb 13, 2007 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst du mal nen download bereitstellen, so wie du es gemacht hast?
dann könnte ich es mir mal ansehen.
between angels and insects

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group