CameraZoom does not get tweened
Blitz3D Forums/Blitz3D Programming/CameraZoom does not get tweened
| ||
Hi all. This is more or less just an FYI: I was recently looking at one of my projects and noticed that the camera was a bit jerky when zooming in and out. I found the problem: CameraZoom values do not get tweened! A very very simple bit of code to demonstrate: Graphics3D 640,480,16,2 cube=CreateCube() camera=CreateCamera() light=CreateLight() MoveEntity camera,0,10,0 PointEntity camera,cube CameraZoom camera,1 CaptureWorld TurnEntity cube,179,0,0 Repeat CameraZoom camera,Rand(2) For n#=0 To 1 Step .01 RenderWorld n# Flip If KeyHit(1) Then End Next Until False Um, Is this a bug? (should i post it there?) I got around it by storing zoom values and doing a bit of maths before rendering, but this is one of the commands useful in creating TV type camera views, and this was a pain in the ass until i found out why it wasnt working! EDIT: Heres an example of the "fixed" loop: Graphics3D 640,480,16,2 cube=CreateCube() camera=CreateCamera() light=CreateLight() MoveEntity camera,0,10,0 PointEntity camera,cube CameraZoom camera,1 Startzoom#=1 ;Start zoom, part of tween fix CaptureWorld TurnEntity cube,179,0,0 Repeat newzoom#=Rnd(1,4); Target zoom For n#=0 To 1 Step .01 CameraZoom camera,Float(startzoom+(newzoom-startzoom)*n) ;The part inside FLOAT calculates what the zoom level should be for this "tween#" value. ;what the zoom level should be for this "tween#" value, using the old and new zoom values. RenderWorld n# Flip If KeyHit(1) Then End Next Startzoom#=newzoom ;Store the newest zoom Until False |
| ||
Gotta love Blitz' ability to do Function Overloading!!!!Function CameraZoom(camera,zoom#) ScaleEntity camera,1/zoom,1/zoom,1 End Function ^.^ |
| ||
Maybe you could add some useful stuff to the Manual comments: CameraZoom |
| ||
Thanks for pointing that out Beaker :D |