The BGE animation project (located in the Pepper branch) has gotten to the point where all games’ animation/logic setup that worked in Blender trunk, should work in Pepper too. So, I’m looking for people to test this and verify. Please grab a Pepper build off of Graphicall and try out your game with it. If anything is different in you game when running on a Pepper build, please post it here so I can fix it!
For anyone doing tests, it would be best to make sure you grab a build that’s at or later than revision 38108. That revision should help with some compatibility problems.
Also, leonn, did you get anywhere with your download?
I tested it out. I made an armature and mesh specifically in your build, so I’m not sure about backwards compatibility, but it’s pretty sweet already. Being able to call actions from the object is very nice. However, it’s a bit odd - the playAction() function binds the specified action animation to a channel (by default, 0, right?). It also sets the blending amount (by way of an optional argument?). It’s a bit odd for the same function to play an animation to do all of those functions - wouldn’t it be better to have a handle control, like Audaspace? Something like:
obj.actions.Add('Walk') # Add the 'Walk' animation to the object's animation dictionary
obj.actions['Walk'].play() # Plays the walk animation; also can accept the string name of the animation
obj.actions['Walk'].frame = obj['frame'] # Set the current frame of the walking animation
obj.actions['Walk'].endframe = 151 # Set the ending frame of the animation
obj.actions['Walk'].blending = 5 # Set the blending amount
Something like that would be nice, though it’s the same thing as yours, just presented differently. Good job.
EDIT: A problem with my code would be that it would be impossible to have two instances of the same animation since they’re stored in the dictionary by name, so maybe your way would be better.
Also, the way I currently have it makes handles difficult since they could easily “expire” on you. When you play another action in the same layer, it reuses the existing action in that layer (this saves on pose/shape copies).
I’m still looking for testers and feedback. If people do test, please use a revision after 38719 since this revision brings improved performance. When compared to trunk, I now get about a 2x~3x fps increase in my animation stress test scene, which can be found here.
Its weird, the framerate indeed increase a lot, but look like that we have a frameskip on it, its weird.
This first image you can see the first pc without the pepper branch, the next one you can see on the first pc with the pepper branch.
On the third image you can see the the second pc without pepper branch, the next one with the pepper branch
Here is what I am doing: I create a shape key > add a driver > change the driver type to averaged value > assign the transform channel to an object > give that object an animation to effect the driver > it works in the viewport but when I start the game engine I dont see any changes.
The rest of the changes work fine (so far) and its great having a unified system, good job!
Ex.
Drivers probably only work with bones in the BGE, and not external objects. Could you try adding a bone to the mesh and driving the shape key with that? Also, did this work in 2.49?
Windows XP 32 bit tested with pepper-r38825 and pepper-39004
Pepper 39004 (Demohero) always crash when i try to rotate the view.
The Ping Pong playback is not working correctly. It plays the animation endless.
If I import a file with a ping pong playback it works correct for F-Curfes and shape key animations. But if I replace it to the new actuator it did not work any more.
If I don’t set up the layers, blend in is not working.
Not Important but the animations are not smooth. It looks like that the animations calculating steps have been reduced to the halve.
Ther is the “Default” animation (Q-Key) with only one key frame in the CharacterKit.blend that which was only blended in and out with an flipper playback. That is not working any more.
Loop end --> Blend in only so long key is pressed. If key released jump to key frame.
Loop stop --> Blend in is working.
Flipper --> So long the key is pressed blends in only first animation step. If key released jump to key frame.
Ping Pong --> Blend in is working.
Play --> Play every key press one blending animation step.
Please help me. Here’s an example.
Animation begins. Then press space, it starts the next animation. Unpress space but always does not work.Proverka_Animacii_2.54.blend (290 KB)
@HG1
Thanks for the report and the example files, they are really useful. As of revision 39089, ping pong should better match trunk, but it’s still not exact (there are differences when the action is interrupted). As far as blend in not working right, I’ll need to do some more digging.
@3dmax
Enable pulse mode on the always sensor and set the priority of the “e” action to 1.
@HG1
Your CharacterKit.blend now works better in Pepper. I’ve fixed most of the issues except your flipper animation. I’m not sure on what the problem is there yet. Also, you’ll want to turn on pulse mode on the always sensor for your idle animation. Thanks for the files, they are really helpful for smoothing out these kind of issues.