As I've already said, we want to transform a set of 3D points into a set of 2D points. To do this we must somehow eliminate the third coordinate, the depth (z)to only have the x and the y left. However we cannot simply discard the depth information because we would lose the perspective. To keep the perspective, we must chose a point of view, the eye of the observer, and a view plane on which all the points are drawn. then for each point we trace the line between the eye and the point. We then calculate the coordinates of the intersection of the line and the plane: these are the 2D-coordinates of the point. Is this a bit complicated? Don't worry, I've made a picture:
To make the calculations a bit simpler (and the 3D engine faster) I've chosen to put the eye
on the z-axis (eyex=0 and eyey=0). The view plane is parallel to the xy plane, that way every point on the
plane has a fixed z and the 2D coordinates of each point are the x and y of the corresponding point
on the view plane.
The closer the view plane is to the object, the bigger it will appear. To change the zoom, we vary the position of the view-plane.
If you still haven't understood, I'm probably not such a good teacher and I can't help you anymore. However if you still want your engine you can just follow my step by step guideline and it will work. You should also take a look at the math page I link to here.
|» Level Advanced|
Rating: 9 Votes: 2631
|KStor is a student living in France and working with Flash during his free time...that is, not very much.|
|Download the files used in this tutorial.|
|Download (39 kb)|
|More help? Search our boards for quick answers!|