I know its a year late, but you do not understand how much we appreciate slow, fully explained and detailed walkthroughs like this. I'm sick of watching 3-6 minute videos going at superspeed where I learn nothing because only 5% of the tutorial is actually a tutorial and the remaining 95% are just the creater showing off. You sire did an excellent job and I am very glad to have found your video and channel.
And he explains every hotkey he uses too. They even show up in the bottom corner. So we at home can also learn to use hotkeys to make things go a little easier.
It could be better... Rather than saying out loud what your typing in godot, you can take that time to explain what's going on... What does @onready do when you create a variable? Why use a springarmpivot? I can guess at these things, but I actually have no idea for sure because it was used, but rather than explaining quickly what it does, he just reads what he's typing, which I can see for myself. I completely understand not explaining all the trigonometry functions atan2(), etc., because they're not a choice (there's only really one way to solve that equation, and they're nothing specific to godot), but godot specific functions, keywords and objects, are both definitely a choice, and simple and quick to explain why and/or what they're doing/being chosen for.
@@MasterTeeee True, but I'd argue that's for the better. Hearing the explanation for every tool every times its used makes the video bloated and less focused on its primary goal.
@@Ze_N00B I agree, 100%. I just meant in place of saying what he's typing, explain *why* you're typing it instead. "We're using @onready here to ensure that variable assignment only happens once the node tree has been fully initialised. This is more-or-less equivalent to assigning our variables in the _ready block". Takes 5 seconds to say, but saves 3 minutes of looking up. Instead we just hear him saying what he's typing. Dont get me wrong, I thought this tutorial was good, but I think he could do better in the future, and assume he'd like to. 👍
Great tutorial, super thorough explanations and not overcomplicated. I'm just getting in to Godot, but I'm very familiar with Blender and your instructions for those parts were 👌
Excellent tutorial for a programmer like me who has only basic knowledge of Blender. I've been always scared of rigging humanoids, but now it doesn't seem so intimidating anymore. Good to see it's Godot 4 because there aren't many tutorials for beta yet. Maybe part 2 for uv-unwrapping the model in Blender? :)
Thats actually common with solo devs and small indy teams. Only in the bigger studios people specialize in a field (and often cant even do the other things).
For newer versions of Godot, instead of changing the root node, you'll have to go to the import settings at the top left and change the root type to characterbody3d, then reimport
As someone new to Godot I don't understand how most of the code works but I was able to follow your tutorial without a problem and have my own Blender character up and running. Awesome tutorial, thank you!
Extremely good explanation on how to build a lot of things from scrath, Godot beta 9 has already changed some of its APIs and now you access the mouse_mode variable directly instead of via the set_mouse_mode function. Hopefully they don't change too many things or we'll have to get another well explained tutorial 😜
I followed this tutorial and did not run into any major issues! The only outdated thing I ran into was during exporting. In Blender 4.0, the "Export Deformation Bones Only" option is now under "Data > Armature". Hopefully this helps for new viewers!
Quick note for newer Blender versions! At 31:27 he says to press I to insert a keyframe, but the hotkey that opens that menu is K as of Blender 4.2! I will insert a keyframe still, but I'm not sure whether it will capture all of the appropriate data.
This is the only third person tutorial I've found that wasn't full of outdated and/or questionable advice. Thank you so much for saving my hide! I do have some uestions though: 1. Why did you not split the script into one of the SpringArm nodes? Out of personal preference? 2. Is there any way I can make my character temporarily disappear/fade if the camera gets so close to the player it goes through their model?
One of the things I appreciate about this tutorial is it's neither too in-depth nor too simple. It's the perfect springboard for developing skills and staying interested, which I think is essential for actually learning these things and figuring out how to apply them in an unguided scenario.
Quit: i am too change in : func _unhandled_input(event): if event is InputEventKey: if event.pressed and event.keycode == KEY_ESCAPE: get_tree().quit() Maybe this GODOT 4 now other piton
This is EXACTLY what I needed. Followed a whole different 1 hour tutorial that showed how to make the model in great detail, but they missed so many things (and shortcuts) that you included that are crucial to uploading to Godot. Thank you so much, glad I found this video.
I messed up show how not sure and the bone and the upperarm are coming apart as i try to move it, do you have idea of what i can do to fix this? note: i figured it out I didnt uncheck deform from the parent.
When I added the character to a new scene and I then can't change the root node type to "character3d". The option simply doesn't appear on the menu. Any hep would be great.
For people having the following issue, if your character is rotated in the editor, the rotation of the mesh during gameplay will be off when you move. To fix it, add this line of code and modify the second already given in the video : var adjustedDirection := direction.rotated(Vector3.UP, -rotation_init) armature.rotation.y = lerp_angle(armature.rotation.y, atan2(adjustedDirection.x, adjustedDirection.z), LERP_VAL) And add this variable at the top of your script : @onready var rotation_init = rotation.y That's the solution I found maybe there is something more obvious which I don't know. Anyway amazing video, I just started Godot and learned a lot from your tutorials already, love the end results of them, it really motivates me to know that these cool mechanics and environments are achievable if you follow the video. Thank you and I wish you the best.
@@princesszola7529 Ah, sorry it didn't work. Maybe try to remove the minus sign before the rotation_init. Or maybe you rotated the MeshInstance3D in the editor instead of the parent node ? Hope you find your problem. =)
Totally great even with GD4.1 beta :D One suggestion: _animTree.set("parameters/.../blend_position", Vector2(velocity.x, velocity.z).length() / SPEED) So, use only the x and z component of the velocity vector for the animation tree. Otherwise you still have the run animation active while falling.
So i tried to follow along with this but im stuck in a wierd way. At about 2:19, the step to create a cube, the cube i make is bassicly invisible and is just outlines no grey block. I didint think that was an issue but later on when u start moving it around and scaleing the cube just after adding the mirror modifier i just cant get it to behave like that at all. I assume ive either enabled something im unaware of maybe the hotkeys have changed since this was uploaded (and thus im not created the right kind of cube) and am hopeing someone knows. I tried applying a red material like in the later steps to see if maybe it was just missing a texture or something but nope still nothing.
I took a look at the video and it doesn’t look like any hot keys have changed. Did you check the render version at the top right hand corner. You might have it on rendered mode as rendered mode without any lights makes everything look dark but outlines. That’s the only thing I can think of. But I hope you have already solved the problem. I’m sorry, I’m bad at explaining😅
1. For anyone using a new version of Blender, Export Deform Bones Only @43:45 might be under Data > Armature > "Export Deformation Bones Only" 2. I'm having some issues with mesh deformation once imported into Godot. When I view the idle or Run animation, it's almost as if the vertex groups around the back of the knee don't want to distort. Checked in Blender and everything looks/works fine. Any ideas?
Terrific. Love the fact that you actually explain stuff as you go. Was thinking about pulling out godot and prototyping a game concept and thought injecting an animated mesh was going to be a pain, but you make it look dirt simple. Will definitely be giving this a shot when I get time.
finally, a blender to godot video that actually shows the export settings. such an obvious thing to include but most tutorials seem to skip it. you're a lifesaver
Thank you so much for this wonderfully complete and succinct demonstration. This has been really helpful for my understanding, both for Blender and how animation works with Godot. Really appreciate it!
I think I've watched this 5 times now. Very helpful tutorial, and until I have this memorized I'll keep re-watching this. Now I'm trying to rig up some FPS arms and a weapon, could be another tutorial idea ;) Thx for the video lesson!
@@petethorne5094Either that or make 2 extra animations for leaning into turns (if you want more control over the body ligaments), then set up the blendspaces and call the animations accordingly based on when the “leaning” conditional is met.
A quick tip to save some time: You don't need to individually name the bones with a .L suffix, Blender has a way of doing it automatically. You can name the bone normally, then select all the bones you wish to symmetrize, then Right Click -> Names -> Auto-Name Left/Right. It'll automatically add the .L suffix to all your bones for you!
Logan, sorry I'm late. But if you can keep doing this style of Godot Tutorials, you're channel is going to explode. And honestly, you deserve every bit of success. What you did a year ago is growing the Godot universe now.
Leaving this comment for anyone who has run into missing run_loop animation when exporting to Godot. For myself and others... we have found success selecting the "Stash" option for the run_loop animation. It is in the header bar of the Animation Workspace. You will notice trying to Stash the "default" or "idle_loop" animations Blender will spit out an error as they have already been stashed. Just updating for visibility. Thanks to @JustinDM for the original posting.
Awesome tutorial, so complete and just what I wanted to know and couldn't figure out. You just gained one subscription (if it is worth something jajaj)
Incredibly helpful tutorial. Really clarified some concepts for me, especially the IK stuff. I will note some of the export settings were different for me, with Blender 4.2 and I wasn't able to get the glb file to work (very possible user error). But, I did learn that Godot (I'm using 4.3) was able to import the blend file directly, and I was able to make the armature a child of a Character 3D node, and was able to use the same script. Not sure if that was the best solution, but it was very cool to see my little dude running around on the screen. Even if his idle animation looked more like twerking. Thanks so much for putting this all together, I learned so much!
you're the best. used this slightly modified for a first person animation setup/my first ever tutorial to blender lol (i actually picked up kinda quickly, only restarted once lol) massive props
I followed along with a unicorn model I made and was having some issues with the spring arm colliding with the model's tail. If you are having this same issue, you'll want to, "exclude the player's collider from the SpringArm3D's collision check"(see documentation and collision layers for SpringArm3D)
how could I add an attack animation to be mapped to E if I created an extra animation in blender?? I tried using var anim_player = $AnimationPlayer anim_player.play("attack1") and anim_tree.set("parameters/playback", "attack1") when if Input.is_action_just_pressed("attack"): but its not working and im not sure why.
This is so damn useful. Something I was wondering (hoping someone smart will know), but how do I reimport the character with the animations? Do I need to set up a new tscn file, or do I just overwrite the glb file that´s already in my project?
[ALT + A] to deselect all instead of clicking the void. If you wanna connect those limbs simply while keeping the general shape, you can use [I] with a face selected to inset the face. Insets can also be made from multiple faces at once.
Insetting across the line of symmetry (useful for the neck) can be managed with the "Boundary" (Inset Face Boundaries) option, toggleable with [B] while making the inset.
I'm a complete noob with 0 knowledge on godot and any kind of programing, but I put the video on 0.5 speed on those parts and everything worked perfectly :D
Okay, hopefully I'll have more luck here, even though this is old, I've tried so many things, and this is at least a new approach. I'm having issues getting an imported model to rotate when I press a direction so that it matches. Like you cover at the end. Copying your code, I however seem to rotate the whole in the Z axis instead of twisting it to the side. Any tips? EDIT: Changing the code to the following: armature.rotation.z = lerp_angle(armature.rotation.z, atan2(-velocity.x, -velocity.y), lerpConst) gets me the closest I've come, however it's still wrong, it's like the direction are rotated or something. Pressing forward puts me in the ground, right is left, left is right, and backward is front. I've tried messing around with the different stuff, but I'm gonna take a break and watch back your explanation, maybe read about atan to see if that might be it.
Great tutorial! How would how go about adding more animations to a model you already imported to Godot? Like if you wanted to add a 'jump' animation to your character. Is there a better way to add animations than just reexporting and reimporting?
This is excellent. I'll admit I skipped all the blender stuff because I'm using a premade model for prorotyping, so I'll be back if/when I need to learn to model stuff. But the godot part is fantastic
How that work? Im trying to make my character to move for 3 days, however, its still not moving. Charactermodel >Armture >Sketleton3D Camera3D RigidBody3D ANimationPlayer MeshInstance3D MeshInstance3D2 WorldEnvironment >DirectionalLight3D
After you got your torso made you used the shift+a menu to make a new cube but it didn't add a new object to the list and it already had a mirror modifier on it. How did you do that? When I do it, it just makes a new cube with no modifier.
This video taught me everything I know about 3d modelling animated bodies! Quick question: do you have any recommended resources for UV mapping and texture painting? I discovered some videos on RU-vid, but I'm not too sure they're following best practices...
love how you OS casually lets you drag and drop. im struggling with adding the reference image... ended up skipping that and looking at the image outside of blender, while not as precise i got it done. low poly models dont need to be presice especially as placeholder.
Only watched the coding toward the end as had done the blender bit, but bloody great video when it comes to that! Big thanks for the quality content :)
It looks like animations only import about a third of the time. It's a numbers game of importing over and over without making any changes, trying to get all the animations and textures to actually correctly import over. Unity didn't do much different. A couple of us are starting to think it's Windows causing the problem. Is anyone else running into this? Does a different operating system improve the import issue?
Nice, this motion stuff worked really well for me except I had to swap z with y on my character to make it face the right way when moving the camera because for some reason my model is rotated on the export.
All I was looking for was how to import a rigged blender mesh and animations, and I ended up with a gold mine of info. lol Great tutorial. Hope it's all relevant a year down the road, since the video is a year old.
Very precise and a perfect tutorial, However I am not sure how I am suppose to know all the scripting I need to do? I have gone through the docs but its not possible for a first time user to know all that. Yes of course the first-time user is also not supposed to make a 3d game. Still, if you have any words of wisdom, please share. Thank you. +1 ❤
very informative! tell me please, if I create animation in blender, add it to godot, and then update the model how can I easily import upgraded version to godot? just paste? 😅
What kind Blender Version did u use for this, cause I want to export to gltf, doesnt had any option like include option and other stuff like that doesn't available on my Blender 2.80
Thank you for the instruction! It has been hard to find 3D character camera tutorials that have all the standard features. Question: when we rotate the model, I notice we are only rotation the armature node. Is there a quick way to rotate the entire thing besides the camera, i.e. the collision shape and any other objects outside of the armature node? Or would you have to code in the transformation for each one?
I followed this video at least 3-4 times tried to replicate and the latest was actually today. Sadly for me the bones not works as intended, I have just a little bit more bones for hand, neck, upper body and lower body but the inverse kinematic part just not works. I am using the latest blender right now to replicate this one.
@DarwinOrange. For newer versions of Godot, instead of changing the root node, you'll have to go to the import settings at the top left and change the root type to characterbody3d, then reimport
Great tutorial, many thanks to you! While it's focused and specific, I'd really like to know more about what's happening under the hood inside engine. In the tutorial a lot of Godot context is assumed, which I'm not familiar with as a newcomer. It might be not easy to give this context, but at least directions would be really appreciated :) For now I just go for documentation
I run into a slight issue for when I go to right click add animation in godot, around 55:05, the submenu thats supposed to show my animations is just a _