- 111
- 39 264
Geat
Registrace 2. 10. 2007
Inverse Kinematics: Cyclic Solvers
Detailed guide to making IK systems: github.com/SpehleonLP/IK-Guide
Procedural sound effects for games: github.com/pdJeeves/Chiptune-...
Animate Full body IK: spehleon.gumroad.com/l/ylxsd
00:00 Intro
01:08 Forwards Descent Solver
04:00 Fowards Ascent Algorithm
05:45 Backwards Descent Solver
#InverseKinematics #CyclicCoordinateDescent
Procedural sound effects for games: github.com/pdJeeves/Chiptune-...
Animate Full body IK: spehleon.gumroad.com/l/ylxsd
00:00 Intro
01:08 Forwards Descent Solver
04:00 Fowards Ascent Algorithm
05:45 Backwards Descent Solver
#InverseKinematics #CyclicCoordinateDescent
zhlédnutí: 663
Video
Inverse Kinematics 1: Jacobian Solver
zhlédnutí 486Před 6 měsíci
Detailed guide to making IK systems: github.com/SpehleonLP/IK-Guide Procedural sound effects for games: github.com/pdJeeves/Chiptune-... Animate Full body IK: spehleon.gumroad.com/l/ylxsd Music Used: czcams.com/channels/PJzwjxdmsqwLpRi5wT9piQ.html Chapters: 00:00 - Intro 00:26 - About The Solver 00:44 - What is the Jacobian Matrix, J? 01:43 - What is the Jacobian Transpose, JT? 02:09 - The Tran...
What's The Deal With Procedural Animation?
zhlédnutí 31KPřed 6 měsíci
Get SPARK: spehleon.gumroad.com/l/ylxsd Detailed guide to making IK systems: github.com/SpehleonLP/IK-Guide Procedural sound effects for games: github.com/pdJeeves/Chiptune-Sample-Library Chapters: 00:00 - Intro 00:22 - What is Procedural Animation 01:45 - Inverse Kinematics 02:50 - Why use procedural animation? 04:30 - Gait Systems 07:15 - Retargeting 10:06 - SPARK In this comprehensive video,...
devlog: walker inverse kinematics part 1.
zhlédnutí 69Před 10 měsíci
devlog: walker inverse kinematics part 1.
Devlog: procedural quadruped: first steps!
zhlédnutí 74Před 11 měsíci
Devlog: procedural quadruped: first steps!
devlog: procedural animation 3 quadruped gaits
zhlédnutí 53Před 11 měsíci
devlog: procedural animation 3 quadruped gaits
Devlog - procedural animations 2: mass-spring solver
zhlédnutí 38Před rokem
Devlog - procedural animations 2: mass-spring solver
Devlog. Procedural Animations #1 -- unconstrained inverse kinematics
zhlédnutí 49Před rokem
Devlog. Procedural Animations #1 unconstrained inverse kinematics
Spawning objects till the framerate drops
zhlédnutí 34Před rokem
Spawning objects till the framerate drops
New water shaders. Does water blur stuff or just get foggy i don't know
zhlédnutí 80Před 2 lety
New water shaders. Does water blur stuff or just get foggy i don't know
Particles following sun-generated air currents. (6x speed)
zhlédnutí 46Před 2 lety
Particles following sun-generated air currents. (6x speed)
for improving the backwards descent solver, what if u used a control point that is used for determining the target's rotation? i feel like that would be an improvement, as it would make it easier to orient the target in way that prevents the inverse chain from collapsing. for example, the target can rotate in a way that makes the start of the inverse chain "look" at the control point. also, is it hard to implement rotational constraints for cyclic solvers? i have been looking around a bit for procedurally animating a human arm/leg in 3D, and cyclic solvers seem to be kinda promising, judging from the A-tier rating that you gave for this kind of solver in your IK-Guide repo, which is why I want to know if its hard to implement rotational constraints. Edit: I just realized that you pointed out how to apply joint constraints in the video already 🤦♂
This video is a really good reference
one question the procedural animation good for low end devices means it's consuming more cpu resources or it's good like separate animations
The seperate premade animations will always be faster to compute than procedural animations; the procedural animations are not especially costly though; the primary cost is in the inverse kinematics, and if you use a particle based system then it can be very fast. It’s also highly parellelizable; as each object being animated isn’t too concerned with what any of the others are doing. I would argue you shouldn’t worry about it, but ultimately it depends how low end we’re talking. Ultimately blend the techniques; use traditional 3D animation as often as possible and only use procedural where that wouldn’t work, this keeps your requirements low and the fidelity high.
@@GeatMasta thank you
Something interesting I saw recently related to targeting was a dev showcase by the Dragon's Dogma developers on how they can re-apply the animation to an aribitrarily scaled monster and have it work correctly at any size
hell yeah the Spore mention. There's just a joy from seeing any creature made in that game being able to have at least somewhat decent movement. the fortnite dances mod is the best for it for that matter.
That was very informative.
Why the inverse is okay in the second method but not in the first?
so first method: inverse of J seocnd: inverse of J*J^T J*J^T is a 3x3 matrix or a 6x6 or otherwise a square matrix. J is not a square matrix. the inverse only exists for square matrices; you can get a pseudoinverse which is similar and will kinda work though. regardless, inverse is also slower the bigger the matrix is; 3x3 is better than 4x4 is better than 5x5 etc. so because the inverse in the second method is for a 3x3 thats kinda fine; for the first method it may be for like 3 rows by 100 columns; this is going to be super slow, its just too big. so its fine in the second method because we bounded the size of the matrix to a realistic size which is also known at compile time, meaning we can optimize the inverse function to hell. is that understandable?
@@GeatMasta yes, thank you, much more understandable now. Thanks
What an incredible resource
Detailed guide to making IK systems: github.com/SpehleonLP/IK-Guide Animate Full body IK: spehleon.gumroad.com/l/ylxsd Should be making another devlog soon. Content that didn't make the cut: Spline solver. This is a variant of the forwards ascent solver; where i draw a hermite spline from the current joint to the effector; and get a point on the spline as a target for where the current child should be; doesn't work that well.
Some referenced videos: Giving Personality to Procedural Animations using Math (t3ssel8r) czcams.com/video/KPoeNZZ6H4s/video.html The Rain World Animation Process (GDC) czcams.com/video/sVntwsrjNe4/video.html Generating Monsters : BEAST SOCKET Devlog 01 (RujiK the Comatose) czcams.com/video/z_fmMD-Gazw/video.html quadruped locomotion (MSC Art) czcams.com/video/tLrRlXxM5Yw/video.html The Procedural Animation of Gibbon: Beyond the Trees (Wolfire Games) czcams.com/video/KCKdGlpsdlo/video.html Quadruped Procedural Orgnanic Animation (Good Enough Games) czcams.com/video/PIcNwka8r8Q/video.html Spore Creature Creator to Blender (Freedom Arts) czcams.com/video/ydbgHDxgb0k/video.html How to setup IK bones: Blender Beginner Tutorials (blendera) czcams.com/video/K17c1g8mQX8/video.html Full Body IK: Procedural Dragon Animations (Unreal Engine) czcams.com/video/Z8eqaFG7lZQ/video.html
@GeatMasta, thanks for making this, there was a lot of great info in here, and references. It would be really useful to include links to the interesting videos you referenced, like a bibliography. Even some of the examples of less successful approaches are still interesting to look at the source videos to understand the topic. I think the quality of the research and essay you have here could make your channel take off, you owe it to the work you put into this to give your video a little ending card-otherwise youtube's already showing another video before I realize this one's over. A lot of people consider liking or subscribing in the last seconds of the video when they know it's over but it hasn't navigated away yet. Also don't feel you have to rush your delivery, this is dense with good info, we're not going to get bored that quickly. I only say this because your video is really good, feel free to ignore me, I don't make videos and it's easy to be a critic.
thanks man; i wasn’t really trying to rush delivery though... Yeah; its kind of a problem isn’t it? because clearly there should be a bibliography right? but if people click the video, go to the description and jump to a source, well that means they didn’t increase the watch time of the video, they watched for a second and clicked off, this will punish me in the algorithm and other people won’t see the sources at all! what i want is for them to scrub through the video to find a reference so parts of the video get more watch time and i can see what references people were interested in. TL;DR youtube isn’t designed for this kind of content. People do seem to know it’s wrapping up though in the ending minute the audience still watching drops from 25% to 16%; kind of a problem because the real purpose of the video was to get people to watch that little bit at the end where i plug the animation program i made.
Really liked this video. I somehow never thought of those annoying "follow the NPC" quests as how my dog has trouble keeping the same pace as me.
I would spend some time exploring how AI could create/help creating realistic and expressive animations. It'd be really cool to make some "key" animations and AI would take them as a reference and create other animations in real time from abstract commands and directions
unfortunately i have no real understanding of deep learning systems; the AI i’ve built are all simulations of the motor cortex, so i don’t really know how you would bridge the gap between something like pytorch which uses sort of image-like number grid inputs/outputs and an armature; and i also don’t know where i would get training data from for thousands of mocapped animals. Ubisoft has done that kind of thing but its proprietary, seems to work though, they had to train the AI backwards, so it works from the keyframe to find the previous state not the next state.
@@GeatMasta the only thing i know is video from nvidia about year ago, seems like they had success in such direction And also Ai4Animation github repository
@@GeatMasta i think, the main difficulty here is how to create general solution, not specific one
Yeah AI tweening has a lot of potential, basing interpolations off either your own references or a mix of that and a bunch of source material which could be animated or even just irl video analyzed for movements.
i wish i went to a school that taught math
Keep up the good work!
Good video, thanx!
fuck the one thing I hate about gamedesign is the animations, this put things into perspective, nice video, very underliked
Detailed guide to making IK systems: github.com/SpehleonLP/IK-Guide Procedural sound effects for games: github.com/pdJeeves/Chiptune-... Animate Full body IK: spehleon.gumroad.com/l/ylxsd
Omg walking animation done really really accurately is a lot more complex than I realised. Good job in showcase us the nitty gritty of physic simulation.
5:05 Quadick trot can *$@# walk #%$#@ etc. Some alien shit, dude
Geat take, very concise and to the point!
Unlucky timing with the internet historian downfall
yeah; but here’s why i’m going to give him the benefit of the doubt until further evidence comes out: i think too many people are glossing over the question: does IH still write his own scripts? maybe i’m wrong but i seem to remember in the costa concordia Q&A that he *doesn’t* he has a writing staff and he just reviews scripts and makes changes; which would imply an employee just turned in the man in hole script and he didn’t know it was. furthermore, in the past he’s made several adaptations of online articles and stories; and he’s always been public about it being an adaptation, why suddenly change that if his viewers don’t care if it’s his own work in that sense? in the reupload he has in the description that it’s a mentalfloss article; meaning he worked something out with mental floss already, the fact that they came to a deal is kind of an indication that he didn’t know it was plagiarized; and think to the story about the plane in “survival”, not recording audio to that fact because he’s awkward is exactly the kind of thing he’d do. furthermore, it already qualified under fair use, mental floss was actually in the wrong to claim it; he had no reason to take it down, and the changes he made wouldn’t have made it fair use anyway.
Amazing video. Exceptionally informative. I think the field of procedural animation is young, underdeveloped, and far from optimized. Several techniques mentioned made me immediately feel this sense of "but why not add this?", as in there was some missing component to the method keeping it from being well executed. I'm not yet the programmer to fill in those gaps in any practical way, but theoretically, I see where improvements can be made to turn these systems into something more organic. I have a lot of hopes for procedural animation in my future game, so I'd like to learn even more about how its implemented and how I might adjust things in the future. Regardless, if you post more content with this similar quality, I'm in to see it. Thanks so much for sharing.
This is really interesting! The music is quite distracting though, I would highly consider a quieter more "background" song. Great info and content though! A great look into various approaches to animations :)
Procedural Game Animation Historian
this video is RIGGED!
You are just trying to get under his SKIN
No, it’s FRAMEBYFRAME!
Bro I am stoked that youtube shoved this into my feed. Super super informative, even about random topics like dog walking! New sub for sure, I'll hold my sub 100 badge high when you blow up sir
Nice video. For me as a programmer and artist procedural andimation is ideal, especially through the use of spring damper systems and custom interpolation curves you can get some of the most playful animation possible. Though it has to be the right use case and character design approach as I think this video illustrates by taking a look at a variety of approaches from existing games. I still have so much learning to do, but I'm committed to programmatic animation as a common design pillar in many games I want to make. Personally I think you can apply the same theories and techniques to, programming that traditional animation uses to achive more expressive motions. This field being more recent, still has some maturing to do. Like traditional animation it requires an understanding of physical dynamics and a dedication to improving the craft. I think these approaches aren't so different, in terms of the things you need to consider to achieve good results, just the knowledge and skillset you need to execute them well.
yeah i think where they win for sure is in AI characters because you kinda just can't hand animate everything they might be able to do
I agree, you can absolutely make procedural animation expressive, it just takes the same knowledge required for good traditional animation.
Nice video! Keep it up and dont stop!
Thanks, will do!
very good video! just decrease the music volume a bit
nice
bro ... u're aware of the work that Ubisoft employee or he and his team did a while back? it looked very professional .. in addition Capcom might have yet another iteration with its own quirks and discoveries, but to my knowledge that is all behind closed doors unfortunately.
just to clarify are you talking about motion matching? or the one where they animated people talking based on dialog? either way those approaches are limited to animating humanoids, or otherwise things where you have hundreds of animations on hand from previous projects/mocap, yeah?
oh wait you mean that paper with the dog.. yeah i did forget about that one, i remember i saw it on 2 minute papers and couldn’t work out how to use it for my own projects. Looking it up again it sounds like its basically the same thing though; a bunch of IK targets animated: to quote: ``` I call this shared format the “IK Rig definition”; having such a shared format means several things: if you map any rig to this format, all the animations of this rig can be transferred to this format; applying modifications to a short list of IK nodes is much easier than processing a full list of bones; hence you have a lot of freedom to modify the motion; then these animations can be transferred back to any other rig ``` this is exactly what spore did and exactly what spark does; aside from they start from mocap data it sounds like. the reason theirs looks so naturalistic is that they’re using a neural network for IK; but thats basically orthogonal to creating the animations themselves.
@@GeatMasta yes i was talking about that. It felt wierd that it wasn't mentioned. Unfortunately for me tho, for how cool this type of animation is, on certain systems is just impossible. ( the cpu throttled ones with no support for jobs/multithreading ) Performance wise, your solution is only true for Data-Oriented environments or one giant single script handling everything all close in memory. In the end, I will still bake everything, cuz the game or most games should know what is about to happen in 5 minutes or even 5 hours of gameplay, variations are few ... so you might as well just bake them during build or at runtime in the background. Unity and others will soon-ish give us a fully GPU resident animator, but by myself, I would never in a million years understand how to make and handle such a thing 😂
yeah i just forgot about it so it wasn’t mentioned! i’m not sure; for the animation of the channels i copied the glTF 2.0 spec; i figured that there would be a way to animate it on the GPU already if that existed (since it was made by the same people that made openGL); and the jacobian IK solver is basically made for GPU implementations, i explain it in detail in my IK guide link in the description! But you can basically compute each chain individually with a compute job and sum the results all together. regardless, my solution was done in spore in 2008; which was a single threaded environment; so any modern CPU should also be able to handle it; and honestly… i didn’t bother multithreading the editor cause it kinda worked well enough, it only uses it’s thread pool for loading 3D models! I would just have everything make sure it’s actually on screen before doing any computations and call it a day.
@@zarodgaming1844For most things, baked is going to be easier. The video pretty much says that early on. But it also depends on what kind of game it is (Rain World wouldn't be what it is with baked animations. The movement and therefore animation being procedural is what makes the interactions between creatures so dynamic, and the movement tech of the player so potentially deep even if a bit awkward; same with Gibbon, it just makes sense for that game). It's also super appropriate for certain game elements (procedural hair for example, Celeste is another example where it adds such a nice touch, and you can't easily get that effect baked). That's my counterargument to "bake everything" though you're not wrong for most things, most of the time.
Very informative.
I like dis vibeo!
Support me, Get SPARK: spehleon.gumroad.com/l/ylxsd Detailed guide to making IK systems: github.com/SpehleonLP/IK-Guide Soon we'll be back to our regularly scheduled programming of gamedev shitposting!
More gamedev shitposting plz
You're doing it! You're getting there!
Its walking but ankle/heel is clipping allot and as you said very unnatural looking
nice!
issues: The steps are being generated by keyframes instead of a neural net (this means it can't adapt to slopes) It falls over when rotation is enabled the PD controller for the walker is very jerky; as seen here the steps look very unnatural, it starts off too fast and ends too slow; this is just inherent to how PD controllers kinda work; and PI doesn't really apply here because the target changes so the integral increases infinitely. The paw is not looking right; in the crossover it should be bent backwards then tilted towards the ground. I was thinking that for stance it should be matching the ground normal; but it seems for swing it needs to be part of the IK chain maybe?
I love how the elbows just glue to eachother
I'm getting increasingly upset trying to get this to work; i really want to just cut the entire feature and move on. But ultimately it doesn't matter! even if i cut the procedural walking AND the part swapping; i STILL need IK to work correctly to prevent foot clipping! so there's no way around it.
The game takes place in a plane so just use a planar approach. You can use analytical methods easily for any joint with 2 limb segments and for 3 you just need to specify the angle of the final end affector to reduce the degrees of freedom enough that it becomes analytical. Also who cares about foot clipping. Its just a minor visual tweak. I seriously doubt there is any other work you need to do that is dependent on that detail so you can always implement it later.
@@BenjaminBlodgettDevOh; the issue is that the game is designed to be highly moddable, so it has a requirement for example leftHip and rearLeftPaw but doesn’t really have requirement for whats between those things. so its some unknown number of bones! But honestly i’ve been looking at the jacobian methods and i think they’re not actually all that different than analytical methods and not actually N^2 if you memoize correctly. Basically i think that its not actually all that complicated at all, and not that resource intensive at all, and the terminology is needlessly confusing and obtuse. as far as i can tell for each joint, consider everything after the joint to be a rod, and do analytical method for this new 2 segment joint, go to the next one etc. Then! for each degree of freedom set theta = (calculated theta - theta) * alpha + theta. do like 4 iterations with different alphas; done. Thats really basically all there is to it based on “introduction to inverse kinematics with jacobian transpose …” by samuel r buss et al. But i’m getting side tracked; what IS a jacobian? basically float[3][NoJoints] JointThetaRollPitchYaw; // this is a jacobian float[N][3] JointThetaRollPitchYaw; // this is a transpose of a jacobian. a jacobian is just an array of structs. thats it. No matrix operations, no advanced math. nothing. its just an array of structs. see what i mean by needlessly complicated language? so just; i made it out to be a lot more difficult in my head than it actually is. You can also see where the O(N^2) is coming from already right? to do analytical on each joint you need to calculate through the joint matrices and find the distance from the end effector to the current joint. but you don’t. You can just make a new memo each iteration of that data; if you’ve done joints 0..i then joints i..N are untouched, so the vectors in the memo are untouched they just need the quaternion from the current joint to fix the vector. So once programmed with a memo its an O(N) algorithm. Its just not actually difficult; it feels like its something because it uses complicated language. but thats all it does. But foot clipping was just one example, there’s a lot of cases like in the example i think you gave of not knowing exactly where a door knob is… you kinda need IK. The way around this i guess is to use a tile based collision system? Not really sure! but i can think of lots of ways the animations can become super jank and shitty looking if things aren’t exactly where the animator thinks they should be.
Oh no! The TV antenna got loose again!
3d quadruped struggles to walk on 2d background XD
XD
1.2 billion so you go ahead and stack spaghetti sauce at a store in in in a supermarket; you control the guy or the woman that runs the rub run brings out the carts on on on on a forklift: what happened?
what?
github.com/SpehleonLP/CPG-walking-model/tree/main The magic numbers man! the magic numbers will be the death of me!
Pangolin looks cool! havent seen it yet! sliders look really cool!
Note that this feature may be cut; its unclear at this time; at this point the hurdle is the practicality of actually animating it procedurally. I'm confident that i'm able to do that; but confident doesn't mean able.