Schliereneffekt [B3D]

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Chrise

Betreff: Schliereneffekt [B3D]

BeitragFr, Jan 23, 2009 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal wieder Lust gehabt mit Cameras rumzuspielen^^
Hoffe es gefällt euch!

Würde mich über Meinungen und Tipps freuen Smile

Einfach mit CreateFlow(camera) den Flow bei gewünschter Kamera erstellen und mit UpdateFlow(Camera,flow-stärke (0-1) 0:schwach 1:stark) aktualisieren.
Seht es euch einfach an, ich weiß nicht, wie ich das so recht beschreiben soll. Hier ein Beispielcode:

Code: [AUSKLAPPEN]
timer = CreateTimer(25)

Graphics3D 800,600,0,2
SetBuffer BackBuffer()

camera = CreateCamera()
CreateFlow(camera,256)

light = CreateLight()
RotateEntity light, 90, 0, 0

cube = CreateCube()
RotateEntity cube, 20, 50, 50
PositionEntity cube,0,0,5
EntityColor cube,255,0,0

While Not KeyHit(1)
   w#=w#+5
   TurnEntity cube,0,1+(Cos(w#/3)+1),Sin(w#)
   PositionEntity cube,Sin(w#),0,5
        EntityColor cube,255,0,(Cos(w#/25)+1)*255
   
   UpdateFlow(camera,Abs(Sin(w#/7)))
   RenderWorld
   
   WaitTimer timer
   Flip 0
Wend
End

Function CreateFlow(cameraFlow,size=256)
   NameEntity CameraFlow,Str$(size)
   camera_flow = CreateCamera()
   
   CameraProjMode CameraFlow,1
   CameraProjMode camera_flow,0
   CameraRange Camera_flow,0.1,1000

   CameraRange CameraFlow,0.1,1000
   CameraViewport camera_flow,0,0,size,size
   EntityParent camera_flow,CameraFlow
   
   flow_tex = CreateTexture(size,size)
   flow = CreateCube()
   NameEntity flow,Str$(flow_tex)
   EntityFX flow,1
   EntityTexture flow,flow_tex
   PositionEntity flow,0,0,2
   EntityOrder flow,-1001
   EntityParent flow,CameraFlow
   ;EntityBlend flow,3
   EntityAlpha flow,0.95
   EntityOrder camera_flow,-1000
   
   Return CameraFlow   
End Function
Function Updateflow(CameraFlow,a#=0.5)
   Local size,camera_flow,flow,flow_tex
   size = Int(EntityName(CameraFlow))
   camera_flow = GetChild(CameraFlow,1)
   flow = GetChild(CameraFlow,2)
   flow_tex = Int(EntityName(flow))

   a# = 0.75+(a#*0.24)
   EntityAlpha flow,a#

   CameraProjMode camera_flow,1
   Cls
   RenderWorld
   CopyRect 0,0,size,size,0,0,BackBuffer(),TextureBuffer(flow_tex)
   CameraProjMode camera_flow,0
End Function
Function ClearFlow(CameraFlow)
   Local size,camera_flow,flow,flow_tex
   size = Int(EntityName(CameraFlow))
   camera_flow = GetChild(CameraFlow,1)
   flow = GetChild(CameraFlow,2)
   flow_tex = Int(EntityName(flow))
   
   FreeEntity flow
   FreeTexture flow_tex
   FreeEntity camera_flow
End Function


Und hier noch die Datei zum einbinden:

Code: [AUSKLAPPEN]
Function CreateFlow(cameraFlow,size=256)
   NameEntity CameraFlow,Str$(size)
   camera_flow = CreateCamera()
   
   CameraProjMode CameraFlow,1
   CameraProjMode camera_flow,0
        CameraRange Camera_flow,0.1,1000
   
   CameraRange CameraFlow,0.1,1000
   CameraViewport camera_flow,0,0,size,size
   EntityParent camera_flow,CameraFlow
   
   flow_tex = CreateTexture(size,size)
   flow = CreateCube()
   NameEntity flow,Str$(flow_tex)
   EntityFX flow,1
   EntityTexture flow,flow_tex
   PositionEntity flow,0,0,2
   EntityOrder flow,-1001
   EntityParent flow,CameraFlow
   ;EntityBlend flow,3
   EntityAlpha flow,0.95
   EntityOrder camera_flow,-1000
   
   Return CameraFlow   
End Function
Function Updateflow(CameraFlow,a#=0.5)
   Local size,camera_flow,flow,flow_tex
   size = Int(EntityName(CameraFlow))
   camera_flow = GetChild(CameraFlow,1)
   flow = GetChild(CameraFlow,2)
   flow_tex = Int(EntityName(flow))

   a# = 0.75+(a#*0.24)
   EntityAlpha flow,a#

   CameraProjMode camera_flow,1
   Cls
   RenderWorld
   CopyRect 0,0,size,size,0,0,BackBuffer(),TextureBuffer(flow_tex)
   CameraProjMode camera_flow,0
End Function
Function ClearFlow(CameraFlow)
   Local size,camera_flow,flow,flow_tex
   size = Int(EntityName(CameraFlow))
   camera_flow = GetChild(CameraFlow,1)
   flow = GetChild(CameraFlow,2)
   flow_tex = Int(EntityName(flow))
   
   FreeEntity flow
   FreeTexture flow_tex
   FreeEntity camera_flow
End Function
  • Zuletzt bearbeitet von Chrise am Fr, Jan 23, 2009 20:07, insgesamt 3-mal bearbeitet

Tankbuster

BeitragFr, Jan 23, 2009 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
"WaitTimer" und "Flip 1" sind zusammen nicht sehr schön. Aber der Effekt sieht gut aus Wink
Twitter
Download Jewel Snake!
Windows|Android

Xaymar

ehemals "Cgamer"

BeitragFr, Jan 23, 2009 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde es als motionblur für den kompletten screen bezeichnen.

du kannst daraus nen anderen effekt machen wenn du entityorder auf 1001 stellst;)
Warbseite

Chrise

BeitragFr, Jan 23, 2009 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
okay hab mal Flip 0 draus gemacht ^^
Hoffe das meintest du Razz

Cgamer hat Folgendes geschrieben:
ich würde es als motionblur für den kompletten screen bezeichnen.

du kannst daraus nen anderen effekt machen wenn du entityorder auf 1001 stellst;)


Hmm Motionblur glaube ich gar nicht mal, weil das ja nicht so nach sich zieht ^^
Hey stimmt, das sieht auch cool aus!
Aber der Code verbietet ja keinem ein wenig daran rumzubasteln Wink

Dankeschön schonmal

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group