-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Animation API #91
Comments
I think a good place to start would be interpolation. The |
Looking at However, it adds the But the benefit of using it would be that animations sets can easily be added. The only drawbacks I could think of is that it might be a hassle when working in an animation set where the interpolation function differs between values. Fortunately, both issues could be fixed by implementing all the features and more into the Hope this wasn't too long, it's just great to see such a great project. |
Looking into |
Relatively, how far down on the roadmap is this? |
Matrix in real life. Lady in red is a purple watch on my wrist
On Wed, Nov 11, 2020 at 9:09 AM Kirawi ***@***.***> wrote:
Relatively, how far down on the roadmap is this?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#91 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AHGK5TEBDODZQEV5YV6UG2TSPIFA3ANCNFSM4PU73PZA>
.
--
Raza Amir
|
I am quite new to Bevy but perhaps this might be useful. Inverse and Forward kinematics library for rust that seems stable, well documented, and pretty fast from my initial benchmarking. Let me know what you think. |
Maybe it would be easier to integration already existing solutions like https://rive.app/ |
The crates mentioned, so far, seem to lack sequences, easing, or keeps the easing functions built-in, while user defined functions are second class. I haven't seen a mention of keyframe, yet. As animation foundations go, keyframe is pretty complete. I could see a UI in an editor being built using it as a foundation with seperate tracks, etc. functioning pretty well. It also brings in mint, but given mint's purpose (being a common set of types for 3D linear algebra for interop with various crates and engines), I don't believe that to be a problem. I'm not familiar with Rive, but I believe keyframe would ease the import of Rive assets, as well, given its capabilities. Please take a look at keyframe. I invite persuasion to use another crate, if you find it superior. |
I think one of the troubles with
Honestly this is a small concern, because it's a tiny crate. But I'm calling it out because I would personally never search for an interpolation crate with keywords like |
Actually, it doesn't own them. That was a major concern of mine, and one of the reasons that I landed on this library for a few projects. It has a trait defined as: pub trait EasingFunction {
/// For an X position on the curve, calculate the Y position.
/// 0.0-1.0 is start and end on both axes but values can go out of bounds.
///
/// # Note
///
/// Because this method has a `&self` argument this trait can be used to both implement a "static" curve function (e.g. a linear interpolation)
/// or a "dynamic" curve function (e.g. a bezier curve with user defined inputs).
///
/// Since a static curve function will have zero size the size of a `dyn EasingFunction` will be the same size as a vtable.
/// This also means you can specify a static curve function with only the name of the type (e.g. `ease(EaseInOut, 0.0, 1.0, 0.5)`).
fn y(&self, x: f64) -> f64;
} You can pass it any type that implements this trait. |
I was talking about the actual implementations. I understand that one can implement any conceivable interpolation function and use it with the trait. That wasn't the concern I raised. |
Just curious about how is going to be the final design of the animation system in code. I really like the code-first concept, as editor-based animations are less flexible. Will the design be similar to Godot's animation API (deprecated, now it seems to be an editor resource)? Such design is based on functions, and it's really difficult to manipulate and understand through the code in a big project. Rather, it's meant to be used in an editor. Is it possible to achieve a nested function list feature like in Lua? I made up this example: animation_list = {
{ "anim1", "path_to_animation"},
{ "anim2", "path_to_animation"},
-- ... etc
}
animation_player(function(s)
node = animation.states {
fade_time = 0.3,
states = {
state1 = "path_to_animation",
state2 = animation.blend {
blend1 = "path_to_animation",
blend2 = animation.states {states = animation_list}
-- etc
},
},
}
end) Which is literary a code-based node tree to a Godot equivalent: |
Closing in favor of #4026 |
Animation permeates almost everything in gamedev. First, we should add a general purpose code-first animation system. Then later we can add a property-based timeline system that can be saved to a config file and visualized / edited in the Bevy Editor.
The text was updated successfully, but these errors were encountered: