Disable Tweening
Blitz3D Forums/Blitz3D Programming/Disable Tweening
| ||
Is there any way to bypass tweening for some objects using Mark's Tweening code that was included with b3D demo? because i need to 'warp' an animated character to a position without having that weird trail |
| ||
you can do the movement just before captureworld. Ie, queue them up with a type, then call captureworld as normal. |
| ||
As Rob says, if you call the Warp function before CaptureWorld so your mainloop looks like this (i think): warpstuff captureworld updateworld renderworld |
| ||
Unless you're applying this movement to a limb(I.e one being abused by an animated entity), in which case make a record and apply it after updateworld. |
| ||
odd though ive been doing that, and it didnt work heres a segment of the code While Not KeyHit(1) Repeat elapsed=MilliSecs()-time Until elapsed ticks=elapsed/period tween#=Float(elapsed Mod period)/Float(period) For k=1 To ticks time=time+period If k=ticks If Warp_MHero = 1 MoveEntity mHero,0,0,-107.974 Warp_MHero = 0 EndIf CaptureWorld Gosub CameraControl ;Camera Movement Gosub CharacterControl Gosub EnvironmentControl UpdateWorld Gosub PostAnimationControl EndIf Next RenderWorld tween# Gosub Draw2D Flip False Wend End |
| ||
It's been a while so I'm a bit vague, the MoveEntity is only taking effect at UpdateWorld so..., I think this is one of those times you need to either use PositionEntity or a call to ResetEntity is needed in addition to the MoveEntity. |
| ||
I think that the current tweening system definitely needs an overhaul. An entity flag that disables tweening would be a brilliant addition. |
| ||
i just tried with positionentity and even resetentity, but it doesnt work :( would there be any other work around? |
| ||
I think that the current tweening system definitely needs an overhaul. An entity flag that disables tweening would be a brilliant addition. I agree. Tweening needs a command to do for tweened entities what 'ResetEntity' does for collision entities (ie. Re-prime the entity's tween data so it behaves as though it was already at the position it has been moved to) |
| ||
You could make the entity invisible for a short time. |
| ||
That's still an ugly work around, though. I never could get tweening *just* right in Juno. In fact, for the menu, I enable back face culling on the gui for a frame as it fades in in order to get rid of the very nasty effects of tweening on newly created entities. |
| ||
Don't use tweening. I use the delta time method for making my code framerate independent. |
| ||
Don't use tweening. I use the delta time method for making my code framerate independent. I used to use delta time in my main project but I had to switch my physics integrator from simple euler to verlet due to numerical instabilities. Due to the need for a fixed timestep for the verlet integrator, render tweening was a better fit. Tweening is pretty good. It just comes up short of being as good as it needs to be. All it needs is a 'ResetTweenEntity/CaptureEntity' style command. |
| ||
Tweening is perfect for physics. Tigerz, can you post a full example demonstrating this technique failing to work? pref with spheres as it should work. |
| ||
ok sure, ill upload something in a few hours (got school in a few) |
| ||
i just tried it on a sphere and theres no problem, it only happens when its on an animated (boned character) entity... so im gonna have to find another way of doing things |
| ||
I think that the current tweening system definitely needs an overhaul. An entity flag that disables tweening would be a brilliant addition. AGREED! This happens in all my apps and no I don'#t want to use Delta Timing. Come on BRL... |
| ||
I asked for this yonks ago. Perhaps something similar to "resetentity" for tweening. :) |
| ||
What's the best way to get this requested? I would love for BRL to actually do this. |
| ||
Maybe if we just keep this thread going long enough it will create a response. I've had this problem for years....thought it was just my lousy coding techniques. :) I seem to spend hours creating ugly work around code. A new command to do this, would be to me, what the DDS feature was for Mustang....absolute bliss. :) I've tried Rob's idea of calling a movement function just prior to the CaptureWorld and while this works I suppose this in itself is really just a work around. |
| ||
>I would love for BRL to actually do this. Me too. |
| ||
Well, I have emailed Blitz Support and Mark directly. I'm thinking that perhaps a DisableEntityTweening function would not be the best way to do this but to add a flag to the positioning functions to state whether tweening should be employed, so... PositionEntity entity, x, y, z, global, disable_tween Anyhow we shall see. |
| ||
http://www.blitzbasic.com/Community/posts.php?topic=45287#505241 |
| ||
Well yes, so is the answe rto use EntityType,0, postions then reset? Is that the best option to solve this currently? Not exactly elagant |
| ||
Nonono, i was just pointing out a thread that proves we've been after it for yonks! :) |
| ||
Ah. Well the request is with Mark. We shall see. |
| ||
Well?...waiting....dum de dum...sigh |
| ||
COME ON BRL! |
| ||
Top sphere warps, bottom sphere tweens. |
| ||
Cool BUT Marks render tweening code is structured like this...While g_main_state = MAIN_STATE_GAME Starttime = MilliSecs() Repeat elapsed=MilliSecs()-frametime Until elapsed ticks=elapsed / period tween=Float(elapsed Mod period)/Float(period) For i=1 To ticks frametime=frametime+period If i=ticks Then CaptureWorld End If game_update() UpdateWorld Next RenderWorld tween Flip Wend notice the placement of the update_game routine. Using your technique you would have to move the update to just prior to the capture. Not so good! |