Quick Understanding of Homogeneous Coordinates for Computer Graphics

Поділитися
Вставка
  • Опубліковано 24 гру 2024

КОМЕНТАРІ • 111

  • @guilhermecampos8313
    @guilhermecampos8313 11 місяців тому +81

    After seeing many videos here on UA-cam, I finally understood Homogeneous Coordinates and Projection Matrix thanks to you

  • @lukask.3465
    @lukask.3465 4 дні тому

    You sir managed to explain this in a way no one could before. Well done.

  • @jperez7893
    @jperez7893 25 днів тому +3

    this is as amazing as the ease of using geometric algebra. why people are not taught this properly in school escapes me. you sir, are a genius at exposition. no wasted second in the explanation. your 6 minutes was more valuable than a whole semester

  • @beegdigit9811
    @beegdigit9811 4 місяці тому +37

    Bro made a professional YT icon, banner and 1 video and just said f it xd

    • @hamzaf19
      @hamzaf19 2 місяці тому +1

      Lmfaooo underrated comment

  • @boggybolt6782
    @boggybolt6782 5 місяців тому +39

    Came in thinking I'd get an explanation on why we have 3D and 4D vectors (already knew), instead got an explanation on how the math behind 3D rendering works (did not know). Amazing!

  • @teh1archon
    @teh1archon 3 місяці тому +5

    Hands down, that was the best explanation for this I've ever seen.

  • @Tsura1998
    @Tsura1998 4 місяці тому +5

    This summarized in 7 minutes what my prof couldn't teach me in 3 days... amazing job!

  • @Nallu_Swami
    @Nallu_Swami 5 місяців тому +13

    DUDDDEEEE you have no idea how much the video has helped me out to think of multiplications visually , THANKS A LOT

  • @thygrrr
    @thygrrr 6 місяців тому +15

    This is a really good explainer that connects some bridges that after 25 years with OpenGL coding I still hadn't built an intuition for.

    • @vivashmp
      @vivashmp 2 місяці тому

      check out 3b1b's course on linear algebra. its very underrated and very helpful to visualize and understand vectors an vector transformations

  • @alonsorobots
    @alonsorobots 2 місяці тому +1

    This is so high quality for being your only video uploaded!!! More please!!!

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

    You explained this far better than my professor did, thank you so much

  • @CoconutKhajiit
    @CoconutKhajiit 5 місяців тому +3

    Dude, this video was very clear, while also having all the mathematical details, brilliant!
    Make more!

  • @klaus-udokloppstedt6257
    @klaus-udokloppstedt6257 Місяць тому

    this clip lives up 💯% to its title, up to the very last sentence, giving an explanation why it is called homogenous. 👍

  • @HartleySan
    @HartleySan 6 місяців тому +7

    I think this is the video that finally made all of this click. Thank you so much!

  • @orphansock8439
    @orphansock8439 5 місяців тому +3

    Wow! What an absolutely outstanding video! This by far the best explanation I've ever come across.

  • @theman7050
    @theman7050 5 місяців тому +5

    Now I understand why the heck they all multiply x and y by w!!
    Thank youuuuu

  • @Kfoo-dj4md
    @Kfoo-dj4md 6 годин тому

    Literally best video on this topic

  • @williamwang4295
    @williamwang4295 2 місяці тому +1

    this is the only video for your channel
    and it's awsome

  • @naishalsuvagiya
    @naishalsuvagiya Рік тому +14

    Good animation plus explanation, 👊
    Keep it up you will surely make great in future😊

  • @DahVeeDeeOh
    @DahVeeDeeOh 8 місяців тому +2

    Thank you so much. I was not making headway understanding homogeneous coordinates either by my professor's lecture or readings. Everything is clear after watching this video.

  • @Byrns5512
    @Byrns5512 7 місяців тому +4

    Best and most concise explanation I’ve seen yet 🙏

  • @jahbini
    @jahbini Рік тому +8

    You explained this topic much better than Jim Blinn

  • @chrischoir3594
    @chrischoir3594 5 місяців тому +2

    Best explanation on YT

  • @gianlucanordio7200
    @gianlucanordio7200 7 місяців тому +2

    Crazy quality and explaination for a video of a channel with 497 subscribers (well 498 now). Good job :D

  • @03-AALIYAH
    @03-AALIYAH 5 місяців тому +9

    Purely directional vectors (homogeneous coordinates with w = 0) can also be used to represent points at infinity. This is useful for simplifying intersection computations - the intersection of e.g. two parallel lines is a point at infinity, not "no point". If you really want to go nuts, you can extend the coordinate system to lines and planes (which also get easy intersections and even unions, e.g. find the line passing through two given points), and introduce rigid transformations (quaternions and dual quaternions), which have nice properties for rigid body physics and skeletal animation. The result is called projective geometric algebra, which provides a unified representation and a simple set of operations for all of these objects. Quaternions are not actually magical!

    • @bonbonpony
      @bonbonpony 3 місяці тому +1

      Where can I learn more about this stuff?
      I, too, found it surprising that projective geometry has not been mentioned the single time in this video, considering how much it is tied to homogeneous coordinates. And yet no one seems to be explaining that connection when talking about homogeneous coordinates in 3D graphics.

  • @donnyjoe7653
    @donnyjoe7653 2 місяці тому

    Awesome explanation! Thank you for the effort!

  • @zypeth4634
    @zypeth4634 6 місяців тому +3

    WOWWWWW, This was amazing!!!!!! Very clear :)

  • @dn275
    @dn275 3 місяці тому

    Great video! I’d love to learn more from you. I hope you end up making more videos.

  • @javisda1997
    @javisda1997 11 місяців тому +3

    Really nice video and animations. Keep it up!

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

    Wow, this was so well explained! Thank u so much

  • @mykytahorbenko6794
    @mykytahorbenko6794 10 місяців тому +3

    Awesome explanation. Thank you!

  • @pluieuwu
    @pluieuwu 5 місяців тому +1

    just beautifully succinct. bravo!❤

  • @austinculp7082
    @austinculp7082 5 місяців тому +1

    Thank you for the informative vid! Hope your channel does more eventually!

  • @nkzshinnik
    @nkzshinnik 3 місяці тому

    Best video on the topic

  • @ComputerGuru-tk2hg
    @ComputerGuru-tk2hg 2 місяці тому

    This is so awesome made fall in love with limnear algebra my lecturer made it hell you made it heaven

  • @rodrigolanesmeneses
    @rodrigolanesmeneses 3 місяці тому

    Amazing video! Also, that was a great use of the 3Blue1Brown's Manim library for design

  • @Abon963
    @Abon963 9 місяців тому +2

    Excellent!

  • @TheJara123
    @TheJara123 10 місяців тому +4

    Wonderful

  • @hkdfl-nu3bd
    @hkdfl-nu3bd 4 місяці тому +1

    Awesome Explanation
    🫡❤❤🫡

  • @gabrieldias6430
    @gabrieldias6430 5 місяців тому +1

    really nice video, thanks for sharing your knowledge!

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

    Thank you for the explanation! The video is very helpful :)

  • @Necrozene
    @Necrozene 6 місяців тому +2

    I think you nailed it.

  • @abnereliberganzahernandez6337
    @abnereliberganzahernandez6337 10 місяців тому +1

    this things are weird at first but the more you work on them the more sense they make to you

  • @vicmartini
    @vicmartini 2 місяці тому

    Amazing video! Thank you so much!

  • @samueldeandrade8535
    @samueldeandrade8535 9 місяців тому +1

    Wow. This video is very, very good.

  • @egorsozonov7425
    @egorsozonov7425 5 місяців тому +2

    On 3:10 I think you’re wrong. Sure, this removes the need for vector addition, but now each multiplication is slower. Multiplying 3x3 matrices requires more than 2x operations that 2x2 ones, and you’re doing three such multiplications vs only one addition! So I think this has detrimental effects on performance, in fact

    • @abidanbrito
      @abidanbrito 4 місяці тому

      I get your point, but you're disregarding the fact that hardware is extremely optimized for these operations. The ability to perform all transformations with a single matrix outweighs the cost of the additional multiplications, especially in the context of graphics programming (as is explained in the video). These computations are performed per-vertex in parallel, and for very dense meshes, i.e., high vertex count, it really adds up.

    • @stal1n63
      @stal1n63 4 місяці тому

      Yeah, in non-ideal world any matrix multiply operation takes O(3^3) time. But on modern computing times uses better algoritms, that done that in O(3^2.1-2.5) operations, that not that really worse that O(2^3) in naive case for 2x2 matrixes. And benefits of using them in worth it.
      And that same for 3d space. Like, while in naive case we got O(3^3 = 9) operations per 3x3 matrix multiply, in actual hardware we got O(4^2.375 ~~ 27), while in naive case we got O(4^3 = 64) for 4x4 matrixes. Bad, but not much worse that in can be. And dont forget, any computer VERY good at addition and multiplying

    • @bonbonpony
      @bonbonpony 3 місяці тому

      The GPU has dedicated circuitry for 4×4 matrices that pretty much does all these multiplications in parallel, so it doesn't matter if you use the full 4×4 matrix or just a 3×3 or 2×2, it will use the entire circuit anyway and there will be no speed difference.

    • @stal1n63
      @stal1n63 3 місяці тому

      @@bonbonpony but isn't there potential work reduction, processing 2x2 matricies in 4x4 logic circe?

    • @eduameli
      @eduameli 2 місяці тому

      SIMD

  • @the_green_snake4187
    @the_green_snake4187 5 місяців тому +1

    this is an amazing video! thank u!

  • @krux02
    @krux02 5 місяців тому +1

    There is another use case. By setting w=0 you can represent vertices at infinity. If you want to implement e.g. shadow volumes (not shadow maps, this is different), where the geometry shader moves vertices to infinity, you can actually do that by setting the value to (x y z 0). You don't get a division by 0 error from the gpu. I've never tested the performance of this though.

  • @GG-vl7lh
    @GG-vl7lh Рік тому +1

    Great first video !

  • @symmetry-e8
    @symmetry-e8 4 місяці тому

    Very good explanation, thank you

  • @sithyyyy
    @sithyyyy 9 місяців тому

    The 3blue1brown of computer graphics. Looking forward to more!

  • @chrisinacio
    @chrisinacio 11 місяців тому +1

    Great work! Keep it up!

  • @mrshodz
    @mrshodz 8 місяців тому +1

    Excellent communication.

  • @carlosgruss7289
    @carlosgruss7289 2 місяці тому

    Amazing video, thank you man

  • @imil6798
    @imil6798 3 місяці тому

    Terima kasih. Ini yang saya cari selama ini.

  • @kingoftennis94
    @kingoftennis94 5 місяців тому

    Really excellent video

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

    Thank you this was really helpful!

  • @louis-etiennemessier8003
    @louis-etiennemessier8003 7 місяців тому +1

    great stuff! Thanks!

  • @JorneRichard
    @JorneRichard 3 місяці тому

    Thanks a lot! this is really helpful!

  • @passionatechristianworker
    @passionatechristianworker 3 місяці тому

    very helpful, thank you!

  • @kavourakos
    @kavourakos 8 місяців тому

    best video on homogeneous coordinartes

  • @suheladesilva2933
    @suheladesilva2933 11 місяців тому +1

    Great video, thanks a lot.

  • @misspps_
    @misspps_ 2 місяці тому

    best explanation

  • @SerKBer
    @SerKBer 4 місяці тому

    Amazing video! Thank you so much.
    Btw with what software did you do it??

  • @coldtech06
    @coldtech06 4 місяці тому

    I now have the knowledge... no one can stop me now

  • @mastermati773
    @mastermati773 5 місяців тому

    This was great

  • @Hostlyy
    @Hostlyy 4 місяці тому +1

    BRO U THE GOAT MANNN

  • @Dent42
    @Dent42 6 місяців тому +1

    Thank you for the excellent explainer. Now I know how the view frustum works. But for the life of me, I can’t figure out why it isn’t done with spherical coordinates. Frustums (frusta?) as currently implemented in… every game engine I know of… project from a euclidean plane onto a euclidean plane, which means that when the camera rotates, objects can clip in and out of the frustum. In a spherical analogue, this would not be the case.

  • @gerard-nagle
    @gerard-nagle Рік тому +2

    Really cool, enjoyed it. How did you create the graphics for the video, really clean and smooth

    • @MiolithYT
      @MiolithYT  Рік тому +4

      It's made with a python library called Manim

    • @gerard-nagle
      @gerard-nagle Рік тому

      @@MiolithYT thanks for the reply, appreciate it. Seems like Manim will be a project for 2024.

  • @ibrozdemir
    @ibrozdemir 5 місяців тому +1

    i used to think 4th "w" is only necessary for unit "direction" or "location" transformations, i didnt know it also used for projection with only activating "z" to 1.. thanks

  • @SevenRedSun_s
    @SevenRedSun_s 5 місяців тому

    Nice video :D

  • @drancerd
    @drancerd 5 місяців тому +2

    Ok... now we need a full course of quaternions.

  • @robotic_voice
    @robotic_voice 10 місяців тому

    great video

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

    How you do this amazing montage with animations? It's manim ?

  • @besusbb
    @besusbb 5 місяців тому

    cool, makes sense when i think about it but you lost me around 4:40, not sure that part made sense, whats the "original vector" that youre talking about here?

    • @MiolithYT
      @MiolithYT  5 місяців тому +1

      By "original vector" I mean the non-homogeneous representation, the one you can actually use to draw your vector on a grid, which is equivalent to the same vector with 1 as the homogeneous component.
      It's a bit like fractions: two numbers meant to represent a 1D number, and you divide the numerator by the denominator to get back the "original" real number, which is equivalent to the same number in a fraction with 1 as the denominator

    • @besusbb
      @besusbb 5 місяців тому

      @@MiolithYT ah ok, understood, thanks for the explanation!

  • @joelcastro785
    @joelcastro785 6 місяців тому

    could you explain what the "~" at 5:11 means? Also, the last component represents how much we're translating by like you said earlier, no? How exactly is it the case that the last component being y mean everything will eventually be divided by y (and same question about z in the next example)?

    • @MiolithYT
      @MiolithYT  6 місяців тому +2

      The ~ sign means that both expressions are equivalent even though the values in the vectors are different. The last component is not a translation factor, it's a coordinate we add to enable translation with matrix product as opposed to translation by sum of vectors. As for the division, this is just how homogeneous coordinates are designed, you need to divide all vector components by the homogeneous component (when it's not 0) to get back the original vector values in its non-homogeneous space (or in the homogeneous space with 1 as the last component)
      Hope this helps 😊, I suggest you watch the video again more thoroughly as most of your questions were already answered in it

    • @joelcastro785
      @joelcastro785 6 місяців тому

      @@MiolithYT hmm, i see, thank you for the clarification. Awesome video btw, it rlly helped me out!

  • @whatitmeans
    @whatitmeans 9 місяців тому

    it resembles a LOT the Denavit-Hartenberg projection used in robotics

  • @zihengliao236
    @zihengliao236 2 місяці тому

    You are amazing

  • @jaibharat6092
    @jaibharat6092 Рік тому

    buddy nice work could you make videos on david c lay linear algebra , it is well known book in this area

  • @baya8093
    @baya8093 3 місяці тому

    you should have said how would you transalte it when doing with multiple transformation

  • @abpdev
    @abpdev 6 місяців тому

    subscribed!

  • @JoystickLab
    @JoystickLab 6 місяців тому

    Brilliant... please take my money and make a graphics course?

    • @MiolithYT
      @MiolithYT  5 місяців тому

      Haha thanks I wish I had time for that

  • @L.Mandrake
    @L.Mandrake 5 місяців тому +1

    Homo-genius!

  • @xseis.
    @xseis. 8 місяців тому +1

    Am i the only one questioning why we even use matrices? Is it purely for visualizing the math?

    • @hambonesmithsonian8085
      @hambonesmithsonian8085 7 місяців тому +1

      They’re an amazing condensing tool for representing information. You simply need to practice with them versus trying to handle entire systems of equations and you will very quickly see what I mean. Especially when it comes to tensor manipulation and Einstein summation notation.
      So TLDR, yes, but not without merit. Matrices are not intuitive at first.

    • @xseis.
      @xseis. 7 місяців тому +1

      So, you could work without them but it'd get really tedious

    • @MusingsAndIdeas
      @MusingsAndIdeas 5 місяців тому

      @@xseis.Actually, there are a lot of things, like SVD and eigenvalues/eigenvectors, that aren't really possible without matrices

    • @bonbonpony
      @bonbonpony 3 місяці тому

      @@MusingsAndIdeas Unless you're working with differential operators and their eigenvalues & eigenfunctions - then matrices won't help you anymore, because they would have to be infinitely-dimensional :q

    • @bonbonpony
      @bonbonpony 3 місяці тому

      @xseis: We use matrices because they allow us to ignore all the unnecessary intricate details of equations and focus on just what's important: the coefficients. Matrices put all those coefficients in a nice table of numbers that we can crunch with computers easily. Also, they unify all sorts of different transformations, so instead of using different expressions for different transformations, you use matrix multiplication as one tool that does them all in the same way.

  • @nightcoremaster3601
    @nightcoremaster3601 5 місяців тому +1

    TL;DW: 4D matrices help computer to do perspective, so that why can visualize parallel lines that meet at the horizontal line, like our eyes capture.

    • @nightcoremaster3601
      @nightcoremaster3601 5 місяців тому +1

      Furthermore, transformations (matrix mul., without vector addition) in nD made possible by using (n+1)D matrices. That's why 3D objects need 4D matrices to work out in computer graphics.

    • @nightcoremaster3601
      @nightcoremaster3601 5 місяців тому

      Man, 1 month grinding Computer Graphics for the final exam for an A now really helps

  • @Strongsong
    @Strongsong Рік тому +1

    We make numerous interpretation errors when we do not develop adequate and corrected forms of observation, not necessarily the result of the use of machines, but naturally in our brain. This video is useful even to improve interpretations of quantum mechanics as a multiplier of the potential of the mind. This is my opinion that AI and others technologies, however modern, naturally serve to expand our abstract mind and enable creative tours through Hilbert space. Our brain commands technology, it only warns us about the need for more enhanced directions.

  • @filipmihajlovic7779
    @filipmihajlovic7779 8 місяців тому

    You failed to explain why it is required. But everything else is great.

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

    Awful video, raised more questions than it answered.