Teaching myself C so I can build a particle simulation

Поделиться
HTML-код
  • Опубликовано: 11 июн 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

Комментарии • 243

  • @gr4dience
    @gr4dience  Месяц назад +95

    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 Месяц назад +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  Месяц назад +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 RUclips 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!

    •  Месяц назад

      third

    • @vinayakk2745
      @vinayakk2745 28 дней назад +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 27 дней назад

      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.

  • @PezzzasWork
    @PezzzasWork Месяц назад +105

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

    •  Месяц назад

      first

  • @Nipings
    @Nipings Месяц назад +230

    The editing in this video is incredible

    • @njorogekamau3820
      @njorogekamau3820 15 дней назад +1

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

  • @luce_9801
    @luce_9801 Месяц назад +163

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

    • @_Rie_
      @_Rie_ 25 дней назад +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 14 дней назад

      @@_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 Месяц назад +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!

  • @PridedBacon
    @PridedBacon Месяц назад +156

    Can you pls open-source this

    • @oldgold8247
      @oldgold8247 25 дней назад +4

      In the description now

    • @whannabi
      @whannabi 12 дней назад +1

      Gotta pay for all the spilled sweat

  • @yourkideliasontwitter
    @yourkideliasontwitter 27 дней назад +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!

  • @samuelcollier1764
    @samuelcollier1764 Месяц назад +14

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

  • @thewholeworldblurred
    @thewholeworldblurred Месяц назад +33

    I clicked because of C!

  • @3dgar7eandro
    @3dgar7eandro 29 дней назад +2

    Cool Bro!

  • @vasq
    @vasq Месяц назад +4

    This is pure art. Amazing work bro.

  • @georgiosdoumas2446
    @georgiosdoumas2446 21 день назад +1

    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!

  • @abdala3475
    @abdala3475 Месяц назад +64

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

    • @Pepegalord
      @Pepegalord 29 дней назад +2

      Feel you

    • @MasterofBeats
      @MasterofBeats 29 дней назад +1

      me fr fr

    • @wardingward4884
      @wardingward4884 26 дней назад +2

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

    • @nad.99
      @nad.99 25 дней назад

      انا

    • @nad.99
      @nad.99 25 дней назад

      @@wardingward4884 linked lists is where I gave up willingly

  • @avion85
    @avion85 Месяц назад +4

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

  • @pyrusspangj
    @pyrusspangj 8 дней назад

    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! :)

  • @QuarzleTheMinecrafter
    @QuarzleTheMinecrafter Месяц назад +5

    Yay another channel with my favourite type of content

  • @wojciechkalinowski3827
    @wojciechkalinowski3827 27 дней назад +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!!

  • @stone8684
    @stone8684 23 дня назад +1

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

  • @aleksaggor
    @aleksaggor 10 дней назад

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

  • @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.

  • @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 !!

  • @giorgito24
    @giorgito24 Месяц назад +1

    Absolutely stunning, more videos using C please😮

  • @hendersonvirtual
    @hendersonvirtual Месяц назад +1

    Amazing, can’t wait to see more videos!

  • @lbgonpokeit
    @lbgonpokeit 29 дней назад

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

  • @uphomes12
    @uphomes12 3 дня назад

    so that face pull in Mario 64 is a masterpiece of my childhood.

  • @ticusism
    @ticusism Месяц назад

    Awesome! Thanks for sharing your journey.

  • @evanbarnes9984
    @evanbarnes9984 Месяц назад +2

    Instantly subscribed! My god this is good.

  • @ArunKumar-zd4ue
    @ArunKumar-zd4ue Месяц назад +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 !!

  • @space-yg
    @space-yg Месяц назад +2

    Yoooooo amazing video!! I learned so much from it

  • @agaveboy
    @agaveboy Месяц назад +2

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

  • @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!

  • @cobrascolar
    @cobrascolar Месяц назад +3

    This channel is going to be massive

  • @mattywlion5174
    @mattywlion5174 23 дня назад

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

  • @waffles6555
    @waffles6555 28 дней назад

    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 !

  • @jonathan2847
    @jonathan2847 Месяц назад +2

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

  • @dennischen2922
    @dennischen2922 Месяц назад

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

  • @nad.99
    @nad.99 25 дней назад

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

  • @drakeolejniczak2357
    @drakeolejniczak2357 Месяц назад +1

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

  • @sirjersey
    @sirjersey Месяц назад +1

    Amazing Video! Definitley learned something new :)

  • @user-qe6rh2qq9z
    @user-qe6rh2qq9z 28 дней назад

    Very cool and informative video. Thanks for the effort.

  • @DwellerLord
    @DwellerLord 24 дня назад

    This is the best video I've seen all year

  • @philipmichel-dv4gk
    @philipmichel-dv4gk 26 дней назад

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

  • @user-zj3dd4yb3f
    @user-zj3dd4yb3f Месяц назад +4

    Now I want to do this by myself.

  • @dylancode
    @dylancode 13 дней назад

    The new Sebastian Lague!
    Excellent video!

  • @lel7531
    @lel7531 Месяц назад +1

    Very cool video, top notch editing

  • @jahaynes256
    @jahaynes256 27 дней назад

    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.

  • @Sirepicwin
    @Sirepicwin 24 дня назад

    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

  • @ArmanNadjarian
    @ArmanNadjarian Месяц назад +1

    Fantastic work!

  • @bigwalrosswalross3356
    @bigwalrosswalross3356 Месяц назад +15

    Another awesome programmer I have to subscribe xD
    Great work

  • @alessandroserra885
    @alessandroserra885 Месяц назад +1

    That's simply amazing

  • @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.

  • @futuremapper_
    @futuremapper_ Месяц назад +2

    Love this!

  • @Green-Code
    @Green-Code Месяц назад +1

    Great video! Keep it up!

  • @serhiiko7141
    @serhiiko7141 Месяц назад +1

    this video deserves much more than 2.7 k views

  • @Mia-tk7dz
    @Mia-tk7dz Месяц назад +1

    love the video! good stuff

  • @Gaiuscassius565
    @Gaiuscassius565 Месяц назад

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

  • @romeoxxiv
    @romeoxxiv Месяц назад +1

    Very interesting, thank you!

  • @shuraosipov
    @shuraosipov Месяц назад +1

    Good job, man!

  • @chairlesscrocodile
    @chairlesscrocodile Месяц назад +3

    Great video!

  • @skyt-csgo376
    @skyt-csgo376 Месяц назад +1

    Awsome work!

  • @p3ntag01
    @p3ntag01 3 дня назад

    Nice Video Dude !

  • @charliechimp6917
    @charliechimp6917 Месяц назад +1

    Mesmerising

  • @css2165
    @css2165 Месяц назад

    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 💯

  • @mathiasensimon
    @mathiasensimon Месяц назад +1

    Cant wait for more videos😊

  • @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 😛)

  • @rgel3762
    @rgel3762 Месяц назад

    Just what I was looking for

  • @Raskoll
    @Raskoll Месяц назад +1

    Excellent video

  • @megalos2030
    @megalos2030 Месяц назад +3

    Very good video !

  • @Alexander-pk1tu
    @Alexander-pk1tu 27 дней назад

    Good work man!!

  • @blvnktek
    @blvnktek Месяц назад +1

    You got my sub sir!

  • @ed7590
    @ed7590 Месяц назад +1

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

  • @aakkii5271
    @aakkii5271 Месяц назад +1

    Great channel potential, subbed

  • @prateek3167
    @prateek3167 27 дней назад

    great work

  • @Spencersstory
    @Spencersstory 28 дней назад

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

  • @omarwagmes
    @omarwagmes 25 дней назад

    we need the long version of this please

  • @yousiftop7605
    @yousiftop7605 Месяц назад +1

    very enjoyable video

  • @sythatsokmontrey8879
    @sythatsokmontrey8879 Месяц назад +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.

  • @antonpkf
    @antonpkf 19 дней назад

    good job b!

  • @bramhuis3571
    @bramhuis3571 Месяц назад +3

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

    • @Rahim-444
      @Rahim-444 29 дней назад

      yea very similar project

  • @osalem192
    @osalem192 26 дней назад

    A new Sebastian Lague!
    Keep going!

  • @nordmu
    @nordmu 26 дней назад

    amazing video

  • @user-nu5up8ff3c
    @user-nu5up8ff3c 28 дней назад +1

    great video, btw are you using Intel Mac or M chip ?

  • @the_speedy_dog6808
    @the_speedy_dog6808 Месяц назад +1

    this was amazing :)

  • @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

  • @Wannabetolkien
    @Wannabetolkien 28 дней назад

    Amazing Work ! Post more content.❤

  • @ii7mdj_353
    @ii7mdj_353 6 дней назад

    Awesome bro 🫡

  • @m3tazodeh66
    @m3tazodeh66 25 дней назад

    This is soo cool

  • @gedaliakoehler6992
    @gedaliakoehler6992 Месяц назад +1

    Great video, graphics engine, and physics engine :)

  • @justins7796
    @justins7796 23 дня назад

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

  • @Ace-fkubar
    @Ace-fkubar 22 дня назад

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

  • @shis10
    @shis10 19 дней назад

    Amazing 😮

  • @ronald1851
    @ronald1851 Месяц назад +1

    awesome possum my guy

  • @bonekazz-8441
    @bonekazz-8441 Месяц назад

    thats so cool bro

  • @Charky32
    @Charky32 27 дней назад

    its amazing

  • @Codrootbeyond
    @Codrootbeyond Месяц назад +1

    Great video

  • @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.

  • @elon_mysk3278
    @elon_mysk3278 Месяц назад +1

    Hey there, Gradience!
    I have a few questions for you!
    First off, I'm curious about how you created the particle simulation using Python. Which frameworks or modules did you use? I consider myself pretty advanced in Python, but I've never seen particle simulations implemented with Python before! :D
    I'm actually in the process of teaching myself C++ with the intention of creating a particle simulation. I believe it would be incredibly useful for my work as a Research Assistant in mechanical engineering! Your video has actually motivated me quite a bit! :D
    Also, in your pinned comment, you mentioned that your semester just ended. Could you tell me more about what and where you're studying?
    Looking forward to more content from you!

    • @gr4dience
      @gr4dience  Месяц назад +1

      Hello! For the Python version I used the NumPy and Pyrr packages for math and linear algebra respectively (they both rely on C internally for some operations/speed). Additionally I used PyGame for window/input management and OpenGL (PyOpenGL wrapper) for rendering w/ the GPU.
      You can certainly get pretty far with Python and it allowed me to prototype very quickly. The fact that you can create an entire HashMap with just 4 characters is truly remarkable. That being said, I wouldn't recommend it for a long-term project because of the poor performance and lack of real infrastructure for something like real-time simulation.
      I am currently a CS student in North Carolina. Thanks for the support and best of luck on your project!

  • @pilchu7978
    @pilchu7978 24 дня назад

    I wonder how much time, hour wise, you spent for a research, coding, testing and then making video ? That's sth we often forget about watching videos on yt. Good job!

  • @Revvol93
    @Revvol93 27 дней назад

    love it!

  • @NormanWasHere452
    @NormanWasHere452 Месяц назад

    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.