University of California, Berkeley EECS Dept, CS Division |
||
Jordan Smith |
SLIDE: Scene Language for Interactive Dynamic Environments |
Prof. Carlo H. Séquin |
Home | Goals | Publications | People | Gallery | Assignments | Distributions |
The following is a diagram of the SLIDE C++ class hierarchy. Subclasses point up to their superclasses. Every textual SLIDE language element has a corresponding C++ class which represents its type in the run time viewer program. Notice that most SLIDE types are directly or indirectly a subclass of CSLIDEPrimitive.
Notice that CSLIDEObject, CSLIDEGroup, and CSLIDEInstance all share a common superclass, CSLIDENode. This common CSLIDENode type eases the management of the scene graph DAG.
Notice that CSLIDERotate, CSLIDEScale, and CSLIDETranslate all share a common superclass, CSLIDETransform. This common CSLIDETransform type eases the management of transforms in the CSLIDEInstance class.
The classes which appear in red have had portions of their implementations removed. You need to complete the functionality of these classes.
You will only be using the (Xmin Ymin) (Xmax Ymax) portion of the CSLIDECamera's frustum statement for this assignment. This is the description of the world window in the scene.
The CBound class maintains a pool of Vertex objects for quick use during clipping. Vertices can be allocated using CBound::AllocateVertex() and deallocated using DeallocateVertex(Vertex *pvx). This pool is designed to speed up allocation of the temporary structures needed for clipping, but you do not have to use them.
The CBound class is where a lot of your work will be done in this assignment. It is responsible for bounding box culling with its Intersect method. It is also responsible for polygon clipping.
For more information and diagrams checkout the SLIDE Rendering Pipeline Page. Note: Ignore the rendering pass described there and follow the one described at the bottom of this page instead.
You will need to modify the Preprocess(), PreprocessGraph(), Update(), and UpdateGraph() to deal properly with the LOD flags. You also need to consider the LOD flags in the Rendering pass.
The following graph shows what should be happening for a single face in the rendering process, starting with the HandleDisplay callback on the CWindow object. Note that the matrix notation used in the diagram is ROW VECTOR form, and you will be coding COLUMN VECTORS in the project. The red blocks indicate which portions of the rendering pipeline have changed since the last assignment. These are the ones which you will be creating.
You can also download the postscript version of this graph: render.ps
This page was originally built by Jordan Smith.
Last modified: Sunday, 21-Feb-1999 12:42:23 PST