thank you so much, I'm so glad I found out this video. I've been seeking information about projections for a few days and couldn't find any information that wasn't irrelevant or too advanced, but, finally, I found your video and now I understand everything and was able to make my own 3d projection in js.
bro all the other explanations i found were just kinda talking about how 1/tan(\theta/2) is just a reasonable choice because like "it scales the things from world space appropriatly". thx for actually explaining the real math behind it
I really loved the video. I come from another video that began to explain somewhat more advanced things and I didn't understand anything. Maybe this is a little simpler but it is really useful when you are new in this area. Keep making content like this, intuitive and easy to understand!!
Exactly like @LukaB Knight posted. Your content is straightforward and goes in-depth about the perspective subject. Most content are math-heavy based or lazy representations. Especially content from universities and professors. They assume you know their derived thoughts in powerpoint presentations or even worse, they start with a really good explanation in the introduction just to come up with crazy things once things get real. Keep up the excellent work. Keep it simple (KISS) should be a rule that everyone that produces content should strictly follow. Congrats
THIS WAS SO USEFUL! I was trying to fix a bug and I just could't find it. When I watched this video I realized my core projection was wrong! And it works now. tysm!
Really cool video, thx!! This was soo helpful and first video on this subject i didnt find overwhelming as a medium iq guy, thanks for the simple and concise explanation
At some points of the video, I thought that you were dumbing down the concept hardly, and that made me a bit impatient.. but overall - really great stuff!
great explenation, but wouldnt this only work if the camera never rotated? For example what if you rotate 10 degrees right (or up, depending on your perspective), then the triangles that are formed wont be right triangles so the formula wont stand and also the whole plane shifts
Amazing😱 It would be nice to show that there is a Zp coordinate too, however its value is always n, and because of that, we see the 3d object on the "2d plane" which its actually 3d, but flat hh, and because of that, the Zp can be ignored, for 2d porpuses.
Actually when doing proper 3d rendering with OpenGL or DirectX we use a matrix to do all those transformations at once. We actually have a z value, but that's not just "n" but specifically claculated so it can be used to sort things in depth. Your GPU actually has a depth buffer besides the actual frame buffer which holds the color information of the pixels. The depth value is actually written into the depth buffer. That way things that were drawn first can occlude things drawn later. Anyways. This video ia a good introduction in the very fundamentals of 3d projection. In actual gameengines or 3d applications we use 4d homogeneous coordinates and 4x4 matrices to define any position or transformation.
You don't need trigonometry for perspective projection. You only need it for rotation. For perspective projection you just divide your X and Y each by your Z. In practice you'll want to use scaling factor and a Z offset in 3D space and X and Y offsets in screen space to normalize to the centre of the screen like you covered. I figured this out with a friend in the early '80s when I was 13 or 14. I didn't know most of the terminology and never learned matrices let alone all the amazing fancy stuff used these days. I don't understand the stuff with tan and your a variable.
he used basic trigonometry. basically if you know 2 sides of a triangle you can know the other side by using sin, cos and tan. so since u want to scale down distant objects, its ratio should be the same, aka the triangle between the camera and the projection and the camera and the real distance of the object would have the same ratio. so you can know the w / h will be the same on both instances. so hp / wp = h / w (p standing for projection). solving for the projected height you have hp = h / w / wp which becomes hp = h / (w * wp) since wp is tan(2/a) (this means that the angle of the point you're projecting is half the total angle of the frustum if you look at the drawing he made you can see that this is the case) so we can just substitute wp for tan(2/a) in our equation hp = h / (w * tan(2/a)) and the same can be said for width so wp = w / (h * tan(2/a)) choosing an angle and using the points in the plain for your object and solving the equation, it will give you the projected coordinates for the object
@@pixellino5009 Matrices are used for both rotation and projection. But they don't need to be used for either. I believe the big win with matrices is that you can combine several rotations and projection all into one operation and by doing so ultimately use fewer discrete calculations. But I'm not sure. Also I believe these days quaternions are often used instead. Caveat: I'm bad at matrices and barely have a clue wrt quaternions, but when I was a kid in the '80s I did 3D rotation and projection on the 8-bit computers we had back then regardless.
Trigonometric functions aren't needed if you start out with the distance of the near plane. The tan function is only used here to derive the distance of the near plane from the viewing angle. After you have the near plane, everything else is just similar triangles.
uhh cool but why did you make a whole video about perspective and then at the very end show a cube that looks 100% orthographic? LOL u serious? wow. cool. also turn up the volume on your next video.
WHY DO YOU USE SO MANY LIBRARYS ITS SO CONFUSING PLZ PUT RAW HTML AND CSS AND JS 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭
Your explanation is so clear and concise that I had an "ahah" moment where every piece just fell into place and dots started connecting
This is great because it does *not* include the matrix math, just the bare fundamentals of going from world space to screen space. Good stuff!
Thanks for this wonderful introduction. I failed maths at school and wasn't shown the value of trig when I was a kid. You've blown my mind!
thank you so much, I'm so glad I found out this video. I've been seeking information about projections for a few days and couldn't find any information that wasn't irrelevant or too advanced, but, finally, I found your video and now I understand everything and was able to make my own 3d projection in js.
Right, I've finally found something that's properly explained.
bro all the other explanations i found were just kinda talking about how 1/tan(\theta/2) is just a reasonable choice because like "it scales the things from world space appropriatly". thx for actually explaining the real math behind it
I really loved the video. I come from another video that began to explain somewhat more advanced things and I didn't understand anything. Maybe this is a little simpler but it is really useful when you are new in this area. Keep making content like this, intuitive and easy to understand!!
This is an awesome explanation. You have a gift for teaching!
Thanks for taking the time to explain it in such a good way
Exactly like @LukaB Knight posted. Your content is straightforward and goes in-depth about the perspective subject. Most content are math-heavy based or lazy representations. Especially content from universities and professors. They assume you know their derived thoughts in powerpoint presentations or even worse, they start with a really good explanation in the introduction just to come up with crazy things once things get real.
Keep up the excellent work. Keep it simple (KISS) should be a rule that everyone that produces content should strictly follow. Congrats
This is the best I've seen about this topic. Thank you so so much to explained this. ❤❤❤
THIS WAS SO USEFUL! I was trying to fix a bug and I just could't find it. When I watched this video I realized my core projection was wrong! And it works now. tysm!
Really cool video, thx!!
This was soo helpful and first video on this subject i didnt find overwhelming as a medium iq guy, thanks for the simple and concise explanation
That was so well done, Kudos.
Wish i could see more of these concepts explained.
Warm regards
Great explanation
Amazing video, thank you for helping the topic click,
Thank you very much for your explainations !
Amazing explanation!
Finally, btw love ur drawing ❤
very informative video, i just made my first 3d renderer using this
Such a good explanation....thanks
this video was well made, thank you
Clear and Amazing
this is awesome!
I know a Danish dialect when I hear one. No Dane can avoid the Danglish. Thanks for the video, my fellow LEGO-eating windmill-hugger.
Bro you are freaking amazing ❤❤❤
This is Amazing! Thanks a lot!
Amazing!
Nice explanation.
At some points of the video, I thought that you were dumbing down the concept hardly, and that made me a bit impatient.. but overall - really great stuff!
Ur not carl the person ur carl the legend
Amazing, thanks
That is so awesome!
OMG Thank you so much!!!
just a question? what is the dot symbol in the calculations at 23:15?
you mean the multiplication symbol? it means z times tan(a/2).
It's just mutiplication. We use it this way since there is also an x variable that may seem as multiplication.
@@kn-ki4637thanks!
Thank you !
Great explanation and cool presentation.
Question: shouldn't method name be like transform3Dto2D() or get2Dfrom3D()?
Your a legend
AMAZING
Thx a lot
great explenation, but wouldnt this only work if the camera never rotated? For example what if you rotate 10 degrees right (or up, depending on your perspective), then the triangles that are formed wont be right triangles so the formula wont stand and also the whole plane shifts
Amazing😱 It would be nice to show that there is a Zp coordinate too, however its value is always n, and because of that, we see the 3d object on the "2d plane" which its actually 3d, but flat hh, and because of that, the Zp can be ignored, for 2d porpuses.
Actually when doing proper 3d rendering with OpenGL or DirectX we use a matrix to do all those transformations at once. We actually have a z value, but that's not just "n" but specifically claculated so it can be used to sort things in depth. Your GPU actually has a depth buffer besides the actual frame buffer which holds the color information of the pixels. The depth value is actually written into the depth buffer. That way things that were drawn first can occlude things drawn later.
Anyways. This video ia a good introduction in the very fundamentals of 3d projection. In actual gameengines or 3d applications we use 4d homogeneous coordinates and 4x4 matrices to define any position or transformation.
Thanks
Because math
Is it really true to say that the near plane and screen is the same thing?
Yep
Cool cup
Cooool
xp=(x*d)/z yp=(y*d)/z d-distance from observer.Prespective view.
You don't need trigonometry for perspective projection. You only need it for rotation. For perspective projection you just divide your X and Y each by your Z. In practice you'll want to use scaling factor and a Z offset in 3D space and X and Y offsets in screen space to normalize to the centre of the screen like you covered.
I figured this out with a friend in the early '80s when I was 13 or 14. I didn't know most of the terminology and never learned matrices let alone all the amazing fancy stuff used these days.
I don't understand the stuff with tan and your a variable.
he used basic trigonometry. basically if you know 2 sides of a triangle you can know the other side by using sin, cos and tan.
so since u want to scale down distant objects, its ratio should be the same, aka the triangle between the camera and the projection and the camera and the real distance of the object would have the same ratio. so you can know the w / h will be the same on both instances.
so hp / wp = h / w (p standing for projection). solving for the projected height you have hp = h / w / wp which becomes hp = h / (w * wp)
since wp is tan(2/a) (this means that the angle of the point you're projecting is half the total angle of the frustum if you look at the drawing he made you can see that this is the case) so we can just substitute wp for tan(2/a) in our equation
hp = h / (w * tan(2/a))
and the same can be said for width so
wp = w / (h * tan(2/a))
choosing an angle and using the points in the plain for your object and solving the equation, it will give you the projected coordinates for the object
This guys a genius!
Matrices are used for the calculation of the coordinates in space rather than projection.
@@pixellino5009 Matrices are used for both rotation and projection. But they don't need to be used for either. I believe the big win with matrices is that you can combine several rotations and projection all into one operation and by doing so ultimately use fewer discrete calculations. But I'm not sure. Also I believe these days quaternions are often used instead.
Caveat: I'm bad at matrices and barely have a clue wrt quaternions, but when I was a kid in the '80s I did 3D rotation and projection on the 8-bit computers we had back then regardless.
Trigonometric functions aren't needed if you start out with the distance of the near plane. The tan function is only used here to derive the distance of the near plane from the viewing angle. After you have the near plane, everything else is just similar triangles.
:O
good explanation but music was so annoying sorry to say but it was distracting
Good video but improve on your presentation and speech delivery
uhh cool but why did you make a whole video about perspective and then at the very end show a cube that looks 100% orthographic? LOL u serious? wow. cool. also turn up the volume on your next video.
you sound like a redditor
It does not, you can clearly see the back face is smaller.
The math is correct, could be just an optical illusion
Dude shut up
WHY DO YOU USE SO MANY LIBRARYS ITS SO CONFUSING PLZ PUT RAW HTML AND CSS AND JS 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭
amazing video , actually learned well