Godot 4 - Easy Animation Retargeting In Minutes
Вставка
- Опубліковано 11 вер 2024
- The workflow, start to finish, passing a Mixamo animation between models. I'll explain the concepts behind what you're doing so you can make your own universally compatible animations to pass between your models.
I take some liberties in the explanation, but my intent is to make it easier to understand, so you can troubleshoot issues that come up on your own, and can more easily identify where you may have gone wrong.
Godot 4.1 Stable
Blender 3.6.2
This is like the 7th retargeting / add animation video I watched.. and during all the others I was thinking "really? all this workflow just to retarget? how inefficient and prone to error, surely there's a better way"
And then I found yours, and it makes all the sense. Big thanks :)
Thanks! It's complicated and not complicated at the same time. But knowing what you're doing, and why, makes the whole process easier. And if you stick to Godot ready skeletons, it's all super easy and Godot will likely map it all for you.
For perfect skeletons, Mixamo makes good ones or I wrote a free Blender plugin called 'Rigodotify' which allows Rigify to make Godot ready rigs.
@@catprisbrey Yeah! I just got one of those synty character bundles, and I'll throw them into mixamo for rigging and then use this approach for godot skeles :)
This is golden. I wasted whole day trying to retarget mixamo animations to VRoid character with bunch of blender addons and still didn't managed it.
But thanks god I found this video. 5 min and done, didn't even had to change any bone setup, godot so awesome auto detected all bones from mixamo and from vroid and now my vroid character have all my mixamo animations.
@@SuzukaTheBest so glad it helped you out! Yeah, Godot is amazing!
Holy mother of Godot, I'd buy you a drink if I could! ... just like some others in the comments, I too have been running into continuous roadblocks on retargeting Mixamo (+VRoid) to Godot, and I don't think this explanation could be any clearer. (I'd like to add that so many other tutorials with plugin dependencies tend to fall apart due to deprecations or disparity/changes in software. I want to believe this is a more long-term supported workflow.)
I also just noticed that some of your other videos provide inspiring notes, and I hope you'll continue to show/share more of your projects because you've got this one follower!
💙
@@AC-fi8ge glad you found it useful! It's not too bad once you know what you're trying to do, and why. I'm sure I'll post more videos eventually.
Happy deving!
To people who make their own animations/rigs - You can just save your animations to seperate file, then in import settings load that file as animation library which can be loaded in animation player, that way you have 100% control over the process instead of hoping for good results :3
@@Mushele You may have missed the point of the video? Or perhaps I misunderstand the intent of the comment? Making your own rigs or not, this is the process to be able to apply other folks animation libraries to your custom rigs as well. It's also the process to make your custom rig compatible to other people's skeletons if you want to give your animations away (or sell ready-to-use Godot compatible animation libraries/packs).
I jut had the revelation of my life and solved 600% of my problems in8 minutes. amazing, a living legend.
You just wait....I've been working on making animal retargeting maps :)
nearly done.
You can also manually edit the bones map (saved to file) in a Text editor, if you need to quickly adjust the names or find bugs. Its just a text file that maps godot bone names to model bone names.
Thank you for this great tutorial and these clear explanations. This will save many people a lot of work.
Have a wonderful day.
Thanks, hopefully it'll give people the answers they're looking for on the topic.
From a high level view, it's seems like it's basically a clone of Mecanim from Unity. Awesome job. Can't wait to check it out. Thanks for the video!
Yeah, as I understand, Godot isn't doing anything crazy different than other engines or software used for retargeting.
Great tutorial, I tried this out and the only hiccup I had was that on the models I used, one of the models imported having the toes at the bottom green dots instead of the balls of the feet. Once I figured that out and changed them to the correct bones, everything imported without a hitch! So just to add if the dots are green it doesn't necessarily mean that everything automatically mapped correctly.
Exactly, definitely double check!
Finally, a video that explains this topic🙏
Thank you so much, it works like a charm!
Glad you found it useful
Thank you for this tutorial, I'm used to Unity's mecanim system so this is pretty similar. And especially thank you for explaining everything clearly too, I'm doing some runtime model imports so understanding the underlying mechanics of each action you did is very important for me to mould it into something that works for my situation
Glad it was informative and clear. It can be confusing, so i'm glad you found it helpful
Спасибо, помогли наконец-то в этом разобраться!
Рад, что смог помочь. Поначалу это кажется трудным, но становится легче, когда вы узнаете, чего хочет Годо.
Надеюсь, с этим русским все в порядке. Я использую Google Translate
❤@@catprisbrey
Amazing tutorial, this feels like when humans discovered fire for me. This works on Godot 4.2, an issue I had was the animation looked weird after retargeting, turns out I had exported my model in Rest Position instead of Pose Position.
That's a model specific problem. In blender you need/can apply the new rest pose so it's set permanently to the preferred position
@@catprisbrey Does that need to be done on the model we are using, or on the mixamo animation we download? I made a video explaining the issue I'm having on my channel, to summarize my model is doing half of the retargeted animation and half of the T-pose (or whichever animation it had when I exported it). I appreciate the help!
ua-cam.com/video/VO_UjLm4NWI/v-deo.htmlsi=h9--WSkQ-Wiyf9GE
@@travh98_ sounds like the green dots on the imported character in Godot are not actually pointing to the correct bones.
It needs to be done on every model. Any new ones you bring in, and Amy you plan to save the animations into a library to use elsewhere. So EVERY model. And DOUBLE CHECK every time that the green dots when making the bone map aren't lying to you, showing green but have the wrong bone selected ( a hip instead of a spine, etc
@@travh98_ looking over your video, my diagnosis is I think the hip/early spine bone may be incorrectly mapped on import.
I don't think it's blending your animations, I think that one bone low in the rig isn't mapped right, so now it's transforms aren't passing to it's children, so the legs sort of wiggle and appear incorrectly offset.
Some Mixamo models have a root bone, some don't and only have hips, and it can trick you when importing where they get used in the wrong spots. It can also place moevment intended for the hips to the root, or root to the hips.
Another thing you can try, I just posted a soulslike game template, it also contains a animation library that should be perfectly compatible with both mixamo/unity/standard/rigidoify skeletons. In a video from yesterday I did, I put those animations on a Maxima model doing the whole process again.
There's also a massive animation library in that template, you could try adding that template to your models and see which one takes it perfectly, and which of your models is buggy.
And a final option, you're just passing Maximo animations to mixmo animations, you should do that in blender first, pack all the animations onto a single model in blender. It's much faster that way, I show that in my video from yesterday too
@@catprisbrey thanks for the advice, I've made a to-do list of things to try and I'll let you know how it goes. I'll definitely try your souls like template, I was already thinking of using it for my current game, it looks awesome.
If you are not seeing any animations playing on model B, trying saving the animation file from model A with a .tres extension. For some reason in Godot 4.22, using a .res extension caused the imported animations to not use the generic bonemap names. In other words, the imported animations exported from model A were using the actual bone names from the armature of model A instead of the names from the bonemap. I will submit a bug report to the Godot devs.
Brooooo you are so underrated
awesome ty!
Thanks a lot!
Hope it helps clarify the whole process
you dont need to make a separate animation library for each animation, you can export the animations with the bonemap in separate files, then have a library and put all those animations in that library.
@@zendraw3468 indeed, that's not what I'm doing here though. The final animation libraries are as big as you want (mine on Godot are usually hundreds long). Unless you are referring to how I prep and organize on the NLA I like to do cleanup so all the names are perfect on the blender side beforehand, and using the NLA to manage them all makes it easier to cut and splice and pull various sections to make new animations.
There are faster methods to just get into Godot, but I find my workflow is gives a lot of versatility when animating
@@catprisbrey i mean, you make an animation library with 1 animation in it. and name it Idle. go to 6:26 the thing named [Global] is the animation library, it can contain as meny animations as you want, that is not the animation.
also, its best if you export the animations from the rigs. when you open import settings for a .glb select an animation and on the right look at the section Save to File and set it to enable, and select where the animation to be saved, just make sure the .glb uses the correct bonemap. now you have the animations in a folder for easy use
@zendraw3468 indeed for one offs its silly of me to do a whole library, it just complicates things.
But the save to file to separate the animations, intentionally don't do that. I like to build animation trees around certain libraries, so I want the library to consistently contain all the animations needed to drive it. I could do separated and then make them a lib after but that just adds a step to my workflow. So it's a great feature, I agree and a valid method, it's just not my preference for my workflow needs
@@catprisbrey the problem with your workflow of not exporting the animations is, if you want to edit an animation, you will have to reimport all animations and re-add them to a library and so on. complicating your life. when you make updates, it has to affect only the part that needs to be updated, so things have to be detatched.
@@zendraw3468 after trying both, I exporting full libraries is significantly faster for my needs. Glad you found what works for you though
My generic mannequin is also named "Manny"
Lol
I think the Unreal one is too. What's more funny is I think I learned that later. It's like we all think we're uniquely clever as we 'invent' the same name. It's just so perfect for him.
4:09 I'm confused how you have Mixamo bones on your character? If you already have it rigged for Mixamo, then this seems like a lot of extra effort for very little reward? It seems the animations aren't universally compatible, only with pre-rigged mixamo models?
@@skulltrick I don't like mixamo, I don't like the rig, but their skeleton is the universal Game Dev standard skeleton. You may be getting caught up on semantics of my phrasing. I prefer to use a tool called Rigodotify, which uses blenders rigify tools, but under a Game Dev skeleton rather than the unique Rigify one.
The handy part of using a tool like rigodotify, or mixamo, or even custom making your own skeleton, but one that follows the standards of the typical Game Dev skeleton, it means that you can share animations across any model you find that uses the standard skeleton. Doesn't matter if it comes from stinty, Adobe, one you homemade, some free assets you found online etc. etc. Doesn't matter. You can retarget in Godot, and share all those animations across any models you come across.
I generally assume a lot of indie devs are starting off with just the mixmamo rigger, and so I regularly reference that while I talk about animations in my tutorials. But I could say instead of Maximo, the unity skeleton, or the unreal skeleton, or whatever else. It's all on the same skeleton.
So all this may seem like little reward from a glance. But for example, if you look through my GitHub, I have a repository of just animations libraries. So if your model has the standard game Dev skeleton, the one from Unity, stinty, Maximo, rigidoify, whatever, you can load my libraries and give any one of your models about 300 animations in a couple clicks. So it's a tiny bit of tedium to make sure your skeleton's good, but the reward can be supplying yourself with tons of universally compatible animations
F in chat to the people who didn't find this
so fucking true
ive got a suggestion for the 3d action adventure kit, 3d metroid prime style maps i have some ideas and theories on how to do it but the one issue ive had is the im not sure how to get the separate map working correctly. It just sounds like a great feature to add
A good feature but sort of out of scope. A map system, especially one like that is almost an entirely UI driven concept, and each 3D level area would only have a detector area 3D to update where you were on that UI element, and likely an Array to keep track of what areas you'd already discovered to keep visible on the 2D map.
A good feature for some games, but out of scope i feel for the template.
Thanks!
Can Those Godot bone format handle additional bones, as for weapons, attachments, waving hair etc? Or is this retargeting limited to a fixed Godot hirarchy?
That's sort of a trick question. The answer is both "definitely!" and also, "no!".
The standard godot bone map for a humanoid is the same as other game engine default skeletons (unity etc), and so only has the normal human bones. No hair, no sword bone, etc.
So if you map your extended skeleton animations into godot, it will not see those bones as something to include in the mapping and they'll be ignored. So in this case, the answer is "no"
BUT, you can make your own bone maps, so if you wanted you could learn up how (the docs give the basics but it's some uncharted waters are far as tutorials go). If you make a bone map with the extra bones, and then map your fancy skeletons to that fancy map, then YES those will carry over.
My suggestion though, would be to NOT do it that way.
I'd suggest, keep to the standard game dev skeleton that most engines use for the core body. then make hair, weapons/bones etc DIFFERENT objects with their own skeletons that you don't bring in and map over. This would let you use any normal animations you come across, and then whatever extra animations you want to add onto subsets of body parts like tails, weapon animations, etc. You'd attach those sections of bones to the main characters's skeleton using a BoneAttachment3D, rather than have them baked into the body. This is also an easy way to use a standard animation set on a standard skeleton, but then add bone-rigged hair as a BoneAttachment3D child, and give that hair JigglePhysics. Saving you needing to animate hair at all (which sucks), and let's physics take over for the hair instead.
@@catprisbrey Thanks, I will look into it. Im currently looking at various systems to transition development over from Unity.
Hey I watched a few of your other videos and I've run into some issues with this workflow. I'm pretty sure I understand most of it but the animations I want to use are not from Mixamo, they are ones that I've purchased and unfortunately the root pose of the animations is not t-pose or a-pose and it's causing horrible results. I tried using a few things in Blender to remedy this but was unable to get the root pose to be a-pose or t-pose, without basically manually positioning bones and since that's a ton of work I haven't tried it. I did try the Fix Silhouette stuff in Godot for the animation and also the model but found I don't need it for the model. The animation mostly works with the fix in place but it looks incredibly janky and the toes move really strangely. The animation and model combination work perfectly in Unity and I was hoping to figure this out because of the Unity Exodus... Any tips would be appreciated.
Unfortunately this workflow won't likely help you until you get that Rest pose fixed. This is less of a Godot issue as it is a model issue to be solved in Blender alone. You will likely need to do somewhat of what you described: Physically move the bones and reposition them into a proper T pose, and then, in Blender, assign that new Tpose as the official rest post. Once that is done, try the Godot process fresh again and see how it goes.
I've had similar issues with models brought in that were made in Maya, as i understand they don't use Rest Poses in the same way as Blender, and anytime i brought it into Godot, thing sgot really weird, even with just it's regular animations, Not even talking about retargetting.
Hopefully some of this helps you find what you're looking for to solve it.
I appreciate the quick response. I think that it probably was made in maya actually so that makes sense. I think there's metadata on there that says as much so this makes sense. I am assuming you don't know of any quick and easy way to force any rig into a t-pose? I was hoping for a quick fix instead of having to just do a manual t-posing. I found some resources that recommend the alt+r, alt+g etc but because the rest pose is not right those are obviously not solutions.
I tried using Rokoko's plugin for animation retargeting and I think it has similar issues, worse even cause the resulting animation had one of the knees bending backwards and the arms permanently in a t-pose shape, funny looking but not the results I hoped for. I wonder though if I perhaps had a t-pose "animation" and tried to retarget that onto the armature with the animation, then as you said set that as the rest pose.
Well thanks again I guess I'll try to keep at it. Your content is helpful and impressive.
@@FileTh1rt3en unfortunately I think your best results might be to turn on mirroring on the x axis in blender, and then in pose mode, pose them to a T. Consider bringing in a T posed character (from mixamo?) or add a rigify boneset into the blender scene to help you line things up. Then delete it when you're done.
Shouldn't take more than a few minutes, hopefully
Hmm well, I did manually try to t-pose it and that does in fact break the animation in the same way that retargeting it onto another rig, backwards knee etc. I read somewhere that the rest post is what everything is animated off of using deltas so modifying the rest pose will break your animations. I think there may be some solution out there that can retain the animation while updating the rest pose and the deltas but I'm not sure what it would be.
The solution is to duplicate your armature, modify the original into a t-pose and then apply it as a rest pose, then use bone constraints or a script to iterate over your animation frames and copy the positions and rotations from the duplicated armature, then delete the duplicated armature at the end. I haven't been able to get it to work but I found some scripts other people used for it none of which work for me. I feel like this might be something a dedicated addon could be created for.
I love your videos, but after a while of tinkering and forgetting half of the stuff that is spread among several videos with some different approaches, and leaving out a step that you might have teached on another, I find myself struggling on the way by seemingly mixing up the things.
I am using your RiGodify Rig, but am failing with all the exporting stuff. In your respective clip you stop after only showing how to set up the rig for making animations, I guess?
Are you supposed to re-parent the Model with the animation back to the metarig before export?
In this video you show a direct way to import from Mixamo over Blender to Godot. Could not follow through since my model does not export correctly as mentioned above. Skeleton is missing on one trial or is unknown to godot (?) and the weightpaint correction does not go over when I overwrite the model... I even do not know if Godot does handle that well. I am pretty lost here.
You skipped the configuration/export setting stuff in this clip, which might be helpful in my case. I dunno.
Sorry if I sound annoyed or annoying with my confusion. I really do not want to bother you but I think a fresh video with the whole ordeal in one Go would clarify stuff.
I am grateful for all you have done already. Great work so far.
So please do not take this comment as an assault on your work but more a lament from me who can not structure themselves well!
You'll generate a metarig. Adjust the size of the meta rig to match your model. Apply all transforms to the Meta rig. Generate and then convert to the real game rig. Parent, the model to the generated rig with automatic weights.
You need at least one animation on that rig before exporting out to Godot. Or Godot will not see or create an animation player for you. Also when you export, you can select the checkbox to "export deformation bones only".
This other video of mine might help you more:
ua-cam.com/video/3XAIhZ_uhc8/v-deo.htmlfeature=shared
I do the entire process (?) of bringing a character in from Rigodotify, as well as the whole process for mixamo. And then I assign it some animations and bring it into game template
Also, if it helps. It sounds like your issues aren't Godot or Rigodotify related. it sounds like the issue is entirely what you're doing in blender. Likely an incorrect process of rigging your model, or simply not giving it at least one NLA animation so that Godot creates an animation player for it.
that's sort of good news for you. it means you aren't limited to just Godot related tutorials. You can look at any Blender video about how to rig a character. And then any video about using the NLA animation editor, and pushing down 1 animation into the rig.
So silver lining in the storm?
@@catprisbrey I think I could find some of my mis-steps. Most of them are on me and mostly little stuff.
In one case I forgot to select the right rig, which you already mentioned in your response.
On the other part I did the mistake to load the bonemaps on the RiGidified Model in Godot which is unnecessary.
I could now export the model correctly. It had a T-Pose. Had to remember the steps around the export settings.
Now I am following your other tutorial to make an AnimationLibrary and hope I do not mess that up ^^
Thanks for your quick response! I will now take on, and should make a new cleaner Godot-Project to not get confused again.
invalid animationLibray file please help
Not enough information to help.
Great tutorial! Easy to follow!
Only issue I am having right now though, I am making sure to follow all the steps exactly as you have them listed here, but the animations don't stick and I'm not sure why. I've imported my model and checked to make sure the rig was correct, and it is, and then I imported the mixamo model properly with the animation. I even see the animation as the .res file and everything. But when I hit the play button, my model never animates. The mixamo imported model does animate, so I know its not an error with the animation itself, but I can't for the life of me find where the error could be. Any suggestions?
Kind of too many possibilities to help you. My current thought is that your bones still aren't mapped properly on your model. How is your character rigged? Did he use Mixamo, Rigodotify? Rigify, something else?
@catprisbrey that's fair, there are a ton of possibilities here.
I checked the bone mapping and everything is green, and mapped to the correct bones. I did the rigging by using mixamo to create the rig (awesome service they offer!) So it should all be the same rig. But no movement at all. Maybe I'll try rigging it again? With fewer parts.
@@TheIronicRaven try grabbing the MeleeLib.res file from my recent souls like project I posted, and add that link to your model and see if that animates properly. That'll show you real quick if the issue is with your model's rig or just an incompatibility with your current Mixamo animation.
MeleeLib appears to be working just fine! I can bring that into my player model that I open with a new inherited scene, load the animation library, and can access all the animations and watch them animate. So there's that!
I tried, without closing the inherited scene I just used to test your animations, to import the animation I made going from mixamo. Not working.
Just no idea why the other animations aren't working, I guess maybe there is a problem with my mixamo animations. Perhaps I just imported them incorrectly?@@catprisbrey
@@TheIronicRaven mixamo bones aren't always the same and can trick you when you import..for example some use a root bone and some don't and use a hip bone as their base. It kind of makes things odd. At least you know for sure your character model is good and it's just the Mixamo one with the issue
If animation is shared, should animation player load data only for frame it plays? Not sure why is bad if same animation is used for multiple characters as I guess it will be cached anyway. It should take less RAM and shouldn't impact speed while different animation players on each character are reading different frame states. Didn't try for now. Thoughts?
You'll see what I mean if you have multiple animation players on multiple models trying to run from the same file. Only one model will animate, all the other ones won't move.
I don't know what's going on on the backend to make that happen, but it seems to be the issue. Hardly a big deal though, just make sure in your packed scene character that the animation player has those animations set to unique. Then you can have a thousand of the same enemy/character at once and it won't be a problem, they'll animate fine.
It's only unique per packed scene, not per instance. So RAM isn't such a big deal.
How to export gltf / glb along with the animation from godot?
Push down any animations you make in the NLA editor, and then export to GLB with the default settings.
Consider watching a video about the NLA editor. I think I've even done a speedy one with a focus on Godot
@@catprisbrey I was asking about the gltf 2.0 exporter in Godot ,I am trying Godot mobile version .I make models in nomad sculpt with layers ,then I was animating them using blendshapes in godot .but I don't know how to export the vertex morph data in gltf format.
@@saikatpaine1085 not sure if I cns help there. I make all models/assets/animations in Blender, and bring them over to Godot. Not the other way around.
I only export out scenes as GLTF when I export level block outs and want to use the blockout as base shapes for creating the art assets in Blender.
My video here won't cover anything related to what you're asking about. And I don't know anything related to it either.
@@catprisbrey ok ,thanks anyway
Awesome tutorial, but I have one problem. When importing the animation into Godot, the character is fixed in place when he shouldn't be. The animation plays, but for example if he is supposed to take some steps forward, he moonwalks in place rather than doing actually moving forward with his steps. It's like the root armature node is missing a position animation track. I don't think the animation is meant to do this, because in Blender it plays perfectly (I even re-imported the exported glb animation into Blender to verify that it still plays well). Any ideas?
Sounds like the root animation node isn't being mapped right, and so that animation track is being dropped (but the others animation tracks are fine it sounds like?)
So I'd make sure in the import menu that you have the root bone mapped to the correct bone..could be worth double checking in blender that your model has that forward directional movement happening on the root bone, and that it isn't on a different bone or bones.
Since Godot expects to see it on root, it could be an issue if in blender that forward movement is on the hips for example
@@catprisbrey Thanks. I finally found a workaround. Long story short, what I needed to do was upload my character to Mixamo, but as .obj instead of .fbx, and go through Mixamo's auto rigger to generate a new armature for it, and use that as the vessel for the animations I export.
Really helpful, but no need to rush, you're almost out of breath.😅
We've only got 100 years max to do everything we want to do, so I gotta keep running or I won't finish in time 🏃
Thank you for the great video.
Do you know how to retarget aniamtion between difference poses?
Not sure why, but I can't find any information about this
I'm not sure what you mean?
@@catprisbrey I mean how to retarget of meshes have difference poses, such as A pose to T pose?
But I have read the below comments, and you replied that currently, only way to do that is using a 3D tool to match the rest pose, correct? So, is there a plugin supports that or we have to adjust the pose manually?
@@ThanhLongLe1410 not necessarily. The other user said their model didn't have an A pose or a T pose.
If your model DOES have an A-pose, then at the import menu you'll want to turn on the "fix silhouette" checkbox, and as I recall there is a threshold number you experiment with to find the best result for that model.
The UA-camr FinePointCGI has a bike retargeting video that talks about it. Its a video from last year as i recall, talking about the new Godot 4 bone festures
@@catprisbrey thanks a lot for the information
The bones also have to be in a certain order
I say many times you need a heirarchal skeleton. If you stick to rigging with Mixamo or my 'Rigodotify' plugin for Blender, you won't have to worry about the bone order anymore since those will get it right
I don't test these steps, good tutorial. If you remap the bones and animation, godot save these changes? if the answer is yes then you can reuse the GLB file with Blender to make more changes. Using Blender 3D and Python can let us write an addon for export to Godot with a proper armature. What do you think?
Yes it saves it, and yes you can keep adding animations both in godot, or to the GLB in blender. That is my workflow generally.
What you say sounds logical, but i'm not sure if I understand why though. Why move it from Godot back out to blender?
@@catprisbrey to have a proper armature and add more features to the model, for example: new animation, new textures, and make a duplicate model that can be easily used in Godot.
@@catafest I guess I still don't understand why your source model itself wouldn't be that already? A custom mesh, with an armature you can animate, and once you pass it to godot it can receive even more animations from an animation resource file.
Once you've made the animation library, if you need to update your character, do it. Import your updated character model again, and just add the animation resource file you saved before.
There was no need to keep bringing that animation info in and out of godot over and over again. It's already at the final destination. And when you need to change your model, just change it and import fresh again.
@@catprisbrey ok, thank you for sharing!
ETA for your souls like project incurious and probably need a ghiuide for bosses and it sounds perfect
It's on a pause until Godot 4.2 comes out at least. So far, a bunch of the announced features and changes to the animation tree and player (refactoring them into a new class AnimationMixer) are likely going to be breaking changes for everything I've done haha.
I'm still going to release it, but it seems silly to release an example code template when half the code won't work for a more modern version of godot
@@catprisbrey hmmm id still def like to see a wip of what is currently out id like to also potentially collab as i have a lot of ideas. Im also wondering how to have animated faces cause i have addons for that to in blender
There's just too much I'd want to change at the moment. Sorry I won't publish until I like what I've done.
Faces are a good idea. I've done nothing with them. The stock bones for Godots default humanoid is just 2 eye bones and a jaw bone. 3 bones isn't great, but better than nothing. It may mean making your own bone templates which I haven't explored, and honestly don't have much experience with.
I'm too busy with game jam dev right now to take on anything else but maybe later on
@@catprisbrey so the best way to get faces working is blendshapes then? Or is it like blender and you can add your own stuff. Ngl getting good animations in is much more of a roadblock then i thought it would be.
@@AshironDerigarStudios bones are fine, it's just good to know the "standard skeleton" (the one used by default for Godot, Unity, and Unreal) as i understand typically only has 3 bones in the face. So if the question is about making multipurpose animation libraries or something, the standard one isn't quite going to be enough.
And so you'd likely want to make a better, more complete face skeleton, as well as a more complete face bone template used by Godot.
If I'm being honest, it's more work than I want to do haha.
I've been having issues, i almost certain i have followed step by step, i even got it working on another set of models, but now im working with different models, with slightly different body sizes, i made a new animation library with a ybot and got some animations from mixamo, but the mixamo bone map on my animation imported from blender and same for the new models, but when load the anim library they all become mangled trying to do the animation
Sounds like the bones aren't properly mapped at import. If even one bone is off, it'll mangle anything related to it, and any bone "downstream" from it in the skeleton heirarchy.
I'd suggest not using a bone map file for the troublesome models. It's likely that there is just one bone off, and depending how mangled the whole animation is, it could be something like a spine or root bone screwing everything else up. Make sure that you map each bone yourself, EVERY bone manually to be sure the correct bones are in the correct places.
@@catprisbrey its strange because i use the mixamo rigging tool to create the rigs and i check the bone map and all of the dots are green. im afraid because i plan on having many different types of npcs in the game 50+ and I want a way to streamline the proccess. Im also using active ragdoll which works fine but the idea of creating the ragdoll collision shapes and join angles on all of the npcs seems inefficient.
So that's what i was saying before. Mixamo's animations and mixamos auto rigging too aren't always to be trusted to be the same. There are differences on some models and you're not the first person, or the last to find out that Godot has green dots for all the bones... but those bone aren't right. That the hips are on the root, and spine one is on the hips and everything is borked up. Ignore the dots. Do the check yourself manually, one at a time. make sure they're right because that's the step here things go wrong.
Other options to troubleshoot. DOn't use Mixamo's rigger, use something else like Rigodotify (a blender rigging tool i wrote specifically to avoid Mixamo doing a shitty job: catprisbrey.itch.io/rigodotify). Or stick with you rmixamo method and try adding a "known good" animation libarary. one that has been tried and tested on lots of models. If you need one, my SoulsLike Template project has one in the player folder called MeleeLib.res (github.com/catprisbrey/Cats-Godot4-Modular-Souls-like-Template/tree/main/player/animation_libraries). Add that to your model inside of godot, and see if they take the animations correctly.
If the model takes my library correclty in godot, then the skeleton is fine, and it's your other animations skeleton mapping for them is the culprit.
But if they get all jumbled up too, you know your skeleton or your mapping is the culprit to your problems.
As for more efficient ragdoll building. I agree, it is painstaking to set up manually for every creature. probably why a lot of indie's don't bother with it because they can't just devote staff to it to make it look good. You're best bets are either, don't bother. Or write a godot @tool to build the col setup for you. it could be as simple as a script that checks the length of each bone and adds a col child to each bone with a col shape height size to match it, and a set radius. And then you onlyneed to adjust head, chest, hip radius probably. That said... still a lot of work, that's the end of my support for you there.
One benefit of using Rigodoty to rig, is i automate a bone rename so that in godot the names will auto detect 100% of the time correctly. So you you just add the humanoid profile at import, and it detects them perfect. no need for double checks. I'll never change them to create more work for us all.
@@catprisbrey Thank you greatly for the support, i've downloaded you blender extension and as im trying to create the godot human armature i get this python error "armature has no attribute 'collections"
So I am able to do half of your tutorial I bonemaped a character which worked but now I am trying to bonemap a pair of arms with a gun I can't figure it out so you know a way to bonemap this or a way to attach my already rigged weapon and the animations to my character.
If you plan on passing around animations for a non standard skeleton, You'll likely need to change your plan slightly.
Bone map just your characters humanoid body. Just humanoid bones. No gun bones, no extras. So you back either NOT map this character body, and miss out on being able to transfer animations in engine, or you'd have to custom make a new nonstandard humanoid skeleton that includes your random gun bones...
Or.... what I personally think you should do.
Don't map the gun bone, don't map the gun, bail on having it be part of your humanoid.
Instead the gun will be its own separate object, its own bones separate from this character. That you won't transfer around to every model. It stays with the gun.
The gun you then add to the hand in engine using a Boneattachment 3D node. Tell it the hand, and if you have animations for it, trigger them to play in the characters animation player, or using something like timed signals
@@catprisbreyI have one small prob though the gun is an already rigged and animated scene so do I detach gun from the pair of arms and add to character but then how do I add the arms animation to my character animation without getting error because the animations have different bone names.
@@gli7ch240 Indeed you do have a problem. You chose to use a nonstandard skeleton, but still want all the benefits of having used one.
I still say it's less work mapping/transferring just the humanoid bones, and then needing to renamate your gun as a separate object in blender, creating new animations for it as it's own object rather than baked into your character. it's not as bad as it seems. I regularly do this sort of thing. Animate say two charcters, one maybe choking the other. They are two separate objects, two seprate animation players, but i keep the animations the same length for both models and trigger them to play at the same time so they are perfectly in sync. You could do the same thing for your gun.
THAT, or again make a special bonemap profile that includes your special bones. There isn't much documenation for doing this easily though, and not many tutorials on the subject.
THAT or, just accept, you chose not to use a standard skeleton. And so you don't get the benefits of sticking to standard skeleton like transferring animations in engine. You'll have to stick to transferring them in blender instead rather than having a stored library of animations to pass around. Your workflow bringing models into Godot will just skip entirely all the bone mapping aspects, you'll just use the models straight.
Ok well the first thing I tried to do was remap the character then take the original asset non remaped and add it to the character scene I deleted the skeleton selector in the side panel for the gun and arms then restarted them to the characters skeleton I then tried to use the gun animation now with the new targeted skeleton but it gave me 52 error because the animation names did not match the new skeleton bones. That is why I tried to remap the gun and arms to godos skeleton just like the character so everything was named the same do you know if there is any way to remap the bones using the godot reimport bone remapong like in the video just not using the humanoid one. If so how do I do it.
@@catprisbrey like the making a special bonemap and adding special bones how do I do that.
Hi could you by any chance make a tutorial on how to make maps/terrain please.
That's not as much of my focus, i tend to focus more on code, physics, and animation related things than terrain and level design.
What are your struggles? I may know tools or videos you may find helpful
@@catprisbreyI’m just getting in to Godot 3D and have no idea where to start when it comes to map/terrain creation. I’ll take any suggestions. And thank you for the fast reply!!
@@krisilution depending on the game, it will very a lot how you approach it..I'd suggest start making a basic platformer or something, and from there explore what your needs are. It'll get easier if you have something specific you're building and need an answer for.
Focus on making small maps at first and explore how making those feels. Try out the CSGMesh instances to "grey box" build levels and areas. Basically make them using only those and text explore them with your character. You'll quickly find what works and what doesn't..once you built a CSG area, export it from Godot into blender and build a better looking version with details, color etc.
Maybe watch some videos on level design and grey boxing (generally, not even in godot) and then try it out for yourself using godot
@@catprisbreythank you for the tips! Hope to see more DevLogs from you in the future!
@@krisilution you will, Ive just been busy working on a game for a game jam. I'll share a trailer for it here soon
I must have problems with godot or my model itself.. Did you ever get the chance to try this with random human sketchfab models?
I don't use sketch fab much. What step isn't working?
@@catprisbreyHmmm, Still just loading animations.. The main model is set as an unique animation library. With its own bonemap (for some reason saying miximo even though it's a new one.) And my models bonemap is still using the miximo bonemap but not really saying miximo_(bonename) like the other.
@@TheRealFame did you make these bone maps by mapping the bones yourself? Or did you map each bone into godot to make sure it actually has the bones in there correctly?
@@catprisbrey Godot had both the bonemap data saved it seemed. Cause as I quick loaded the miximo bonemap for my target model, My bones were already fully setup and had a normal naming scheme. Now for the prefab model. I gave it a new bonemap and that bonemap was also already setup fully, As well as using the miximo naming scheme- like I stated earlier to help keep track..
@@TheRealFame are you getting any errors when the animation tries to run (in the editor you should see those errors too.) Anything relating to bone indexes or anything?
why did you not just retarget in blender... why did you bother to go through this process of having two imported skeletons/character models.
So if you look at some of my game dev projects, I show more why this can be handy.
The short version is building libraries of animations, and animation trees that aren't tied to one model. Flexible and compatible allowing you to drag and drop in any model with a compatible skeleton and they'll animate with all the same logic almost immediately. It allows you to avoid needing Blender almost entirely after making the animation library that first time.
This can save time in a big way when you're prototyping lots of models and characters but don't want to rig and transfer animations over and over again in blender. Instead you can do it once, save that library, and then iterate faster staying 100% in engine.
@@catprisbrey
Your manual process of remapping is insanely time consuming. I highly suggest you do this once in Blender to improve your pipeline and import more effectively into Godot and not get confused by having to have two models in your Godot project.
@@sonnyobrien so, my personal pipeline currently is about two mouse clicks. My bone names of my stock rig in blender auto match in Godot so I barely touch anything honestly.
More importantly, your commenting at me like this is something I've done or created poorly. I'm just showing how the bone map feature works in Godot and showing a variety of common problem areas that I get asked. I honestly get messaged almost constantly everydy questions about all this stuff, so many folks don't even know where to begin and are completely lost and have the strangest workflows you can imagine.
So, if you've got a workflow that you're happy with, that's awesome. And even better, If you have a better workflow, bug free and easy to follow, please please please, make a video! Show folks how to do it better, and get them to stop messaging me their questions. Please please do that.
@@catprisbreyNice I agree
@@catprisbreyWell written and said
Yoooo
Hope this helps get you through it