Computer Graphics Engine Project
The goal of this assignment is to develop a mini scene graph based 3D engine and provide usage examples that show its potential. The assignment is split in four phases, each containing a report and code for the engine and generator.
This phase requires two applications: the generator, which purpose is to generate the vertices for different models (plane, box, sphere and cone), and the engine itself, which will read a configuration file, written in XML, and display the models:
<scene>
<model file=”sphere.3d” />
<model file=”plane.3d” />
</scene>
This phase is about creating hierarchical scenes using geometric transforms. A scene is defined as a tree where each node contains a set of geometric transforms (translate, rotate and scale) and optionally a set of models. Each node can also have children nodes.
<scene>
<group> <!-- TERRA -->
<translate Z="35"/>
<scale X="0.73" Y="0.73" Z="0.73"/>
<models>
<model file="planeta.3d"/>
</models>
<group> <!-- LUA -->
<translate X="1.5"/>
<scale X="0.16" Y="0.16" Z="0.16"/>
<models>
<model file="planeta.3d"/>
</models>
</group>
</group>
</scene>
In this phase, the models are now drawn with VBOs, as opposed to immediate mode used in the previous phase.
In this phase, the generator must be able to create a new type of model based on Bezier patches applying Bezier rules for the defined control points and tesselation level. The generator will receive as parameters the name of a file where the Bezier control points are defined as well as the required tessellation level. The resulting file will contain a list of the triangles to draw the surface.
Rotate and Translate elements have been extended. The goal is to perform animations based on Catmull-Rom cubic curves, considering a set of points and the number of seconds to run the whole curve.
In the last phase, the generator should provide texture coordinates and normals for each vertex of each model, in order to add lighting and texture. The light sources in the xml configuration file are demonstrated below.
<scene>
<lights>
<light type="POINT" posX="23" posY="15" posZ="23"/>
</lights>
...
</scene>
Name |
---|
Carolina Cunha |
Hugo Faria |
João Diogo Mota |
Rodolfo Silva |