\newcommand{\tab}{\hspace{2mm}} \chapter{Overview} This work package consists in developing a continuous multiresolution model for polygonal objects that includes connectivity information and uses basic primitives like triangle strips to reduce the amount of information stored and the time required for rendering. Our results will be specifically applied to allow the efficient rendering of complex outdoor scenes, including plants and trees. The work consists of the following main tasks: \begin{enumerate} \item Developing a new multiresolution model with connectivity information for general meshes; we call this model LODStrips. \item Developing a new multiresolution model to represent plants and trees; we call this model LODTrees. \end{enumerate} To achieve this goal we are developing two modules, one for each multiresolution model: {\textbullet}\tab\textbf{Module for General Meshes.} This module contains functions that handle the levels of detail of objects made of polygonal meshes. With these functions, the user will be able to get information about the geometry and the current level of detail. Besides, one has the possibility of changing the complexity level of the model interactively. The meshes the module works with use triangle strips to reduce storage usage and to speed up realistic rendering. This module is implemented in the \textit{Geometry::LodStripsLibrary} class, which inherits from the \textit{Ogre::Renderable} and \textit{Ogre::Movable} classes for its integration with the engine. {\textbullet}\tab\textbf{Module for Plants and Trees.} This module contains functions that handle the levels of detail of plant and tree models. These models support separate processing of leaves and branches. Branches, including the trunk, are handled by the general mesh module. Leaves are represented using their own specific variable multiresolution model. In order to get the proper foliage geometry, the user can interact with this module according to his necessities. All this functionality is integrated into the \textit{Geometry::LodTreeLibrary} class, which has as parent the \textit{Ogre::Renderable} and \textit{Ogre::Movable} classes for its correct behaviour inside the engine. These modules are accompanied by four other support modules that will be independent: {\textbullet}\tab\textbf{Simplification Module.} This module is used by both models, general mesh and the plant and tree models. It contains functions that take a triangle mesh as input and generate simplified versions of 3D objects made out of triangles, while preserving its appearance. It receives a pointer to a \textit{Geometry::Mesh} object containing the model to be simplified. For general meshes, this input is a triangle mesh, while for leaf sets (foliage) is a set of leaves, each made of two texture-mapped triangles. As result of the simplification process, it returns a simplification sequence represented by an object that contains:\\ \begin{itemize} \item For general meshes: for each simplification step the module returns the edge to be collapsed, the two triangles begin removed, and the new triangles added to the representation. All the information of the steps is included in a \textit{Geometry::MeshSimplificationSequence} object. \item For leaf sets (foliage): for each simplification step the module returns the collapsed leaf, the two leaves being removed, and the new leaf added to the representation. This information is included in a \textit{Geometry::TreeSimplificationSequence} object. \end{itemize} This module consists of the \textit{Geometry::MeshSimplifier} for general meshes and the \textit{Geometry::TreeSimplifier} for plants and trees. The \textit{Geometry::MeshSimplifier} is a virtual class and must be derived in a class that implements the simplification algorithm. This is done by means of the classes \textit{Geometry::ImageBasedSimplifier} and \textit{Geometry::GeometryBasedSimplifier}. {\textbullet}\tab\textbf{Stripification (Strip Search) Module.} This module implements methods that extract triangle strips from triangle meshes. It receives a pointer to a \textit{Geometry::Mesh} object containing the model to be stripified and returns the stripified mesh, contained in another \textit{Geometry::Mesh} object. It consists of the virtual class \textit{Geometry::Stripifier} and the class \textit{Geometry::CustomStripifier} that implements the stripifying algorithm. {\textbullet}\tab\textbf{Construction module for general multiresolution models.} This module stores general multiresolution mesh representations according to the LODStrip format. Its functionality is supported by the \textit{LodStrips} \textit{Constructor} class. It takes as inputs the strips provided by the stripification module (\textit{Geometry::Mesh} class) and the edge collapse sequence computed by the simplification module (\textit{Geometry::MeshSimplificationSequence} class). It returns a file containing the mesh generated according to the \textit{Geometry::Mesh} object structure. Besides, it outputs a LodStrips file with the multiresolution information. {\textbullet}\tab\textbf{Construction module for tree multiresolution models.} This module stores tree multiresolution representations using our own specific file format. It consists of the \textit{Geometry::TreeConstructor} class. It receives a file including the geometry information of the foliage (\textit{Geometry::Mesh} object) and also a file describing the simplification steps of the leaves (\textit{Geometry::TreeSimplificationSequence} object). The output this module returns is a file describing the multiresolution tree object. In addition, it references the file with the original set of leaves, the one with the original geometry of the trunk and branches and the LodStrips file obtained after the simplification of the trunk and branches mesh. Besides, this modules structure requires the auxiliary \textit{Geometry::Serializer}, \textit{Geometry::Serializable} and \textit{Geometry::Mesh} classes. The \textit{Mesh} class represents the structure that will store the information about the mesh that we will work with. The \textit{Geometry::Serializer} and \textit{Geometry::Serializable} classes implement a method that reads information from a file and stores it in our mesh structure. It also provides a method to save this information to a file. %******************** Diagrama general de clases ************************ \begin{figure} \includegraphics[scale=0.7]{../html/inherit__graph__0.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__1.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__2.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__3.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__4.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__5.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__6.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__7.png}\\ \includegraphics[scale=0.7]{../html/inherit__graph__8.png}\\ \caption{Workpackage general class diagram .} \end{figure}