Homogenous coordinates seem very similar to the projection operation we performed during the first lecture, where we converted points in the xyz coordinates to uv coordinates. Is this a valid connection to make? And if so, what is the nature of the relationship between projections and homogenous coordinates?
keenan
Yes, absolutely. Good observation. The fundamental connection between projections and homogeneous coordinates it that by dividing by the homogeneous coordinate you're basically saying, "all points along a line are equivalent." In the case of a camera projection, all the points that the eye might see along a particular ray through space are equivalent, and get mapped to the same point on the image plane. We'll talk about this kind of thing a lot in our lecture on coordinate transformations; if you're interested now you can check out the slides from last year.
nick
Thanks for the slides! They made the connection pretty clear. When will we be going over this in class?
keenan
Looks like September 14 (the whole schedule has now been added to the course home page).
nick
Thank you!
Emtwelve
Out of these mappings, are either of them used to create 2.5D games (or is it the process of transforming one to the other used to create 2.5D games)? Raycasting (https://en.wikipedia.org/wiki/Ray_casting) was a technique used to emulate a 3D view in retro first person shooters such as DOOM, Wolfenstein 3D, and Marathon. Are projective coordinates the key thing we need in order to create these 2.5D games, or is it like: an affine transformation takes a coordinate in 3D space and maps them to a 2D plane?
keenan
Ray casting is basically a very slow way to compute a projection, for very simple geometry. :-) There, you literally march along the ray until you hit something. Next week Stelian will talk about a more modern way to do this, by directly computing the projection of vertices onto the screen, then intelligently performing rasterization to account for perspective distortion.
That being said, if you still want to do it the old-school way, here's a ray caster in 256 lines of JavaScript. (I'm just going to assume the guy is headed to the kitchen to slice a tomato.)
Homogenous coordinates seem very similar to the projection operation we performed during the first lecture, where we converted points in the xyz coordinates to uv coordinates. Is this a valid connection to make? And if so, what is the nature of the relationship between projections and homogenous coordinates?
Yes, absolutely. Good observation. The fundamental connection between projections and homogeneous coordinates it that by dividing by the homogeneous coordinate you're basically saying, "all points along a line are equivalent." In the case of a camera projection, all the points that the eye might see along a particular ray through space are equivalent, and get mapped to the same point on the image plane. We'll talk about this kind of thing a lot in our lecture on coordinate transformations; if you're interested now you can check out the slides from last year.
Thanks for the slides! They made the connection pretty clear. When will we be going over this in class?
Looks like September 14 (the whole schedule has now been added to the course home page).
Thank you!
Out of these mappings, are either of them used to create 2.5D games (or is it the process of transforming one to the other used to create 2.5D games)? Raycasting (https://en.wikipedia.org/wiki/Ray_casting) was a technique used to emulate a 3D view in retro first person shooters such as DOOM, Wolfenstein 3D, and Marathon. Are projective coordinates the key thing we need in order to create these 2.5D games, or is it like: an affine transformation takes a coordinate in 3D space and maps them to a 2D plane?
Ray casting is basically a very slow way to compute a projection, for very simple geometry. :-) There, you literally march along the ray until you hit something. Next week Stelian will talk about a more modern way to do this, by directly computing the projection of vertices onto the screen, then intelligently performing rasterization to account for perspective distortion.
That being said, if you still want to do it the old-school way, here's a ray caster in 256 lines of JavaScript. (I'm just going to assume the guy is headed to the kitchen to slice a tomato.)