I’m binge watching these videos. Cem does an awesome job at exploring things. I can tell he really enjoys teaching and that is also what makes these visits so engaging! Great job! I will be watching his other content when I’m done with this series. Thanks for making this so approachable. I feel like I could teach someone else this from his excellent explanations. Thank you!!!
I've been studying this topic for a while and have an engineering background. I must say this 2D and 3D explanation of CG matrices for Rot/Trans/Scale is wonderfully done. Thank you very much for posting this to RU-vid.
One of the very few easy to understand explanation of otherwise made complex to understand topic! This one helps build the intuition which is very useful. Perspective projection is combination of Perspective transform + Orthographic projection is something explained very well. Looking forward to upcoming videos :)
Thank you for the video! 3D rotation was very gentle, it alone worth a couple lessons. And when the homogeneous last coordinate gets to be zero - that's where the fun begins :)
Great series so far. I can't say I'm comfortable with the math yet but knowing what we're trying to achieve helps keep me motivated. I make environments in Unreal Engine 5 so understanding perspective has already helped me make better scenes. Cheers.
Edit: nvm, i think i got it now ^^ could it be there is a mistake in the matrices in min 37:06 ? Because when the far and near plane are both in negative z direction, 2/f-n gives us a negative scalar => would invert our z-coordinates aka change the handedness of the coordinate system. looking at the source code of glm::ortho for example, they put an extra minus sign in front: -2/(far-near) great videos btw :)
Thanks for this great course Cem. I have a doubt at 58:33, why can't the 3rd row of [0, 0, ?, ?] be [0, 0, Pz, 0]? Would that not help with maintaining Pz = P'z? Since Pz^2 / Pz = Pz? Or does this matrix need to be independent of the P vector?
At 53:40, I am kind of lost here. Do you mean [α*x, α*y, α*z, α] and [x,y,z,1] are the same point w.r.t the camera view? In 2D dimension, for example, [1,2] and [3,6] are not same point with respect to position, but are the same when it represent direction. Is this the correct understanding?
Or another way to understand is that, because the existence of orthographic transformation, these two points ([α*x, α*y, α*z, α] and [x,y,z,1]) will eventually converge to one. Does this make sense?
Homogeneous coordinates take a 3D vector and make it 4D. Therefore [ax, ay, az, a] is a 4D vector. The corresponding 3D projection of such a 4D vector is [x,y,z]. Note that the 4D vector [x,y,z,1] (i.e. a=1) has the same projection.
I know you can change It however you want but I was alway most comfortable with your eye as 0,0,0 and -x left, -y up, and -z behind. +Y up is cool too if you think of it as Height. But then I’d prefer +Z moving away as a Distance value. Again do what ya like but be consistent.
another question: With the orthographic projection we were able to define the location of the view volume ourselfs. Now when we used perspective projection we kinda directly used the vertex-coordinates relative to camera space. that would imply that our view-frustum-box center is at (0,0) in the camera space, wouldnt it?
Cem, at min 54, could you explain why we are dividing the 4th coordinate(previously represented value 1 and for perspective transformation Pz). Looking at 2D transformation video, I thought the value 1 was introduced for the trickery of representing translation as a matrix operation.
The 1 value was enough for the translation part, but not enough for this case. Two things to highlight: one part is that if you take [x,y,z], and multiply by 'α', and do this for all α values in interval (-inf,inf) that gives you one particular line in 3D which goes through the origin. This is useful for us because if the eye is in the origin, we see this line as one point. Second take: we track this 'α' value like this: [α*x, α*y, α*z, α] and this represents the same point as [x,y,z,1] and so [x,y,z]. To get the 1, we divide all by 'α'. To truly understand this I believe you need to go through some calculations by yourself, but I can not help you in the limits of this comment.