Teaching myself C so I can build a particle simulation

Поділитися
Вставка
  • Опубліковано 3 чер 2024
  • Pezzza's video: • Writing a Physics Engi...
    Verlet Algorithm: www.algorithm-archive.org/con...
    Verlet Integration: physics.drexel.edu/~valliere/P...
    Icospheres: en.wikipedia.org/wiki/Geodesi...
    This codebase is a mess but if you're curious about the implementation or what libraries I used:
    C Version :: github.com/marichardson137/Ve...
    Python Version :: github.com/marichardson137/Py...
    Thanks for watching!
    Timestamps
    0:00 Introduction
    0:25 Python Version
    1:17 Verlet Integration
    2:37 Implementation
    3:29 Collisions
    4:17 Issues
    4:55 Optimization 1
    5:43 Optimization 2
    6:45 Optimization 3
    7:45 Coloring Particles
    8:52 Linking Particles
    11:24 Outro
    Music sourced from Epidemic Sound
    Sonar - David Celeste
    Radiance - Amber Glow
    Watercolor Motion II - Trevor Kowalski
    A Gentle Pulse - Imprismed

КОМЕНТАРІ • 236

  • @gr4dience
    @gr4dience  Місяць тому +89

    Hi everyone! Glad to hear you're enjoying the video, it means a lot. I added the source code in the description for those who asked (it's kind of a mess). My semester just ended so I should have some time to work on another graphics project. Let me know what you guys wanna see below! - Cheers

    • @simonzanta1403
      @simonzanta1403 28 днів тому +3

      heyy, i really enjoyed your video about computer graphics. Im currently researching sources for my Bachelor Thesis from computer graphics and i would like to ask you, if you could share some insights on how you research topics. It would be really helpful, couse i have no idea where to find sources and mainly what to search for.

    • @gr4dience
      @gr4dience  25 днів тому +4

      @@simonzanta1403 Public code repositories were certainly my best friend during this project! If I ever needed inspiration for some feature or felt myself getting stuck, I would do a quick search on UA-cam or Google for something similar and that was usually enough to get me through. Another tip is to try breaking down your research into smaller pieces that will be easier to source (ie. "OpenGL instance rendering" as opposed to "OpenGL particles"). Hope that helps!

    •  22 дні тому

      third

    • @vinayakk2745
      @vinayakk2745 21 день тому +4

      hello there, really liked your video! I'm a first year computer science student, I would like to know more about what you do and how you got here, I'd love if you'd upload a video talking about yourself, your work and your journey, it would really help and inspire me! Thank you for this great video!

    • @hanya-chan454
      @hanya-chan454 20 днів тому

      i love the work, why dont u make gravity simulation using nueton's thurd law of motion, i tryied to do it in unity, it kinda works but somehow the particles after attracting to each other and colliding they start to repeal each other (using barn's hut algorithm , no error in my code) , maybe u can do a simulation and explain the optimization method u choose.

  • @Nipings
    @Nipings Місяць тому +208

    The editing in this video is incredible

    • @njorogekamau3820
      @njorogekamau3820 8 днів тому +1

      You can achieve the same using an open source python library called manim

  • @PezzzasWork
    @PezzzasWork 29 днів тому +91

    Super cool video! Always funny to see we all encounter the same bugs along the way :D

    •  22 дні тому

      first

  • @luce_9801
    @luce_9801 Місяць тому +159

    I know what I'm doing in summer now. Thanks for the inspiration!

    • @_Rie_
      @_Rie_ 18 днів тому +1

      me too gonna start college in august so im gonna learn C and make this happen good luck to you too

    • @Randomperson-yf2fw
      @Randomperson-yf2fw 6 днів тому

      @@_Rie_Good luck! C is a tough language in the beginning, but it's so satisfying to use once you've conquered the main pitfalls.

  • @samir_buch
    @samir_buch 28 днів тому +43

    This is super impressive! Casually glossing over the fact that you taught yourself *not just C* but also how to render things with openGL is no small feat. Your in-depth knowledge of particle simulation is also pretty impressive, requiring at the very least knowledge of relatively advanced calculus and physics. And, on top of all of that, this video was very well written and edited. Overall great job, keep it up!

  • @samuelcollier1764
    @samuelcollier1764 Місяць тому +14

    this was an awesome video! C is my favorite programming language and I love seeing graphics programming projects like these :)

  • @vasq
    @vasq 28 днів тому +4

    This is pure art. Amazing work bro.

  • @yourkideliasontwitter
    @yourkideliasontwitter 20 днів тому +2

    This is a great video, and it is surprisingly well edited! I am not interested at all in physics simulation but the way you explained it really made me start paying attention and it was interesting how you used each optimisation technique to achieve even better results!

  • @PridedBacon
    @PridedBacon Місяць тому +147

    Can you pls open-source this

    • @oldgold8247
      @oldgold8247 17 днів тому +4

      In the description now

    • @whannabi
      @whannabi 5 днів тому +1

      Gotta pay for all the spilled sweat

  • @avion85
    @avion85 Місяць тому +4

    Good luck for your success on yt. We need more content like this.

  • @aleksaggor
    @aleksaggor 3 дні тому

    Mesmerizing! You did a fantasic job with this program and video, keep it up :)

  • @QuarzleTheMinecrafter
    @QuarzleTheMinecrafter Місяць тому +5

    Yay another channel with my favourite type of content

  • @stone8684
    @stone8684 16 днів тому +1

    dude, you're so incredible. I'd like to see more videos. keep doing them :3

  • @pyrusspangj
    @pyrusspangj День тому

    Gradience, this video is absolutely astonishing. Putting aside the great editing and video structure, the flow of your story and the way you tell it is both fascinating, and so intriguing. I adore computer science as a whole, and this is possibly one of my all time favorite videos now. What a masterpiece you've made. Subscribed, and hope to see more of what you do! :)

  • @hendersonvirtual
    @hendersonvirtual Місяць тому +1

    Amazing, can’t wait to see more videos!

  • @ticusism
    @ticusism 23 дні тому

    Awesome! Thanks for sharing your journey.

  • @wojciechkalinowski3827
    @wojciechkalinowski3827 20 днів тому +1

    Very nicely done! I like that you said what you did and kept it rather high level for the video. Whereas, if needed, and if you haven't already, then you can make a more detailed video for the code and maths. Great paste and keep at it!!

  • @giorgito24
    @giorgito24 Місяць тому +1

    Absolutely stunning, more videos using C please😮

  • @evanbarnes9984
    @evanbarnes9984 Місяць тому +2

    Instantly subscribed! My god this is good.

  • @kiri9979
    @kiri9979 Місяць тому +1

    this video is amazing
    it feels like it's been made by a channel with at least a few hundred thousand subs
    keep it up !!

  • @lbgonpokeit
    @lbgonpokeit 22 дні тому

    Awesome video, Man I could watch this stuff all day 😅

  • @space-yg
    @space-yg Місяць тому +2

    Yoooooo amazing video!! I learned so much from it

  • @mattywlion5174
    @mattywlion5174 16 днів тому

    Man it's a fantastic video, it's just great, love this

  • @eduardomarinho1482
    @eduardomarinho1482 Місяць тому

    Great video and very interesting project, will try to do it on my own. Also, I’m impressed for the quality of the video!

  • @thewholeworldblurred
    @thewholeworldblurred Місяць тому +32

    I clicked because of C!

  • @waffles6555
    @waffles6555 21 день тому

    I took a graduate level numerical methods course (my prof contributed to some popular CFD software) and it was very cool to see the different algorithms used. Great job !

  • @agaveboy
    @agaveboy Місяць тому +2

    that's great c code if you've really just learned it! good job

  • @dennischen2922
    @dennischen2922 25 днів тому

    This is such an awesome project! Glad to see a fellow NC State student doing cool things!

  • @youknowwhatlol6628
    @youknowwhatlol6628 Місяць тому +7

    hello. i am a beginner in all those things and have just found this channel....can't say how grateful I am to you. You, my friend, are an inspiration. You are Knowledge. You are Greatness. You hold the Power.
    Thank you so much. Thanks. Would like to see more of these simluations, math-physics-chemistry-related programs and such.
    Thank you.

  • @user-qe6rh2qq9z
    @user-qe6rh2qq9z 21 день тому

    Very cool and informative video. Thanks for the effort.

  • @nadjdev
    @nadjdev 27 днів тому +1

    Fantastic work!

  • @nad.99
    @nad.99 18 днів тому

    Halfway through this video i feel kms cuz I don’t see myself getting this good anytime soon. Man you’re awesome.

  • @cobrascolar
    @cobrascolar Місяць тому +3

    This channel is going to be massive

  • @lel7531
    @lel7531 Місяць тому +1

    Very cool video, top notch editing

  • @sirjersey
    @sirjersey Місяць тому +1

    Amazing Video! Definitley learned something new :)

  • @futuremapper_
    @futuremapper_ Місяць тому +2

    Love this!

  • @DwellerLord
    @DwellerLord 17 днів тому

    This is the best video I've seen all year

  • @ArunKumar-zd4ue
    @ArunKumar-zd4ue 27 днів тому +2

    this is a great video mate. this video remainds me of sabastian lague's videos. when ever i have thoughts about why i chose programming as a career i think of these kind of videos which boost my happiness and i say to myself that this is why i chose programming as a career to build cool stuffs.
    thanks mate. Great job !!

  • @drakeolejniczak2357
    @drakeolejniczak2357 25 днів тому +1

    That was awesome! My favorite part was when you found the linear algebra text and got your change of basis on.

  • @alessandroserra885
    @alessandroserra885 Місяць тому +1

    That's simply amazing

  • @skyt-csgo376
    @skyt-csgo376 Місяць тому +1

    Awsome work!

  • @Sirepicwin
    @Sirepicwin 17 днів тому

    I literally just stumbled on this video, amazing and very fun to watch. Made want to actually learn C and take a break from JS for while lol

  • @jahaynes256
    @jahaynes256 20 днів тому

    I have had this as a future project in my mind for years. I never went to third dimension due to the fear of linear algebra. This is really impressive and inspirational. Thanks for sharing.

  • @philipmichel-dv4gk
    @philipmichel-dv4gk 19 днів тому

    really beautiful video . i can now see the importance o mathemetics in programming

  • @Mia-tk7dz
    @Mia-tk7dz 29 днів тому +1

    love the video! good stuff

  • @dylancode
    @dylancode 5 днів тому

    The new Sebastian Lague!
    Excellent video!

  • @romeoxxiv
    @romeoxxiv 26 днів тому +1

    Very interesting, thank you!

  • @chairlesscrocodile
    @chairlesscrocodile Місяць тому +3

    Great video!

  • @Green-Code
    @Green-Code 23 дні тому +1

    Great video! Keep it up!

  • @shuraosipov
    @shuraosipov 27 днів тому +1

    Good job, man!

  • @bigwalrosswalross3356
    @bigwalrosswalross3356 Місяць тому +15

    Another awesome programmer I have to subscribe xD
    Great work

  • @Gaiuscassius565
    @Gaiuscassius565 24 дні тому

    super cool job. Very inspiring i wish i could do something like this

  • @mathiasensimon
    @mathiasensimon 29 днів тому +1

    Cant wait for more videos😊

  • @Raskoll
    @Raskoll Місяць тому +1

    Excellent video

  • @abdala3475
    @abdala3475 Місяць тому +61

    And here I am, struggling with a simple pyramid c code

    • @Pepegalord
      @Pepegalord 22 дні тому +2

      Feel you

    • @MasterofBeats
      @MasterofBeats 22 дні тому +1

      me fr fr

    • @wardingward4884
      @wardingward4884 19 днів тому +2

      Its okay, I'll get harder in arrays, and pointers 💀💀

    • @nad.99
      @nad.99 18 днів тому

      انا

    • @nad.99
      @nad.99 18 днів тому

      @@wardingward4884 linked lists is where I gave up willingly

  • @charliechimp6917
    @charliechimp6917 29 днів тому +1

    Mesmerising

  • @georgiosdoumas2446
    @georgiosdoumas2446 14 днів тому

    I have studied physics in 1991-1995, and I had a semester on Fortran in the university. Then at 2004 I learned a little C, and the following years I was slowly reading a few books on C and C++ (mainly I was reading stuff about networks and linux for my jobs) . Since late 2023 I became a junior C++ developer. A few weeks I started learning OpenGL (I can give suggestions to who ever is interested). But I know that I am nowhere near the level to make such simulations! I am so impressed that you are still a university student and can produce those videos!

  • @Alexander-pk1tu
    @Alexander-pk1tu 20 днів тому

    Good work man!!

  • @serhiiko7141
    @serhiiko7141 Місяць тому +1

    this video deserves much more than 2.7 k views

  • @Hakkyou1
    @Hakkyou1 Місяць тому +4

    Very nice video ! You might want to also look at fluid simulation using particle called Smoothed Particle Hydrodynamics. Basically you replace the collision algorithm with a constraint on the density modulated by a kernel. It sound bad like this but you already did 90% of the work there. Keep up the good work ! See you next video.

  • @blvnktek
    @blvnktek Місяць тому +1

    You got my sub sir!

  • @megalos2030
    @megalos2030 Місяць тому +3

    Very good video !

  • @rgel3762
    @rgel3762 28 днів тому

    Just what I was looking for

  • @yousiftop7605
    @yousiftop7605 Місяць тому +1

    very enjoyable video

  • @prateek3167
    @prateek3167 20 днів тому

    great work

  • @Wannabetolkien
    @Wannabetolkien 21 день тому

    Amazing Work ! Post more content.❤

  • @the_speedy_dog6808
    @the_speedy_dog6808 Місяць тому +1

    this was amazing :)

  • @justins7796
    @justins7796 16 днів тому

    dang you're a legend if you used a physical Linear Algebra textbook to solve your problems. Subbed!

  • @aakkii5271
    @aakkii5271 27 днів тому +1

    Great channel potential, subbed

  • @Stylpe
    @Stylpe Місяць тому +1

    This is going to be a fantastic springboard for my own physics sim ideas! Starred, will fork when this makes it to the top of my project queue (it's about number 3 I'd say, but full disclosure, it might also never happen 😛)

  • @css2165
    @css2165 28 днів тому

    I hope this isn't going to be one of those channels that uploads 3 fire videos and then disappears for years
    Keep going bro 💯

  • @antonpkf
    @antonpkf 11 днів тому

    good job b!

  • @nordmu
    @nordmu 19 днів тому

    amazing video

  • @Spencersstory
    @Spencersstory 21 день тому

    Sick good work man. Makes me remember why I chose computer science

  • @osalem192
    @osalem192 19 днів тому

    A new Sebastian Lague!
    Keep going!

  • @ed7590
    @ed7590 25 днів тому +1

    Inspiring, makes me want to drop all my JS projects and return to low level.

  • @user-zj3dd4yb3f
    @user-zj3dd4yb3f Місяць тому +4

    Now I want to do this by myself.

  • @Codrootbeyond
    @Codrootbeyond Місяць тому +1

    Great video

  • @3dgar7eandro
    @3dgar7eandro 22 дні тому +2

    Cool Bro!

  • @m3tazodeh66
    @m3tazodeh66 18 днів тому

    This is soo cool

  • @ronald1851
    @ronald1851 Місяць тому +1

    awesome possum my guy

  • @jonathan2847
    @jonathan2847 25 днів тому +1

    Engineers make a small number of good UA-cam videos then dip back into the void to do their job. This is the good shit.

  • @scattermc
    @scattermc Місяць тому

    Insane nice work

    • @scattermc
      @scattermc Місяць тому +1

      Literally turned on all notifications, its people like you that keep me eager to learn more and more. Without you i'd be dull

  • @bramhuis3571
    @bramhuis3571 27 днів тому +3

    This video is amazing! It reminds me of Sebastian Lague’s video’s.

    • @Rahim-444
      @Rahim-444 21 день тому

      yea very similar project

  • @shis10
    @shis10 12 днів тому

    Amazing 😮

  • @gedaliakoehler6992
    @gedaliakoehler6992 Місяць тому +1

    Great video, graphics engine, and physics engine :)

  • @sythatsokmontrey8879
    @sythatsokmontrey8879 26 днів тому +1

    Dude we have the same story. I spent 2 years building a physic engine because I saw that one video. But mine is in JS. it's terrible. I love it. Great video BTW.

  • @Ace-fkubar
    @Ace-fkubar 15 днів тому

    Really Enjoyed the video
    Very cool!
    I had the same vibe from you as 3Blue1Brown.

  • @bonekazz-8441
    @bonekazz-8441 23 дні тому

    thats so cool bro

  • @Charky32
    @Charky32 19 днів тому

    its amazing

  • @omarwagmes
    @omarwagmes 18 днів тому

    we need the long version of this please

  • @barkaouiaziz8926
    @barkaouiaziz8926 23 дні тому

    great content keep going

  • @Revvol93
    @Revvol93 20 днів тому

    love it!

  • @JMW1906
    @JMW1906 Місяць тому +1

    One more was to implement optimization is to compare the length squared (in handle collision) instead of competing the length. It means you replace a square root call (expensive) with two multiplications (one of the radius is the same), which can even be pre computed once if every sphere has the same radius:
    x²+y²+z² < 2r²

    • @gr4dience
      @gr4dience  Місяць тому +1

      That was my initial thought as well! The only issue is that to "resolve" the collisions, you still need to push each particle apart by half their separation so you would need to compute the distance regardless. I tried moving the square root function inside that condition but it didn't make too much of a difference :)

    • @JMW1906
      @JMW1906 Місяць тому +1

      @@gr4dience true, haven't thought about the fact that you need the value later.
      Still interesting though that it makes almost no difference when computed inside the if body. I think that means the grouping into chunks optimization to not check every sphere against every other has a good grid size and already avoids most checks, so most checks have to do the sqrt anyways.

  • @past_life639
    @past_life639 6 годин тому

    Very good

  • @bird5790
    @bird5790 Місяць тому +1

    If you are working with grids, the paper "Compact, fast and robust grids for ray tracing" is very worth reading to optimize further

  • @MCroppered
    @MCroppered 29 днів тому +1

    This is what gets you hired. Fantastic work.

  • @oussamasebbar185
    @oussamasebbar185 21 день тому

    heyy man i really appreciated your video , i'd like to know the music you used t really got me hooked and i think it would be great to code ( with C ofc ) listening to it

  • @NormanWasHere452
    @NormanWasHere452 25 днів тому

    I was also inspired by similar videos like yourself and having just watched this I'll definitely start play around having finished exams! How do you recommend I start? I was planning on jumping into C++ and OpenGL or Unreal (I've been wanting to learn C++ for this reason) but I saw you used some Python, I have some experience with python but its mostly scripting for data analysis and ML.

  • @aspectreishauntingeurope
    @aspectreishauntingeurope Місяць тому +2

    very cute!