Small question: What happens if you just want y to be x? What value would f, z, r be? I try to solve for it, but 1. The result is dependent on T. So if you have a variable framerate, you must update the value every frame 2. In your writeup post, it impossible to derive the value from the fully implicit Euler
if you want y to be x, it corresponds to f=infinity. You can show that in the limit this results in y=x. k1 k2 and k3 all become 0, so if you really need to support it in code, the 0/0 would need a special case to handle.
@@t3ssel8r That's one way to do it, but k1, k2, and k3 can be non-zero. Because y = x and dy = dx, you just need to make sure k2*ddy = (k3 - k1)*dx. But the problem is after solving this, f, z, and r must be recalculated every frame because they are dependent on T.
@@t3ssel8r@ t3ssel8r Actually, k1/2/3 cannot be zero. Because y is updated by dy, and dy is updated by ddy, to make y equal to x, dy must be equal to dx. This means ddy can't be equal to zero, because if ddy is equal to zero, dy never changes. This means k1/2/3 must equal some non-zero/non-infinite value. Does it make sense, or am I missing something? Sorry if this sounds confusing, but math isn't my strong suit, and I just really want to solve this.
I’ve been trying to write this up in Desmos for a while now but I can’t figure it out, I wrote a function which takes a collection of points and translates it into a usable format but when I try to implement the formulas it either gives me lines ghat stretch way too far or lines that are just the input, and how does second derivative work for y? it always goes to 0 and the derivative of x is 1 so what’s the point of it? edit: NVM, I rewatched and noticed that you said that x is the dynamic change which would mean that my calc is wrong, I used the change as the y
or you could leave the glitch in and in 10 years speedrunners are going to use their unlimited in game frame rate to backwards long jump into a parallel universe
Especially it being explained to the masses so well by a youtuber. It'd be one thing to see your own eq at a lecture hall but this just gives me tingles
Up until this point, I've been using the spring equation for all my procedural animation. How come I've never seen it written as a second-order system is beyond me. This is a perfect generalization. I'm absolutely stealing this. Thank you so much for making this video
its not stealing, this is math. mathematical breakthroughs in fundamental understanding represents a milestone for all humanity, not just the discoverers. to try and stay away from them is to stand in the way of progress. in other words, you have a DUTY to use the techniques laid down by scientists before you to your own ends.
I'm a controls engineer and this video was very fascinating. They really should be teaching this stuff in Universities with practical applications that students can understand rather than just raw math. Thanks for sharing!
It took me a whole semester of learning this (while performing well on tests) to actually understand what the hell I was doing. It would certainly be good to have a more visual simulation instead of a dry graph.
@@brightquarkwell Laplace does not do so well in mimo-systems... but here (as you said) Laplace would suffice... I guess it is more difficult to explain the whole laplace-transfo to someone who had no course for that in university...
Great stuff! I'm really not literate enough to understand the math, but your way of explaining these things made it really easy to see the effect and value of what you're doing. The results are seriously impressive, and your game is looking fantastic. Can't wait to see more :)
thanks! I had a feeling I went a bit hard on the math, but at least it's an honest presentation of the real process that usually happens behind the scenes.
I feel the same way. I've been wanting to learn more of the types of math to do these things but didn't even know where to start with what types of math. This gave me a better general understanding of how it's applied but also more info on what to learn.
You just walked me through my 3rd and 4th year engineering stability & controls class like it was nothing. Great content, and much appreciated on the refresher!
I took a computational physics class earlier this year and I walked into this video expecting another thing completely, but was shocked when they resumed the core of the class beautifully in 15 minutes, what a great video.
I am an engineering student, and I gotta just say I really appreciated the time you spent illustrating second-order damped responses with the little animations! It was awesome!
I'm an Engineering Physics student and I was studying co/contra-variant vectors for hw in a physics math class. Found this video and it's awesome to see all the crap we had to learn in such an elegant animation and idea
@@georgeforester3366 I think it does. Having a degree in Computer Engineering, I can tell you every concept mentioned in the video is something you come back to time and again in different courses. Even the thing mentioned at the end, ”pole-zero matching”. Videos like this are a good reminder that the things taught in academia have real applications, even as a programmer.
Now my physics degree pays off finally, I can understand what's happening in this random youtube video that youtube algorithm showed me. Btw. good content, the animations and the game looks gorgeous
Not really when you consider the fact that people without physics degrees...or any degrees at all, can easily understand this video and replicate his implementation. Scientists, especially mathematicians, tend to ivory tower their knowledge presentation to seem more grandeur than it is to feed their ego. I believe thats considered having delusions of grandeur.
@@eyeigensoftware You are totally right, the educational system is a failure. I have to talk every day with people with math, physics and engineering degrees, sometime even multiple, from Oxford to who-knows-who-rich-university, and when it comes to specific domain knowledge, they are like robots, can spit it out all by memory, but when it comes to use some common sense or to approach something in a different way, well... they are like robots indeed. Anyway, I believe that a degree is very helpful, for who has the correct mindset already, for the others is just a piece of paper and a bunch of words memorized to look good the day you need to say them.
Kinda disagree with you, not to feed their ego but rather just to merely explain how it works in scientific way ( Their brain are like programmed into this particular way of thinking in math, probably to explain more and more knowledge for others to know )@@eyeigensoftware
Why you were watching this then? And why you came here to comment this exact message? Looks like propaganda pro-university. I notice many people like you feel the urge to defend themselves somehow. It's very odd.
t3ssel8r: "...but to understand it properly, we'll have to get a bit more technical with our analysis." 9:42 me: "hey whoa whoa, wait a sec...I thought we were being technical this whole time."
I just came back to watch this video after a long time. When he got to that part I immediately remembered your comment. Even the second time around, very accurate description of my thoughts at that moment!
The internet (and specifically TH-cam) has become such an important early source of information for those willing to learn more than what they are taught in high school that I find it extremely important for videos like this to exist... To show what actually goes into making this kind of things: from coming up with an analytical solution, to parametrizing it in an artist-friendly way, to finally coming up with a numerical solution that satisfies all prerequisites. This is extremely important for those who have access to all the information in the world but desperately need a direction... Having been there I really can't stress this enough...
A lot of videos (this included) go beyond that and are more valuable than a lot of equivalent college lectures, even. In one of my machine learning classes as an undergrad, the professor showed us 3B1B's video on neural networks as an introduction. I'm now a PhD student and when I teach my students eigenvectors, I recommend 3B1B's video as a refresher, but also as a conceptual starting point for the inexperienced. I've seen hundreds of academic talks now in my early career and it's hard to think of more than a handful that are comparable or better in terms of clarity than videos like this, and I think people are sleeping on that. Personally I take a lot of inspiration from videos like this since visualizations are incredibly potent and really force you as the presenter to break things down into parsimonious chunks. The only obvious drawback is that making something like this takes more time than probably four weeks of upper-div lecture material haha
I think it shows the exciting ways that math can be applied in this world - ESPECIALLY ways that will grab young students' attention. I wish I stumbled upon videos like this when I was in middle school or high school, because I would have learned to actually give a shit about math.
I’m having control classes at my graduation on computer engineering and this video showed absolutely everything was taught me… I’ve got so excited with the didatics that I even sent it to my teachers. Basically a resume of everything I saw like, frequency, zeta, stability, peak time, overload, poles… Wow! You should create a course of this, I definitely would take it!
I remember first getting taught this in an engineering course. At the time, the context was on how to design a control system for something like an industrial process or a machine to minimize "bad" effects. The interesting thing here is you're actually trying to reintroduce the negative effects we try to design out in control theory.
Yeah, in real life it's physics that makes things lag and oscillate, and if you could design a PID loop to get a fast and crisp response (without bending the machine) it would be considered a perfect success. In the game world, there are no constraints coming from physics, but if we want to *add* constraints to make things look realistic, they end up taking almost the same form as the controller we use to fight against those constraints in the real world.
I took this kind of math in engineering school too. At the time, I had no idea what the application was. I blame my professor for being unrelatable. Now I understand exactly what it's used for and how to apply it. Awesome.
yeah, but it's nothing new really. The action of get a mathematical equations to mimic a real process(or system) behavior is very important to same people that use to control industrial process. It's commonly called modeling or system identification
Your explanation of the parameterized functions was better than that of my college professor, in an engineering class specifically on dynamics and controls, in less than 1/10th the time. Great job with the intuitive visuals!
I have this belief that all engineers must learn to program. Most of the older professors are getting outdated quickly by not incorporating interactive tools (specially if they built themselves). If I ever go back to university to teach my classes I DEFINITELY will create gorgeous animations every time I can. Already did for my own assignments, and blew teachers out of the water
Errata: - there is a typo at 14:13 the velocity update should be using k1_stable instead of k1 - one obvious performance optimization not mentioned in the video is to update the system at a fixed time step instead of the frame rate, so that T is constant, and all stability checks can be cached. this means the animation won't be as smooth as the display fps unless additional interpolation is applied - there are method other than semi-implicit Euler (for example, fully-implicit Euler) that are already unconditionally stable for the system in the video. These implicit methods require doing a bit more algebra up-front, but the implementation may ultimately be faster/simpler.
I would suggest iterating multiple times in case of delays. We can choose a fixed duration that the delta time should not exceed, let's say 0.016 (60 fps). Than, in case we got a frame with a delta time of 0.25 we should run our calculation logic 15 times with a delta of 0.016 and 1 time with a delta of 0.01. var processedTime = 0 var fixedDeltaTime = 1 / 60 while processedTime < deltaTime { processedTime += fixedDeltaTime if processedTime < deltaTime { RunOurCalculations(fixedDeltaTime) } else { RunOurCalculations(deltaTime - (processedTime - fixedDeltaTime)) } }
Nice video, although i would have really liked something MORE "approachable"... you went too hard on maths, more specifically equation algebra math, not the linear algebra math which is at least more understandable... 🥲 Out of the 15 min video, 6 mins are shifting around gibberish, and 5 min shifting around gibberish with nice graphs... and almost all the remaining are visual examples of the results(which are nice, i like examples and results) and just like 20 seconds of code example. The concept and the idea are well explained, but no clue on how you actually implemented this in your game. Top tier video for a math channel, but if you are planning into do game dev content(as i guess by watching your channel uploads) i suggest you to take simpler approaches in your videos. I think it's the second or third time i stumbled on your channel as i do a lot of game dev, new techniques and game mechanics research and your videos just pop into my recommendations, but I feel like they just present cool ideas/concepts but leaves too much of "do your own research afterwards" and/or "you already should know what i'm talking about" feelings... so i usually end up leaving more confused than smarter(and probably the reason i'm not subscribed yet)... lol If you would accept my humble recommendation, if you are gonna present math, try presenting it in a simple way instead of pure equations, i get it, you like maths, you are proud of it, but many of us don't share that enthusiasm, most of us came here to your videos seeking knowledge about how to improve our games, not be defeated by one of our school enemies(math cough)... The equations are nice to have, but please explain it by simple means afterwards and give code examples, as me, most people interested in game development don't know how to read complex equations with strange to us constants as we don't use them ever, and added to that in 15 seconds you shift the equations like 5 times, i don't even know what most of the constants means or how are you using them, i want to make cool games, not comprehend the essence of what moves the universe, but i'm not stupid, if you put it in code(literally, any high level programming language) i will understand it, because code is made in a way to make everything simple. I did not knew what the heck was going on until i paused the video at 13:05 and started going through the little code you put on screen, then i started to get a grasp of what was going on and things started clicking here and there, but still some things were guesses as how you implemented it in game as you showed zero examples of usage... i guessed that you are using the position and/or rotation vectors of chosen joints or moving objects to apply the formula on, using the previous stored result and the current values, but you don't explain anything of that on detail... Seriously, more practical examples and in game implementation examples(code) side by side with in game visuals of the results are much more helpful than heavy theory, equations and theory. IMHO this approach is mostly ASMR to the regular youtube user, closer to "two minute papers" than to "How to rig a hand on blender tutorial", hope that changes as you grow your channel, peace
@@SGGhostRider I somewhat agree to this myself. The reason I say somewhat is because this video, and the aim assist, really makes me want to learn these mathematical concepts. That said, I would have loved a small breakdown of the equations into code a ton though. These effects are absolutely gorgeous and having a simpler “onboarding” to the concepts while given information on the deeper math behind it would be truly next level stuff.
@@SGGhostRider I disagree completely. There are more than enough videos for game dev out there which remain shallow in the concepts they present. Here we have a creator who instead of watering it down expects the audience to actually **have** the minium knowledge each and every developer _should_ have. Development _is_ Maths and while it is true that many, many things nowadays can be made without understanding the concepts behind it, and most often one does not need to know and understand it all, I personally like this channel especially _because_ it is presenting concepts in a nice, digestible way _for people who have an actual Computer Science background_. There are a lot of content out there which is less 'advanced', it is nice to also have 'advanced' high-quality stuff. Please do not change that, t3ssel8r.
In Turkish, there is a saying as "Alaylı ve okullu kişi." It separates people according to the way of education or self-education in a subject. Alaylı(Self-taught): A person who has trained himself without the school education required for a profession. Okullu(Schooled): A person who has received the school education required for a profession. Both "Alaylı" and "Okullu" people are seen as the most competent and knowledgeable in a subject. These are the people who can convey and explain the best information on the subject. For you, I can say "You are both "Alaylı" and "Okullu". It was a great explanation. I wish my teachers were so devoted to teaching something when I was studying at university. Congratulations and thank you.
If I may make a visual suggestion, I think it would be really cool if the robot stumbled backward in different ways (possibly procedural ways) when you smack it. Not only do I think that would give your damage more impact, but it could also open up another way to show off your procedural animation process. Lovely work dude, don't forget to take breaks! Love, Sam.
This, 100%, impact being a critically important element of both animation and gameplay, this would probably have even greater impact than would seem immediately apparent. Very good idea, I really hope that he takes your suggestion.
Well if I understood this video correctly, he has essentially already implemented this. The robot dynamically moves to a position. So if a force, such as an attack struck the robot, the desired position of the robot would move and robot would move accordingly to the implented physics, if he wanted the robot to move in a certain way to convey being pushed back, he could adjust the f zeta and r values.
@@tuc_mage Wait, he's letting the physics solver take precedence over the procedural animation? I think I missed that part, is there a timestamp or something? Thank you!
@@NilesBlackX his procedural animation system is based on physics, he has implented a physics system where the object reacts to the acceleration velocity and position of the desired location. It's not a complete physics simulation, but it does just what he has set it up to do.
@@tuc_mage ohhhhh I wouldn't call just velocity + position anything close to a physics solver. As an example, for what you're describing, he needs to have not just collision but the location and vector of the hit, which this system doesn't have the mechanisms for currently. And that's not a small amount of additional work, we're talking a jump from 1st grade math (floating point multiplication) to calculus (bounding box of a convex hull). That's a non-trivial amount of work.
I love the curve visualization in the inspector. I have no thoughts on how to abstracted this to general use, but an easing system like this is something I'd be excited to see on the asset store. I recently had extreme struggles getting a missile to track into a moving target with a last minute exaggerated swooping motion. This video might be the context I need to do better.
admittedly, I don't use that inspector in my actual project and only made it for the video, but it might be a pretty good idea to make it into a little self-contained asset.
Well done! Thank you for including the math in these videos. I'm sure it adds a lot of editing time but it helps me (an engineer) follow exactly what your purpose and solution is.
My background is in control theory and state estimation. Really awesome explanation of how you applied things. I've always wondered how control theory works its way into game design and I appreciate you took the time to show that in your video. Awesome work!
As a second year electronics student at uni, it’s insane to me how these exact concepts can be applied to game development. Super interesting and motivating to hear
seeing that last bit made me so happy. at first it went from "oh this is some really clean fluid movement" to "wow... i now understand the attention and effort behind such a beautifuly 'simple' movement"
This guy just made my 3rd and 4th-year engineering math and control classes look more interesting than they actually were. If I was taught like this I'd definitely appreciate those college topics more. Great video must have taken a lot of time and effort making it.
Yeah, my first thought was at 1:53 that this calls for a PID controller where I have a lot of freedom with the terms to tune smoothness, speed or overshot (if desired).
7:00 this trick is used in a popular BR Apex legned's cosmetic ornaments. When a cosmetic like gun charm has something dangling with a rope or wire. It jiggles if you move around but if you focus too much on the animation you can see they are just using the magnitude of your movement for magnitude of jiggle and the curve is of fixed shape.
Stumbled across this channel from Summer of Math, just finished binging all of your videos. This has instantly become one of my favorite TH-cam channels. Keep up the amazing work!
As soon as I saw the responses to the curve before the step response section, I immediately thought back to my Control course in my degree. As an EE, it is very satisfying to see this used to approach such a fun example as video game animation. Good video!
This was absolutely fascinating, and I love the visualization you used to describe abstract concepts. A lot of the math went over my head, but even as a layman I was able to understand the general idea of what each iteration of the math was doing, or trying to prevent. I would love to see more procedural animation videos! Also, I would LOVE to see some kind of mash-up between you and another TH-camr named "Rujik the Comatose". He is working on some similar pixel art, procedural animation, type videos, and I think the different technical background that each of you guys bring would create some really cool visual styles.
I clicked on this video expecting someone very smart, very quickly brush over topics they find easy and showcase how smart they are. Instead, was someone even smarter, able to explain it to an imp like me. It was very... unexpected!
There's something I love about the fact that you spent a solid 6 minutes explain complex math your average Uni STEM student could barely get a grasp on, before saying "now, as artists, we have all we need" right at 5:50. You aren't pompous or showy about the hard work you've put into discovering how this works - rather you're using this newfound knowledge to better a craft used to bring joy to the average person's life. Your skill isn't a tool that puts you above the fine arts, it enhances your skillset. That's really badass.
The programmer I aspire to become. Knowing mathematics and equations, and mixing them with computations and iterations ❤ You're living my dream ❤ All greatness and success to you.
In general, accurate physics simulations, for example fluid simulations or planetary motion, is guided by math (often differential equations). Surely that kind of simulation could be considered a type of procedural animation? They are often convincing and visually appealing.
I’ve found throughout my years as a hobbyist animator that nobody seems to know how to use motion interpolation despite its simplicity in most video editing software. The simple animation you provided at the start of the video will hopefully encourage more people to use the tools provided to them in a more meaningful way
I'm a gamedev programmer but my math knowledge is pretty limited. I tried to keep up during the whole video and at the end you slip a fully new equation with a text saying "Too hard to explain" as I'm pulling my hairs trying to understand how you computed this all and got it to work xD Animations and all are dope and you are really giving yourself to make us understand your thinking process which I value very much. Thank you for this video !
I'm not a gamedev but this might be one of the most interesting videos I've seen on this area. As an engineering student I'm so happy to see such a cool implementation of maths into coding. And the way you portrayed it makes it very easy to understand
You are right, I don't understand why all these people are hating, there is like an ongoing propaganda pro-university? Or is a matter of fragile egos offended? You can see the trend not only in this comments section, almost everywhere online, I think it coincides with low level payment for high level jobs, that is increasing the frustration of people getting out with a good degree to then have a miserable work experience, I have some coworkers that confessed that to me at least, I don't know if it applies to others as well, but I would say that is related somehow.
This video really made me wanna relearn all my highschool math lessons. This is my first time feeling so excited and intrigued about learning math. Great video, surprisingly inspirational lol.
This math is a bit above high school math. You'll need at least uni level single variable calculus, linear algebra, and then ordinary differential equations. Personally I feel like maths is much better to study than something like computer science if you wanna do game dev... Although there are a few critical courses in Computer science, but can be boiled down to just needing to do some low-level programming/assembly (with cache knowledge).
@@muuubiee You cover everything you have mentioned in a regular CS program unless the math you need is way above partial differential equations. Do you need things such as topology or something in higher level maths?.
TH-cam really decided to make me see this video two days after I completed my computational physics exam, really? Someone is messing with me. Great video btw
I know I learned a lot of this last year in diff eq, but I have since then forgotten nearly everything from that class. This was a really nice review, made things very easy to understand
I really don't know much about this level of math, but I really appreciate the way you explained it. I still don't understand it on a technical level, but seeing the implementation and clear connection between things like you explained, it makes it easier to understand on a higher level, especially with your demonstration and comparison to traditional keyframes. I also anticipate that this will be a great study guide for me to learn the more specific terms, math, and other things, so thanks!
As a computer engineer, I never thought Id see the math for closed-loop control systems popping up in procedural animation, but here we are, lol. Edit: State space representation? Now there's a name I haven't heard in a long time....
A bit unrelated but are you interested in ML? If so you might be surprised to hear that State Space Representations are making a comeback, via the Structured State Space Model, aka S4 (The extra S comes from the title of the paper that introduced it)
As an electrical engineer the moment i saw the equation and graphs i thought "oh, a basic PID parameters of pretty much every motor controlling frequency inverter". It`s such a cool universal concept of describing dynamics of real life elements.
As a game developer struggling through Differential Equations in University… thank you! This video has been a huge encouragement to strive onward and continue learning
Oh men, I feel soooo envy. How in the earth you can make sense of all of those numbers while making such a beautiful result. Thanks for sharing your expertise with the rest of us.
Seeing all of this demonstrated within the context of video game animations, and having it visualized within Unity's IDE, goes an extremely long way educationally. This is the first video I've encountered from the t3ssel8r channel but if the rest are this good, I'm going to be super hooked.
I got an A in geometry and barely passed anything else. This video is monumental for me. Thank you so much. It makes me sad that math is not visual learner friendly in most cases these days. This video gives me hope
The robot animation is driving me nuts!😱 This just changed my entire perspective of pixel art games. I might even be doing my 3d game in pixel art now. I'm definitely binging everything on you channel.😁
Really cool implementation! As a practicing engineer in dynamics, something I think might be cool for you to check out is adding some 'simple' nonlinearity to the system. A great prototypical example is the Duffing equation, which is still second order but adds a nonlinearity that enables so-called 'stiffening' or 'softening', which among other things makes the system response characteristics sensitive to the actual magnitude of the input. I'd imagine you could use it to make for instance the robot respond very quickly to certain types of inputs (say very large changes) but still slowly for others (like minute changes), without needing to change any of the system parameters.
yeah it's a good idea, and probably really useful for things like rope dynamics. I think there's some danger of unwittingly introducing limit cycles. Keeping things linear makes for easier analysis, at least at my pay grade :P
@@t3ssel8r While it's true there's no general solution to prove the existence of limit cycles (or chaos for that matter), there are methods like Lyapunov energy functions that I expect could be used for the Duffing system to create conditional criteria to apply to coefficients very similar to your linear system limitation that prevents instability. However it is true that the analytical complexity and computational overhead may not be worth what you get in the end, so maybe it's best to leave that alone and focus on what is simpler to work with.
I love this video. I never thought about animations as stableizable dynamical systems. I'm making a boss battle bot in rocket league that modify the physics of the game and lets you play in a boss fight, and I think this technique could greatly improve the movements of the boss. I found by myself the first order dynamics model you mentionned in the video, and it's working fine. Plus, you don't really have to apply further analysis on it, as it's already very stable, no matter the timestep. That being said, I like the wobbly features that the second order model gives, so I really want to give it a try now! Anyways, thank you for sharing your work!
I like that you show how the math actually translates to code rather than like most videos I see, where they just show the math itself and never show the code or how it's implemented into the game
This video is a prime example of why elegant and intuitive visuals and animations are so powerful when explaining complex information. My comment here is simply repeating the sentiment of many other commenters.
Love your demos and explanations. This one is.. next level :D Can you eventually do one on how you render/shade/compose such a good "Pixel Art" style? The lines are very clean. :O Pretty please? :)
This video is *incredible*. The way you explained everything and the order was perfect. The visualizations. Everything. Thank you so much for making this.
Just watched this video. Became a new subscriber. I liked how you could see everything from concept, to game, to the mathematical inputs all in one screen. Great way to show your self when developing and as well as others. Again, awesome video. We all very much appreciate the huge amount of time you sunk into it because it turned out clear and visually easy to understand. Thank you.
The level of clarity in this guy's explanation of complex subject rival those of Indian mathematic channels I used to pass my undergrad engineering courses. Bravo!
Nice video. Regarding the calculation: You could also "fake" intermediate time steps without comutaional cost, by using T/2 instead of T in a matrix A2, and then square A2 to obtain a more stable A. Instead of 2 you can use also any other integer (or eventually use a matrix exponent.) Eventually, the time step is only given by the artistically desired update frequency of the motion-causing term (connected to B)
I learned about solving differential equations using euler's method in my university physics class and about eigenvalues in my linear algebra class and I wish I had found this video back then. It would have been such a cool visualization of the concepts I was learning.
this is interesting to say the least, I'm currently studying most of what you said in the video and it sounds so much more interesting knowing that I can use it in my games lol, thanks for the nice explanations
This gave me flashbacks to 2nd year engineering math at university. Someone else mentioned too but when we learn how to use Euler's method and Eigenvalues, we usually aren't given such a good explanation of how each of the terms interact with the graph specifically and how it can be useful. This video gave great perspective!
Bro to see concepts i've been learning in my engineering classes to appear in procedural animation optimization makes me feel like i've chosen the right hobby. Thanks for this, please make more videos!
For FAQ and a deeper discussion on this video, check out the writeup:
www.patreon.com/posts/procedural-video-82487305
Small question: What happens if you just want y to be x? What value would f, z, r be? I try to solve for it, but
1. The result is dependent on T. So if you have a variable framerate, you must update the value every frame
2. In your writeup post, it impossible to derive the value from the fully implicit Euler
if you want y to be x, it corresponds to f=infinity. You can show that in the limit this results in y=x. k1 k2 and k3 all become 0, so if you really need to support it in code, the 0/0 would need a special case to handle.
@@t3ssel8r That's one way to do it, but k1, k2, and k3 can be non-zero. Because y = x and dy = dx, you just need to make sure k2*ddy = (k3 - k1)*dx. But the problem is after solving this, f, z, and r must be recalculated every frame because they are dependent on T.
@@t3ssel8r@ t3ssel8r Actually, k1/2/3 cannot be zero. Because y is updated by dy, and dy is updated by ddy, to make y equal to x, dy must be equal to dx. This means ddy can't be equal to zero, because if ddy is equal to zero, dy never changes. This means k1/2/3 must equal some non-zero/non-infinite value. Does it make sense, or am I missing something? Sorry if this sounds confusing, but math isn't my strong suit, and I just really want to solve this.
I’ve been trying to write this up in Desmos for a while now but I can’t figure it out, I wrote a function which takes a collection of points and translates it into a usable format but when I try to implement the formulas it either gives me lines ghat stretch way too far or lines that are just the input, and how does second derivative work for y? it always goes to 0 and the derivative of x is 1 so what’s the point of it?
edit: NVM, I rewatched and noticed that you said that x is the dynamic change which would mean that my calc is wrong, I used the change as the y
or you could leave the glitch in
and in 10 years speedrunners are going to use their unlimited in game frame rate to backwards long jump into a parallel universe
I started to think this is the reason why Elden Ring has this "Long Zipping" glitch used by speedrunners.
It'sa me! aaaaaaaaaaaaaaaaand he's gone.
& .5 button presses
@@samic no, they cannot remove/fix it without completely overhauling a small part of the physics rendering, sadly.
This comment really raised my scuttlebugs
Imagine being able to bring Euler into the present and show him the sort of things his maths has led to.
Especially it being explained to the masses so well by a youtuber. It'd be one thing to see your own eq at a lecture hall but this just gives me tingles
"Don't worry, you don't need math and physics to take animation class."
Animation class:
Euler is the greatest mathematician ever.
Included in the Bucket List ✅
He would be so ashamed
Up until this point, I've been using the spring equation for all my procedural animation.
How come I've never seen it written as a second-order system is beyond me.
This is a perfect generalization.
I'm absolutely stealing this.
Thank you so much for making this video
Ooh, one of my favorite gamedev youtubers commenting on another one of my favorite gamedev youtuber's video!
"I'm absolutely stealing this." practically a motto of game dev lol
TH-cam inception
its not stealing, this is math. mathematical breakthroughs in fundamental understanding represents a milestone for all humanity, not just the discoverers. to try and stay away from them is to stand in the way of progress. in other words, you have a DUTY to use the techniques laid down by scientists before you to your own ends.
I'm happy to hear that the animations of the game are going to be even better than what they already were xD
I'm a controls engineer and this video was very fascinating. They really should be teaching this stuff in Universities with practical applications that students can understand rather than just raw math. Thanks for sharing!
This was my thought too! May have paid more attention in theory lectures if I was animating a robot rather than a MATLAB figure 😂
I dont know why he's sticking with the time domain when complex Laplace transform and Pole Zero analysis make these problems much easier to analyse
It took me a whole semester of learning this (while performing well on tests) to actually understand what the hell I was doing.
It would certainly be good to have a more visual simulation instead of a dry graph.
@@brightquark he used pole zero matching
@@brightquarkwell Laplace does not do so well in mimo-systems... but here (as you said) Laplace would suffice...
I guess it is more difficult to explain the whole laplace-transfo to someone who had no course for that in university...
2 years later and this is still the only video of yours to be infinitely recommended
Great stuff! I'm really not literate enough to understand the math, but your way of explaining these things made it really easy to see the effect and value of what you're doing. The results are seriously impressive, and your game is looking fantastic. Can't wait to see more :)
thanks! I had a feeling I went a bit hard on the math, but at least it's an honest presentation of the real process that usually happens behind the scenes.
I feel the same way. I've been wanting to learn more of the types of math to do these things but didn't even know where to start with what types of math. This gave me a better general understanding of how it's applied but also more info on what to learn.
Adam!
Love you Adam
Imagine an enemy coded by t3ssel8r and drawn by Adam. :O
You just walked me through my 3rd and 4th year engineering stability & controls class like it was nothing. Great content, and much appreciated on the refresher!
I’m glad someone else sees the engineering connection, it threw me for a loop. I’m taking a system dynamics class right now!
@@Mrjcraft00 I learnt about this in a classical mechanics course
Exactly what I was thinking
I'm doing a differential equations and linear algebra class, it all clicks in place.
I took a computational physics class earlier this year and I walked into this video expecting another thing completely, but was shocked when they resumed the core of the class beautifully in 15 minutes, what a great video.
I am an engineering student, and I gotta just say I really appreciated the time you spent illustrating second-order damped responses with the little animations! It was awesome!
Beat me to it
I'm an Engineering Physics student and I was studying co/contra-variant vectors for hw in a physics math class. Found this video and it's awesome to see all the crap we had to learn in such an elegant animation and idea
Mechatronics engineering student here, adding my thanks to the pile!
I wish I could talk to all of you if you found going to university helped understand concepts in this video. I find programming alone is limiting me.
@@georgeforester3366 I think it does. Having a degree in Computer Engineering, I can tell you every concept mentioned in the video is something you come back to time and again in different courses. Even the thing mentioned at the end, ”pole-zero matching”. Videos like this are a good reminder that the things taught in academia have real applications, even as a programmer.
Now my physics degree pays off finally, I can understand what's happening in this random youtube video that youtube algorithm showed me. Btw. good content, the animations and the game looks gorgeous
what did you study in your physics degree?
I failed physics so hard but love the subject
Not really when you consider the fact that people without physics degrees...or any degrees at all, can easily understand this video and replicate his implementation. Scientists, especially mathematicians, tend to ivory tower their knowledge presentation to seem more grandeur than it is to feed their ego. I believe thats considered having delusions of grandeur.
@@eyeigensoftware You are totally right, the educational system is a failure.
I have to talk every day with people with math, physics and engineering degrees, sometime even multiple, from Oxford to who-knows-who-rich-university, and when it comes to specific domain knowledge, they are like robots, can spit it out all by memory, but when it comes to use some common sense or to approach something in a different way, well... they are like robots indeed.
Anyway, I believe that a degree is very helpful, for who has the correct mindset already, for the others is just a piece of paper and a bunch of words memorized to look good the day you need to say them.
Kinda disagree with you, not to feed their ego but rather just to merely explain how it works in scientific way ( Their brain are like programmed into this particular way of thinking in math, probably to explain more and more knowledge for others to know )@@eyeigensoftware
Having just taken my ODE course i didn't realize what i was learning. This made me appreciate all the pain and suffering i just went through
Why you were watching this then? And why you came here to comment this exact message? Looks like propaganda pro-university. I notice many people like you feel the urge to defend themselves somehow. It's very odd.
t3ssel8r: "...but to understand it properly, we'll have to get a bit more technical with our analysis." 9:42
me: "hey whoa whoa, wait a sec...I thought we were being technical this whole time."
_"But first, we need to talk about parallel universes"_
@@ultimaxkom8728 i see what you did there
CODEPARADE REFERENCE?!?!?!
I just came back to watch this video after a long time. When he got to that part I immediately remembered your comment. Even the second time around, very accurate description of my thoughts at that moment!
guess what, baby, technical is a SPECTRUM
The internet (and specifically TH-cam) has become such an important early source of information for those willing to learn more than what they are taught in high school that I find it extremely important for videos like this to exist... To show what actually goes into making this kind of things: from coming up with an analytical solution, to parametrizing it in an artist-friendly way, to finally coming up with a numerical solution that satisfies all prerequisites. This is extremely important for those who have access to all the information in the world but desperately need a direction... Having been there I really can't stress this enough...
A lot of videos (this included) go beyond that and are more valuable than a lot of equivalent college lectures, even. In one of my machine learning classes as an undergrad, the professor showed us 3B1B's video on neural networks as an introduction. I'm now a PhD student and when I teach my students eigenvectors, I recommend 3B1B's video as a refresher, but also as a conceptual starting point for the inexperienced. I've seen hundreds of academic talks now in my early career and it's hard to think of more than a handful that are comparable or better in terms of clarity than videos like this, and I think people are sleeping on that. Personally I take a lot of inspiration from videos like this since visualizations are incredibly potent and really force you as the presenter to break things down into parsimonious chunks. The only obvious drawback is that making something like this takes more time than probably four weeks of upper-div lecture material haha
I think it shows the exciting ways that math can be applied in this world - ESPECIALLY ways that will grab young students' attention. I wish I stumbled upon videos like this when I was in middle school or high school, because I would have learned to actually give a shit about math.
@@adrianlowery7175 That is exactly the reason why we were not taught in that way. We would be too smart to control... All by design
Damn, that robot looks so clean and feels so smooth. I especially like the shooting sfx.
That direct swap between code and math was so helpful. One of the best explanation channels I have seen
I’m having control classes at my graduation on computer engineering and this video showed absolutely everything was taught me… I’ve got so excited with the didatics that I even sent it to my teachers. Basically a resume of everything I saw like, frequency, zeta, stability, peak time, overload, poles…
Wow! You should create a course of this, I definitely would take it!
hi, do you know what subjects / courses I would need to learn in order to understand and follow along with what he is saying in the video?
I remember first getting taught this in an engineering course. At the time, the context was on how to design a control system for something like an industrial process or a machine to minimize "bad" effects. The interesting thing here is you're actually trying to reintroduce the negative effects we try to design out in control theory.
Yeah, in real life it's physics that makes things lag and oscillate, and if you could design a PID loop to get a fast and crisp response (without bending the machine) it would be considered a perfect success. In the game world, there are no constraints coming from physics, but if we want to *add* constraints to make things look realistic, they end up taking almost the same form as the controller we use to fight against those constraints in the real world.
I was first introduced to it in a circuits course analyzing 2nd order transitions
I took this kind of math in engineering school too. At the time, I had no idea what the application was. I blame my professor for being unrelatable.
Now I understand exactly what it's used for and how to apply it. Awesome.
Instrumentation tech?
yeah, but it's nothing new really. The action of get a mathematical equations to mimic a real process(or system) behavior is very important to same people that use to control industrial process. It's commonly called modeling or system identification
Your explanation of the parameterized functions was better than that of my college professor, in an engineering class specifically on dynamics and controls, in less than 1/10th the time. Great job with the intuitive visuals!
So true
Yep, took a semester of control systems and this video made more sense that that class
I have this belief that all engineers must learn to program. Most of the older professors are getting outdated quickly by not incorporating interactive tools (specially if they built themselves). If I ever go back to university to teach my classes I DEFINITELY will create gorgeous animations every time I can. Already did for my own assignments, and blew teachers out of the water
Errata:
- there is a typo at 14:13 the velocity update should be using k1_stable instead of k1
- one obvious performance optimization not mentioned in the video is to update the system at a fixed time step instead of the frame rate, so that T is constant, and all stability checks can be cached. this means the animation won't be as smooth as the display fps unless additional interpolation is applied
- there are method other than semi-implicit Euler (for example, fully-implicit Euler) that are already unconditionally stable for the system in the video. These implicit methods require doing a bit more algebra up-front, but the implementation may ultimately be faster/simpler.
I would suggest iterating multiple times in case of delays.
We can choose a fixed duration that the delta time should not exceed, let's say 0.016 (60 fps).
Than, in case we got a frame with a delta time of 0.25 we should run our calculation logic 15 times with a delta of 0.016 and 1 time with a delta of 0.01.
var processedTime = 0
var fixedDeltaTime = 1 / 60
while processedTime < deltaTime {
processedTime += fixedDeltaTime
if processedTime < deltaTime {
RunOurCalculations(fixedDeltaTime)
} else {
RunOurCalculations(deltaTime - (processedTime - fixedDeltaTime))
}
}
Nice video, although i would have really liked something MORE "approachable"... you went too hard on maths, more specifically equation algebra math, not the linear algebra math which is at least more understandable... 🥲
Out of the 15 min video, 6 mins are shifting around gibberish, and 5 min shifting around gibberish with nice graphs... and almost all the remaining are visual examples of the results(which are nice, i like examples and results) and just like 20 seconds of code example.
The concept and the idea are well explained, but no clue on how you actually implemented this in your game. Top tier video for a math channel, but if you are planning into do game dev content(as i guess by watching your channel uploads) i suggest you to take simpler approaches in your videos.
I think it's the second or third time i stumbled on your channel as i do a lot of game dev, new techniques and game mechanics research and your videos just pop into my recommendations, but I feel like they just present cool ideas/concepts but leaves too much of "do your own research afterwards" and/or "you already should know what i'm talking about" feelings... so i usually end up leaving more confused than smarter(and probably the reason i'm not subscribed yet)... lol
If you would accept my humble recommendation, if you are gonna present math, try presenting it in a simple way instead of pure equations, i get it, you like maths, you are proud of it, but many of us don't share that enthusiasm, most of us came here to your videos seeking knowledge about how to improve our games, not be defeated by one of our school enemies(math cough)...
The equations are nice to have, but please explain it by simple means afterwards and give code examples, as me, most people interested in game development don't know how to read complex equations with strange to us constants as we don't use them ever, and added to that in 15 seconds you shift the equations like 5 times, i don't even know what most of the constants means or how are you using them, i want to make cool games, not comprehend the essence of what moves the universe, but i'm not stupid, if you put it in code(literally, any high level programming language) i will understand it, because code is made in a way to make everything simple.
I did not knew what the heck was going on until i paused the video at 13:05 and started going through the little code you put on screen, then i started to get a grasp of what was going on and things started clicking here and there, but still some things were guesses as how you implemented it in game as you showed zero examples of usage... i guessed that you are using the position and/or rotation vectors of chosen joints or moving objects to apply the formula on, using the previous stored result and the current values, but you don't explain anything of that on detail...
Seriously, more practical examples and in game implementation examples(code) side by side with in game visuals of the results are much more helpful than heavy theory, equations and theory. IMHO this approach is mostly ASMR to the regular youtube user, closer to "two minute papers" than to "How to rig a hand on blender tutorial", hope that changes as you grow your channel, peace
@@SGGhostRider I somewhat agree to this myself. The reason I say somewhat is because this video, and the aim assist, really makes me want to learn these mathematical concepts.
That said, I would have loved a small breakdown of the equations into code a ton though. These effects are absolutely gorgeous and having a simpler “onboarding” to the concepts while given information on the deeper math behind it would be truly next level stuff.
this 3d to pixel art effect. is it a shader? how did you make it, it looks so cool. is there a tutorial for it?
@@SGGhostRider I disagree completely. There are more than enough videos for game dev out there which remain shallow in the concepts they present. Here we have a creator who instead of watering it down expects the audience to actually **have** the minium knowledge each and every developer _should_ have. Development _is_ Maths and while it is true that many, many things nowadays can be made without understanding the concepts behind it, and most often one does not need to know and understand it all, I personally like this channel especially _because_ it is presenting concepts in a nice, digestible way _for people who have an actual Computer Science background_. There are a lot of content out there which is less 'advanced', it is nice to also have 'advanced' high-quality stuff. Please do not change that, t3ssel8r.
In Turkish, there is a saying as "Alaylı ve okullu kişi."
It separates people according to the way of education or self-education in a subject.
Alaylı(Self-taught): A person who has trained himself without the school education required for a profession.
Okullu(Schooled): A person who has received the school education required for a profession.
Both "Alaylı" and "Okullu" people are seen as the most competent and knowledgeable in a subject.
These are the people who can convey and explain the best information on the subject.
For you, I can say "You are both "Alaylı" and "Okullu".
It was a great explanation. I wish my teachers were so devoted to teaching something when I was studying at university.
Congratulations and thank you.
Technical artists are the most terrifying kind of artist i know (compliment)
This was very interesting, even as a non-dev. Thank you!
30 seconds in and I can already see that the quality of the video is phenomenal.
Ikr
If I may make a visual suggestion, I think it would be really cool if the robot stumbled backward in different ways (possibly procedural ways) when you smack it. Not only do I think that would give your damage more impact, but it could also open up another way to show off your procedural animation process. Lovely work dude, don't forget to take breaks! Love, Sam.
This, 100%, impact being a critically important element of both animation and gameplay, this would probably have even greater impact than would seem immediately apparent.
Very good idea, I really hope that he takes your suggestion.
Well if I understood this video correctly, he has essentially already implemented this. The robot dynamically moves to a position. So if a force, such as an attack struck the robot, the desired position of the robot would move and robot would move accordingly to the implented physics, if he wanted the robot to move in a certain way to convey being pushed back, he could adjust the f zeta and r values.
@@tuc_mage Wait, he's letting the physics solver take precedence over the procedural animation? I think I missed that part, is there a timestamp or something? Thank you!
@@NilesBlackX his procedural animation system is based on physics, he has implented a physics system where the object reacts to the acceleration velocity and position of the desired location. It's not a complete physics simulation, but it does just what he has set it up to do.
@@tuc_mage ohhhhh I wouldn't call just velocity + position anything close to a physics solver.
As an example, for what you're describing, he needs to have not just collision but the location and vector of the hit, which this system doesn't have the mechanisms for currently.
And that's not a small amount of additional work, we're talking a jump from 1st grade math (floating point multiplication) to calculus (bounding box of a convex hull). That's a non-trivial amount of work.
I love the curve visualization in the inspector. I have no thoughts on how to abstracted this to general use, but an easing system like this is something I'd be excited to see on the asset store. I recently had extreme struggles getting a missile to track into a moving target with a last minute exaggerated swooping motion. This video might be the context I need to do better.
admittedly, I don't use that inspector in my actual project and only made it for the video, but it might be a pretty good idea to make it into a little self-contained asset.
@@t3ssel8r Out of curisity how did you draw the curve in the inspector ?
a bunch of calls to Handles.DrawLine lol
@@t3ssel8r Ahaha, my kind of code xD
@@t3ssel8r Could you please share the code for your inspector visualization?
I'm fascinated by this pixel shader you have. It's not just blurring it, edges are crisp and it looks like intentional pixel art.
I cheered when you turned your y = x into a second order linear non-homogeneous system. I’m so proud of myself for seeing that coming a mile away
This is a proper devlog. These math-heavy videos are genuinely a thousand times more helpful than videos that gloss over the math
Well done! Thank you for including the math in these videos. I'm sure it adds a lot of editing time but it helps me (an engineer) follow exactly what your purpose and solution is.
My background is in control theory and state estimation. Really awesome explanation of how you applied things. I've always wondered how control theory works its way into game design and I appreciate you took the time to show that in your video. Awesome work!
As a second year electronics student at uni, it’s insane to me how these exact concepts can be applied to game development. Super interesting and motivating to hear
seeing that last bit made me so happy. at first it went from "oh this is some really clean fluid movement" to "wow... i now understand the attention and effort behind such a beautifuly 'simple' movement"
This guy just made my 3rd and 4th-year engineering math and control classes look more interesting than they actually were.
If I was taught like this I'd definitely appreciate those college topics more. Great video must have taken a lot of time and effort making it.
I never really considered how similar it is taking error out of a rig (e.g. with a PID controller) to putting deliberate error into a rig
I had the same thought watching this, super cool stuff
Yeah, my first thought was at 1:53 that this calls for a PID controller where I have a lot of freedom with the terms to tune smoothness, speed or overshot (if desired).
Thrilled to see the inclusion of instability situations and how to deal with them. Extremely well done!
7:00 this trick is used in a popular BR Apex legned's cosmetic ornaments. When a cosmetic like gun charm has something dangling with a rope or wire. It jiggles if you move around but if you focus too much on the animation you can see they are just using the magnitude of your movement for magnitude of jiggle and the curve is of fixed shape.
Stumbled across this channel from Summer of Math, just finished binging all of your videos. This has instantly become one of my favorite TH-cam channels. Keep up the amazing work!
As soon as I saw the responses to the curve before the step response section, I immediately thought back to my Control course in my degree. As an EE, it is very satisfying to see this used to approach such a fun example as video game animation. Good video!
so f, zeta and r just turn into PID. A cheme with PTSD from control course.
This was absolutely fascinating, and I love the visualization you used to describe abstract concepts. A lot of the math went over my head, but even as a layman I was able to understand the general idea of what each iteration of the math was doing, or trying to prevent. I would love to see more procedural animation videos!
Also, I would LOVE to see some kind of mash-up between you and another TH-camr named "Rujik the Comatose". He is working on some similar pixel art, procedural animation, type videos, and I think the different technical background that each of you guys bring would create some really cool visual styles.
T3SSEL8R VIDEO YEAHHHHHH
the only youtube notification i actually click on
I clicked on this video expecting someone very smart, very quickly brush over topics they find easy and showcase how smart they are. Instead, was someone even smarter, able to explain it to an imp like me. It was very... unexpected!
There's something I love about the fact that you spent a solid 6 minutes explain complex math your average Uni STEM student could barely get a grasp on, before saying "now, as artists, we have all we need" right at 5:50. You aren't pompous or showy about the hard work you've put into discovering how this works - rather you're using this newfound knowledge to better a craft used to bring joy to the average person's life. Your skill isn't a tool that puts you above the fine arts, it enhances your skillset. That's really badass.
The programmer I aspire to become. Knowing mathematics and equations, and mixing them with computations and iterations ❤ You're living my dream ❤
All greatness and success to you.
I didn't think maths could ever make a convincing and appealing animation. This is really interesting
In general, accurate physics simulations, for example fluid simulations or planetary motion, is guided by math (often differential equations). Surely that kind of simulation could be considered a type of procedural animation? They are often convincing and visually appealing.
I’ve found throughout my years as a hobbyist animator that nobody seems to know how to use motion interpolation despite its simplicity in most video editing software. The simple animation you provided at the start of the video will hopefully encourage more people to use the tools provided to them in a more meaningful way
I'm a gamedev programmer but my math knowledge is pretty limited. I tried to keep up during the whole video and at the end you slip a fully new equation with a text saying "Too hard to explain" as I'm pulling my hairs trying to understand how you computed this all and got it to work xD
Animations and all are dope and you are really giving yourself to make us understand your thinking process which I value very much.
Thank you for this video !
I'm not a gamedev but this might be one of the most interesting videos I've seen on this area. As an engineering student I'm so happy to see such a cool implementation of maths into coding. And the way you portrayed it makes it very easy to understand
this video was better at explaining ODEs than all of my undergraduate math courses combined.
No it wasn't. It was a quick overview and that's it. The meat of the material was taught in your courses.
@@jong7100 such classroom joke he is.. i wish i wasn't like him during my college years.
You are right, I don't understand why all these people are hating, there is like an ongoing propaganda pro-university? Or is a matter of fragile egos offended? You can see the trend not only in this comments section, almost everywhere online, I think it coincides with low level payment for high level jobs, that is increasing the frustration of people getting out with a good degree to then have a miserable work experience, I have some coworkers that confessed that to me at least, I don't know if it applies to others as well, but I would say that is related somehow.
fuck yes
stop saying stupid things online
Beautiful diagrams, and I'm loving the different ways you've shown to play with procedural animation!
This video really made me wanna relearn all my highschool math lessons. This is my first time feeling so excited and intrigued about learning math. Great video, surprisingly inspirational lol.
thanks, means a lot
This math is a bit above high school math. You'll need at least uni level single variable calculus, linear algebra, and then ordinary differential equations.
Personally I feel like maths is much better to study than something like computer science if you wanna do game dev... Although there are a few critical courses in Computer science, but can be boiled down to just needing to do some low-level programming/assembly (with cache knowledge).
this is undergraduate math lol
Do it!
Good old trigonometry an vector formulas can get you too a lot of sweet spots for basic video game needs (distance, angle, direction)
@@muuubiee You cover everything you have mentioned in a regular CS program unless the math you need is way above partial differential equations. Do you need things such as topology or something in higher level maths?.
TH-cam really decided to make me see this video two days after I completed my computational physics exam, really? Someone is messing with me. Great video btw
You love math, you love game development. I must say, it's really cool and unique.
I know I learned a lot of this last year in diff eq, but I have since then forgotten nearly everything from that class. This was a really nice review, made things very easy to understand
I really don't know much about this level of math, but I really appreciate the way you explained it. I still don't understand it on a technical level, but seeing the implementation and clear connection between things like you explained, it makes it easier to understand on a higher level, especially with your demonstration and comparison to traditional keyframes. I also anticipate that this will be a great study guide for me to learn the more specific terms, math, and other things, so thanks!
As a computer engineer, I never thought Id see the math for closed-loop control systems popping up in procedural animation, but here we are, lol.
Edit: State space representation? Now there's a name I haven't heard in a long time....
A bit unrelated but are you interested in ML? If so you might be surprised to hear that State Space Representations are making a comeback, via the Structured State Space Model, aka S4 (The extra S comes from the title of the paper that introduced it)
As an electrical engineer the moment i saw the equation and graphs i thought "oh, a basic PID parameters of pretty much every motor controlling frequency inverter". It`s such a cool universal concept of describing dynamics of real life elements.
@@zumszum as a computer engineer i was like "shit this has practical applications other than radio antennas and line following robots"
@@TheBigW300 Can you expand on how this is used in radio antennas? Can you point to some reading material where you got that from?
As a game developer struggling through Differential Equations in University… thank you! This video has been a huge encouragement to strive onward and continue learning
Oh men, I feel soooo envy. How in the earth you can make sense of all of those numbers while making such a beautiful result. Thanks for sharing your expertise with the rest of us.
Dang, that pixelated look is too good to be true. Nice video.
Seeing all of this demonstrated within the context of video game animations, and having it visualized within Unity's IDE, goes an extremely long way educationally. This is the first video I've encountered from the t3ssel8r channel but if the rest are this good, I'm going to be super hooked.
Amazing. Thank you for your video. I've been studying control theory for 5 years in Robotics course, and it's nice to see it being put to good use!
2 million views is crazy for a complex gsme dev tutorial. Rewlly a testament to your explanations, craft and great design.
The game shown at 1:20 ever get made? If so whats the name? Looks cool AF
"As artists".. **sweats** they are gonna find out that I'm a programmer 😅 Always love a video about fixing timesteps. Thanks for the perspective!
i read the video title as:
,,Giving Personality to Procedural Animations using Meth''
i immediatelly clicked
First of all, I can't believe I found you just now. Second of all, your videos are awesome so please never stop uploading.
Dad = become a gamer
Mom = become a mathetician
Him:
As a engineering student its cool seeing systems and controls consepts in this way!
i did not understand a single word in this entire video but it was so fascinating that somehow I still understood.
I got an A in geometry and barely passed anything else. This video is monumental for me. Thank you so much. It makes me sad that math is not visual learner friendly in most cases these days. This video gives me hope
The robot animation is driving me nuts!😱
This just changed my entire perspective of pixel art games. I might even be doing my 3d game in pixel art now. I'm definitely binging everything on you channel.😁
The concept procedural animation:exists
My brain:rain world
This is the first time I see Euler's method being used in practice and it's amazing
Really cool implementation! As a practicing engineer in dynamics, something I think might be cool for you to check out is adding some 'simple' nonlinearity to the system. A great prototypical example is the Duffing equation, which is still second order but adds a nonlinearity that enables so-called 'stiffening' or 'softening', which among other things makes the system response characteristics sensitive to the actual magnitude of the input. I'd imagine you could use it to make for instance the robot respond very quickly to certain types of inputs (say very large changes) but still slowly for others (like minute changes), without needing to change any of the system parameters.
yeah it's a good idea, and probably really useful for things like rope dynamics. I think there's some danger of unwittingly introducing limit cycles. Keeping things linear makes for easier analysis, at least at my pay grade :P
@@t3ssel8r While it's true there's no general solution to prove the existence of limit cycles (or chaos for that matter), there are methods like Lyapunov energy functions that I expect could be used for the Duffing system to create conditional criteria to apply to coefficients very similar to your linear system limitation that prevents instability. However it is true that the analytical complexity and computational overhead may not be worth what you get in the end, so maybe it's best to leave that alone and focus on what is simpler to work with.
@@t3ssel8r what game engine is that?
It's crazy to me how you explained second order systems intuitively in like two minutes, and it took my professor like a week.
I love this video.
I never thought about animations as stableizable dynamical systems. I'm making a boss battle bot in rocket league that modify the physics of the game and lets you play in a boss fight, and I think this technique could greatly improve the movements of the boss. I found by myself the first order dynamics model you mentionned in the video, and it's working fine. Plus, you don't really have to apply further analysis on it, as it's already very stable, no matter the timestep. That being said, I like the wobbly features that the second order model gives, so I really want to give it a try now!
Anyways, thank you for sharing your work!
I like that you show how the math actually translates to code rather than like most videos I see, where they just show the math itself and never show the code or how it's implemented into the game
This video is a prime example of why elegant and intuitive visuals and animations are so powerful when explaining complex information.
My comment here is simply repeating the sentiment of many other commenters.
You manage to teach game design and math at the same time?! You're amazing!
This video covers all the basics of motion in game programming for beginners, together with a lot of math. This video will be a great recommendation!
Love your demos and explanations. This one is.. next level :D
Can you eventually do one on how you render/shade/compose such a good "Pixel Art" style? The lines are very clean. :O
Pretty please? :)
It would be really interesting to learn how you approached the shading on these. The outlines are very clean
This video is *incredible*. The way you explained everything and the order was perfect. The visualizations. Everything. Thank you so much for making this.
There's so much knowledge in this tiny thing. It's just extremely beautiful.
I hope your skillset is beeing fully appreciated where you work.
As a computational physicist I loved to see your application of methods we so strongly see during our undergrad
Awesome video! Just took a computational science course last term and didnt expect to see these kind of things applied in animation.
whoever you are, you're amazing and deserve more subscribers. liked and subscribed
Just watched this video. Became a new subscriber. I liked how you could see everything from concept, to game, to the mathematical inputs all in one screen. Great way to show your self when developing and as well as others. Again, awesome video. We all very much appreciate the huge amount of time you sunk into it because it turned out clear and visually easy to understand. Thank you.
The level of clarity in this guy's explanation of complex subject rival those of Indian mathematic channels I used to pass my undergrad engineering courses. Bravo!
Suprisingly good overview of fundamental controls concepts in a place I was not expecting. Good job.
Wow, you finally gave me an appreciation for the "fun" matrix math I had to learn in my second semester. Awesome!
You're reigniting my passion for maths, that was incredibly elegant.
Bro just dropped the hardest procedural-anim video and thought we wouldn't notice......
Nice video.
Regarding the calculation: You could also "fake" intermediate time steps without comutaional cost, by using T/2 instead of T in a matrix A2, and then square A2 to obtain a more stable A. Instead of 2 you can use also any other integer (or eventually use a matrix exponent.) Eventually, the time step is only given by the artistically desired update frequency of the motion-causing term (connected to B)
I learned about solving differential equations using euler's method in my university physics class and about eigenvalues in my linear algebra class and I wish I had found this video back then. It would have been such a cool visualization of the concepts I was learning.
this is interesting to say the least, I'm currently studying most of what you said in the video and it sounds so much more interesting knowing that I can use it in my games lol, thanks for the nice explanations
I'm cooked.
You are a genius, saving this video to come back in 5 years when i have the brain to understand this
Same I'll use this video as a progression bar
This gave me flashbacks to 2nd year engineering math at university. Someone else mentioned too but when we learn how to use Euler's method and Eigenvalues, we usually aren't given such a good explanation of how each of the terms interact with the graph specifically and how it can be useful. This video gave great perspective!
Absolute legend, thank you for sharing this for free.
1:38 how did you make this shader in unity pixel art?
Saving this, I'll be back in a year when I've studied enough to understand this fully.
Bro to see concepts i've been learning in my engineering classes to appear in procedural animation optimization makes me feel like i've chosen the right hobby. Thanks for this, please make more videos!