Open f1-outsourcing opened 2 weeks ago
Morning, hopefully I can offer some help.
Unfortunately and also fortunately, you're incorrect on a few observations and limitations which is good news.
You can mix and match animations easily, from different models, on different days adding and removing as needed whenever you like.
You can also download mixamo animations without the model just click the checkbox to not include the skin when you choose to download.
What skeleton structure to use? The standard game dev skeleton I'd recommend. Mixamo already uses it which is why it's a good one to look at. I've also made a tool called Rigodotify that concerts blenders built in Rigify skeleton into a standsrd (game dev appropriate) skeleton. The same skeleton preferred by unity and unreal for the base body structure.
What you described of building animation libraries of compatible animations is the entire purpose of this repo already. There are two core libraries here, a melee one, and a shooter one, and they both contain something like 100-200 animations each. No mixamo animations though since taking those specifically to make your own libraries with is against their terms of service. So I avoid it for safety sake.
But hopefully that helps answer some of the questions? The Mixamo or Rigodotify skeletons are an easy free way to go, the bone names matter a lot less than the bone structure/order. And there are a few retargeting blender plugins, some free and some not if you have mixed model types with skeletons and proportions that are drastically different.
Thanks for the detailed explanation :)
Unfortunately and also fortunately, you're incorrect on a few observations and limitations which is good news.
You can mix and match animations easily, from different models, on different days adding and removing as needed whenever you like.
Currently I have issues with this with mixamo. I have download multiple animations and walks and when I apply them in a threejs scene to a different model, it does not look good. (or blender is messing up the exports) Obviously you can fix this with what you showed in this video. But I prefer to have library where all animations work with a several sets of skeletons (I can imagine that some want to have detailed and less detailed bone structures)
You can also download mixamo animations without the model just click the checkbox to not include the skin when you choose to download.
Yes I will look into this, currently have some other issues with the 3d scene
What skeleton structure to use? The standard game dev skeleton I'd recommend. Mixamo already uses it which is why it's a good one to look at. I've also made a tool called Rigodotify that concerts blenders built in Rigify skeleton into a standsrd (game dev appropriate) skeleton. The same skeleton preferred by unity and unreal for the base body structure.
Ok so I could make a separate blender file with this skeleton, and then tell modellers to use a file structure where they link the external blender file with the skeleton of mixamo. This way I am sure that the skeleton is in every model the same, and if I modify it, all models are updated automatically.
What you described of building animation libraries of compatible animations is the entire purpose of this repo already. There are two core libraries here, a melee one, and a shooter one, and they both contain something like 100-200 animations each. No mixamo animations though since taking those specifically to make your own libraries with is against their terms of service. So I avoid it for safety sake.
Yes I thought so very nice. Don't really get how you should browse/search the library ;) What about other animations for animals or so?
But hopefully that helps answer some of the questions? The Mixamo or Rigodotify skeletons are an easy free way to go, the bone names matter a lot less than the bone structure/order. And there are a few retargeting blender plugins, some free and some not if you have mixed model types with skeletons and proportions that are drastically different.
Yes thanks again :) Currently I am wondering why this mixamo models (when I load them in blender) rotate and scale when you enable/delete the animation. Is this normal? To make sure you always have a pose animation running.
I may need to lead with a word of caution. I don't think what you want to make is possible.
You may be wondering why nobody has made a similar tool to what you plan on making. There's a huge need for humanoid animations, tons of people wouldn't benefit from libraries that they could easily reuse, so why aren't any companies doing it? Why is Maximo the only one? Why is your only other option using in-engine tools or custom plugins for 3D modeling software rather than just an easy website workflow? It's because there are a lot of ways that this can fail and it's way more likely. Animations are going to not look good or consistent across models unless you have a lot of control over the entire process.
The only reason why I mix emo is able to do a decent job is because they supply you with the skeleton, where you've manually chosen where all the joints are. Maximo controls all the bone roll, bone names, bone hierarchy. All that's going to be pretty required in order to pass one animation to another. But even still miximo's animations don't look good on every model, And they have to have a bunch of offset sliders to help you dial in some of the specifics of animations to even get in the ballpark.
To do something like what you were talking of doing, of having a library of animations you can pass across models, You're either going to have to do what miximo does by supplying a skeleton and forcing others to use it so that you have a lot of control over it all, or you'll have to do what the game engines do of forcing you to identify every bone, And do a retargeting process, that analyzed and normalizes bone poses and rotations as best as possible before passing animations to it. At that point, I'd say just use godot. Retarget there, add the animations you want and export out the new model.
But even Godot retargeting still does not mean the animations look right, because variation, bone order, bone length/scale/proportion to each other is going to make animations vary too much across models. In the animations I supply here I try to keep that in mind, that any animation that involves both hands is likely to not line up, any animation involving bending over and touching the floor or lying down, is likely not going to work across models, etc. Even the smallest variations can ruin retargeting certain animations. You really need consistency across skeletons. The animations I provide here I base off the miximo and rigify skeleton scales, My hope is that'll get 'close enough' for people's prototyping needs. But this is in no way a replacement for actually animating, animation retargeting is a helpful tool, but it is not a solution for not having an animator or knowing how to animate for yourself.
Now to answer your questions.
No there's no built-in way of browsing my animations, the intention was you just add the entire library and delete what you don't want. It's way more work on my end to do one animation file at a time, And way more work on the end users side to have to package up a big bundle for themselves. So I just do it in large bulk libraries instead.
You asked about animals. I've set up the basics for transferring animal animations, But I haven't done too much with it because it's significantly more complicated. Every complexity you have with humans is doubled because every limb is a leg, so it becomes twice as unlikely for an animation from one model to it look good on another. It's limiting but I plan to explore it more soon, At least for canids.
You had a plan to guide modelers to use a standard skeleton, that's why I base everything around miximo and blenders built in rigify skeleton, It saves forcing users to use a specific skeleton that only I provide, and offers some flexibility to use what are already available standards.
You asked about losing animations in blender, any file not active in use has the potential of being removed, that's one annoyance on blender, always be sure to click the little shield icon to preserve animation things you're working on. Any major changes can break aspects of an animated model, But generally the animation data is still present as an animation track. Blender can be a little convoluted as far as animations go since they sort of exist in three places, as animation stacks, tracks, and strips. It's not uncommon to ruin one but not the other. Almost always though, your animation still exists as a strip, you just need to reassign it to a track. It's worth researching and getting used to blenders NLA editor, how to add, and edit in there, multiple tracks or strips together.
This message got long, but it's full of important warnings. The more I learn about animating and sharing animations, the more and more I understand why certain sharing tools don't/can't exist in the ways we want them to.
On Fri, Oct 25, 2024, 1:39 PM F1 Outsourcing Development < @.***> wrote:
Thanks for the detailed explanation :)
Unfortunately and also fortunately, you're incorrect on a few observations and limitations which is good news.
You can mix and match animations easily, from different models, on different days adding and removing as needed whenever you like.
Currently I have issues with this with mixamo. I have download multiple animations and walks and when I apply them in a threejs scene to a different model, it does not look good. (or blender is messing up the exports) Obviously you can fix this with what you showed in this video. But I prefer to have library where all animations work with a several sets of skeletons (I can imagine that some want to have detailed and less detailed bone structures)
You can also download mixamo animations without the model just click the checkbox to not include the skin when you choose to download.
Yes I will look into this, currently have some other issues with the 3d scene
What skeleton structure to use? The standard game dev skeleton I'd recommend. Mixamo already uses it which is why it's a good one to look at. I've also made a tool called Rigodotify that concerts blenders built in Rigify skeleton into a standsrd (game dev appropriate) skeleton. The same skeleton preferred by unity and unreal for the base body structure.
Ok so I could make a separate blender file with this skeleton, and then tell modellers to use a file structure where they link the external blender file with the skeleton of mixamo. This way I am sure that the skeleton is in every model the same, and if I modify it, all models are updated automatically.
What you described of building animation libraries of compatible animations is the entire purpose of this repo already. There are two core libraries here, a melee one, and a shooter one, and they both contain something like 100-200 animations each. No mixamo animations though since taking those specifically to make your own libraries with is against their terms of service. So I avoid it for safety sake.
Yes I thought so very nice. Don't really get how you should browse/search the library ;) What about other animations for animals or so?
But hopefully that helps answer some of the questions? The Mixamo or Rigodotify skeletons are an easy free way to go, the bone names matter a lot less than the bone structure/order. And there are a few retargeting blender plugins, some free and some not if you have mixed model types with skeletons and proportions that are drastically different.
Yes thanks again :) Currently I am wondering why this mixamo models (when I load them in blender) rotate and scale when you enable/delete the animation. Is this normal? To make sure you always have a pose animation running.
— Reply to this email directly, view it on GitHub https://github.com/catprisbrey/Godot4-OpenAnimationLibraries/issues/4#issuecomment-2438752491, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKIEENAYLFXBZTIRRGDMTZTZ5KT6TAVCNFSM6AAAAABQPXA3S2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZYG42TENBZGE . You are receiving this because you were mentioned.Message ID: @.***>
I may need to lead with a word of caution. I don't think what you want to make is possible. You may be wondering why nobody has made a similar tool to what you plan on making.
I am not making anything yet, ;) just discovering a bit what is possible. I do want to load animations separate at different times.
There's a huge need for humanoid animations, tons of people wouldn't benefit from libraries that they could easily reuse, so why aren't any companies doing it? Why is Maximo the only one? Why is your only other option using in-engine tools or custom plugins for 3D modeling software rather than just an easy website workflow? It's because there are a lot of ways that this can fail and it's way more likely. Animations are going to not look good or consistent across models unless you have a lot of control over the entire process. The only reason why I mix emo is able to do a decent job is because they supply you with the skeleton, where you've manually chosen where all the joints are.
Yes that is what I was trying to say offer different grades of detail skeletons, but mostly compatible between each other (names, bone order)
Maximo controls all the bone roll, bone names, bone hierarchy. All that's going to be pretty required in order to pass one animation to another. But even still miximo's animations don't look good on every model,
Yes I just downloaded two. All kinds of crap like this where this rig name is different. Seems I have download rig1 and just rig.
No target node found for track: mixamorig1RightFoot.scale.
And they have to have a bunch of offset sliders to help you dial in some of the specifics of animations to even get in the ballpark. To do something like what you were talking of doing, of having a library of animations you can pass across models, You're either going to have to do what miximo does by supplying a skeleton and forcing others to use it so that you have a lot of control over it all,
What is wrong with offering users a set of default skeletons? Especially for new users that are more into webgl frontends, they really do not care.
or you'll have to do what the game engines do of forcing you to identify every bone, And do a retargeting process, that analyzed and normalizes bone poses and rotations as best as possible before passing animations to it. At that point, I'd say just use godot. Retarget there, add the animations you want and export out the new model. But even Godot retargeting still does not mean the animations look right, because variation, bone order, bone length/scale/proportion to each other is going to make animations vary too much across models.
Now that computing power allows you to do more with 3d, you will get a larger target audience, maybe people like me that just want to have a model created by someone , tell this person to use a default skeleton and then I can just download what ever animation I want.
In the animations I supply here I try to keep that in mind, that any animation that involves both hands is likely to not line up, any animation involving bending over and touching the floor or lying down, is likely not going to work across models, etc. Even the smallest variations can ruin retargeting certain animations. You really need consistency across skeletons.
Exactly, that is why any one would like to have skeletons with libraries. I don't really get why someone would want to make their own. Is there a disadvantage about having a skeleton or rig that includes bones that are not being used in the animation? I am noticing in blender that some of these mixamo exports are lacking bones that other models do have.
The animations I provide here I base off the miximo and rigify skeleton scales, My hope is that'll get 'close enough' for people's prototyping needs. But this is in no way a replacement for actually animating, animation retargeting is a helpful tool, but it is not a solution for not having an animator or knowing how to animate for yourself.
But do I need to do something or do they work with any mixamo model (I assume not, because my downloads already contain different names)
Now to answer your questions. No there's no built-in way of browsing my animations, the intention was you just add the entire library and delete what you don't want. It's way more work on my end to do one animation file at a time, And way more work on the end users side to have to package up a big bundle for themselves. So I just do it in large bulk libraries instead. You asked about animals. I've set up the basics for transferring animal animations, But I haven't done too much with it because it's significantly more complicated. Every complexity you have with humans is doubled because every limb is a leg, so it becomes twice as unlikely for an animation from one model to it look good on another.
Yes I don't expect human animations to work on dogs. But birds share same bone structure, cats etc. The idea is that the animation for house cat can be used for a tiger.
It's limiting but I plan to explore it more soon, At least for canids. You had a plan to guide modelers to use a standard skeleton, that's why I base everything around miximo and blenders built in rigify skeleton, It saves forcing users to use a specific skeleton that only I provide,
I think you should just supply several skeletons. Why should I care where the skeleton comes from. For me it is important what access it gives me to existing animations.
. The more I learn about animating and sharing animations, the more and more I understand why certain sharing tools don't/can't exist in the ways we want them to.
Well I was expecting to be able to download any animation from mixamo once I have a model with their skeleton. I am really really surprised that these exports are even different. Do you know if mixamo is 'dead'? as in no more animations are added there.
Your responses have me worried. They show to what degree what information you're missing. It's so much to explain, i almost lean on just 'trust me, this isn't going to work how you think, and there are way more limitations that what you're expecting'.
Exactly, that is why any one would like to have skeletons with libraries. I don't really get why someone would want to make their own. Is there a disadvantage about having a skeleton or rig that includes bones that are not being used in the animation? I am noticing in blender that some of these mixamo exports are lacking bones that other models do have.
You make your own because animations across different body types can't always transfer and look good at all. And why make you're own? Because a strong human man's animations will not work out well on a smaller man's frame. A barbarian body swinging an ax two handed, versus an elf swinging an ax two handed. That one animation on the two different skeleton proportions will ruin the animation. Arms won't line up, if animated on a small frame, the barbarian wouldn't hold the ax because his arms would be crossed like scissors, If animated first on the barbarian frame, the elf's hands wouldn't hold the ax because they'd be a foot apart from each other. That's something you just need to have two skeletons/animations for to get it right.
Doesn't matter they have the same bones, same same bone roll, same bone order, etc etc. The proportion of bone size/scale ruins it.
Or how about a tall slender elf female walk cycle, put on a slightly stockier woman body. That animation the feet may scart crossing, and clipping through each other at each step. So you'd need all these adjusters in place to fix that animation offset in the same way Mixamo does. You end up spending so much time trying to find ways to fix the animations, that it'd be easier to animation a custom animation that properly suits a character in 10-30 minutes, than spend forever tweaking a mediocre-generic fit animation on to a body that it's going to look... awkward but passable on.
how about a 6 foot male laying down versus a 5'5'' foot male laying down. Depending on what bones got scaled and how to make these height diferences it's like the animation will look good on one, but perhaps have the other model halfway through the floor, or floating above the floor a few inches because their hips aren't going to be int he same place.
These sorts of limitation alone they really will prevent animations from looking good across models unless a lot of adjustments or control is in place. Even if bones count, bone names, bone order, bone rotation is identical, slight differences in bone sizes will ruin animations.
To force users to stick to certain skeletons you provide would force them to stick to only certain sizes of humans. To provide greater variety would means providing SO MANY offset adjusters, or SO MANY animation varieties for different body types that you end up making so much work for yourself that you might as well just work as a regular animator, working per model in the first place. It's way Mixamo is already this service. It gets you going with the generic prototypes needed to start rolling. My animations here are the same exact situation, minus the custom adjusters. It's just the basics to get rolling with a VERY standard human body.
As for the differences in bones you're getting from mixamo, it's because every body they supply for you is distinct. Just pick the ybot, or the xbot, and only download animations on that model to keep it consistent, OR map in your own model. Don't use their pre-built character bodies, that is where you're problems and inconsistencies are likely coming from.
Your responses have me worried. They show to what degree what information you're missing. It's so much to explain, i almost lean on just 'trust me, this isn't going to work how you think, and there are way more limitations that what you're expecting'.
:)
Exactly, that is why any one would like to have skeletons with libraries. I don't really get why someone would want to make their own. Is there a disadvantage about having a skeleton or rig that includes bones that are not being used in the animation? I am noticing in blender that some of these mixamo exports are lacking bones that other models do have.
You make your own because animations across different body types can't always transfer and look good at all. And why make you're own? Because a strong human man's animations will not work out well on a smaller man's frame. A barbarian body swinging an ax two handed, versus an elf swinging an ax two handed. That one animation on the two different skeleton proportions will ruin the animation. Arms won't line up, if animated on a small frame, the barbarian wouldn't hold the ax because his arms would be crossed like scissors, If animated first on the barbarian frame, the elf's hands wouldn't hold the ax because they'd be a foot apart from each other. That's something you just need to have two skeletons/animations for to get it right.
Of course. But I am having 6-20 regular 'humans' in the scene. Also afaik the bone structures of a body builder and a regular person is the same, just muscle mass. So you can just use the same skeleton. There are minor differences between male and female. But for 80% of the use cases that is really not relevant. Hence I mentioned having multiple skeletons with different detail levels. You can grade them eg as academic use level.
Doesn't matter they have the same bones, same same bone roll, same bone order, etc etc. The proportion of bone size/scale ruins it.
Yes but this you only have with using different 'species', obviously you need to address this then.
Or how about a tall slender elf female walk cycle, put on a slightly stockier woman body. That animation the feet may scart crossing, and clipping through each other at each step. So you'd need all these adjusters in place to fix that animation offset in the same way Mixamo does.
Mixamo modifies the animation based on the model you choose? That sounds quite advanced.
how about a 6 foot male laying down versus a 5'5'' foot male laying down. Depending on what bones got scaled and how to make these height diferences it's like the animation will look good on one, but perhaps have the other model halfway through the floor, or floating above the floor a few inches because their hips aren't going to be int he same place.
I agree, if you change your skeleton (creation different species) things will change. But say if I copy a model make only the shin-bones longer, I just need to move the knee joint and the animations should be quite ok.
These sorts of limitation alone they really will prevent animations from looking good across models unless a lot of adjustments or control is in place. Even if bones count, bone names, bone order, bone rotation is identical, slight differences in bone sizes will ruin animations.
shit, I hope I don't run into this.
To force users to stick to certain skeletons you provide would force them to stick to only certain sizes of humans.
Yes like in the real world, 80%(?) of us on this globe are not unique.
As for the differences in bones you're getting from mixamo, it's because every body they supply for you is distinct. Just pick the ybot, or the xbot, and only download animations on that model to keep it consistent, OR map in your own model. Don't use their pre-built character bodies, that is where you're problems and inconsistencies are likely coming from.
Yes I figured this out yesterday, and you have to download you xbot/ybot with an animation everything moves, so you are sure you have a complete skeleton, and I discovered how to batch rename bones in blender. I also had some bug in my software, where animations were not properly playing. Randomly assigning these went much butter
Hi @catprisbrey Cat,
I hope you don't mind me opening issue like this. I saw your video[1] and I am thinking a bit what I should do. I want to investigate a bit what I can do with threejs and noticed that quite a lot of developers use models from mixamo.com as examples. I was testing to try and load animations separately and there is always an issue, even when I download the same model but with different animation.
Am I correct in my observation that if you download a mixamo model A with animation 2, and say a day later you download model A with animation 10. You still can't exchange these animations?
From your video I understand the issues with the bone structures and how you can 'convert' these animations.
I like this idea of mixamo that you can download these models with animations like that. What is annoying is that you can only download like that, and not just the animation.
I am now actually looking for a bit of advice. If I have some models made what would be the best, most generic bone structure to choose, what is most common, what is a good standard to choose. The idea behind this is I would like to be able to download animations from a extensive library. So is there a better and easier to access library for animations for possible future use.
I have seen that people made scripts to download all animations of mixamo, I wonder where these are going. Are they eg in libraries of godot4? Or are there bigger libraries than mixamo which are better and easier to use?
[1] https://www.youtube.com/watch?v=zCvCHO6sk3Y