[138] | 1 | \newcommand{\tab}{\hspace{2mm}} |
---|
| 2 | \chapter{Overview} |
---|
| 3 | |
---|
| 4 | This work package consists in developing a continuous multiresolution |
---|
| 5 | model for polygonal objects that includes connectivity information |
---|
| 6 | and uses basic primitives like triangle strips to reduce the |
---|
| 7 | amount of information stored and the time required for rendering. |
---|
| 8 | Our results will be specifically applied to allow the efficient |
---|
| 9 | rendering of complex outdoor scenes, including plants and trees. |
---|
| 10 | |
---|
| 11 | |
---|
| 12 | The work consists of the following main tasks: |
---|
| 13 | \begin{enumerate} |
---|
| 14 | \item Developing a new multiresolution model with connectivity information |
---|
| 15 | for general meshes; we call this model LODStrips. |
---|
| 16 | |
---|
| 17 | \item Developing a new multiresolution model to represent plants and |
---|
| 18 | trees; we call this model LODTrees. |
---|
| 19 | \end{enumerate} |
---|
| 20 | |
---|
| 21 | To achieve this goal we are developing two modules, one for each |
---|
| 22 | multiresolution model: |
---|
| 23 | |
---|
| 24 | |
---|
| 25 | {\textbullet}\tab\textbf{Module for General Meshes.} |
---|
| 26 | |
---|
| 27 | This module contains functions that handle the levels of detail |
---|
| 28 | of objects made of polygonal meshes. With these functions, the |
---|
| 29 | user will be able to get information about the geometry and the |
---|
| 30 | current level of detail. Besides, one has the possibility of |
---|
| 31 | changing the complexity level of the model interactively. The meshes the |
---|
| 32 | module works with use triangle strips to reduce storage usage |
---|
| 33 | and to speed up realistic rendering. |
---|
| 34 | |
---|
| 35 | |
---|
| 36 | This module is implemented in the \textit{Geometry::LodStripsLibrary} |
---|
| 37 | class, which inherits from the \textit{Ogre::Renderable} and |
---|
| 38 | \textit{Ogre::Movable} classes for its integration with the engine. |
---|
| 39 | |
---|
| 40 | {\textbullet}\tab\textbf{Module for Plants and Trees.} |
---|
| 41 | |
---|
| 42 | This module contains functions that handle the levels of detail |
---|
| 43 | of plant and tree models. These models support separate processing |
---|
| 44 | of leaves and branches. Branches, including the trunk, are handled |
---|
| 45 | by the general mesh module. Leaves are represented using their |
---|
| 46 | own specific variable multiresolution model. In order to get |
---|
| 47 | the proper foliage geometry, the user can interact with this |
---|
| 48 | module according to his necessities. |
---|
| 49 | |
---|
| 50 | |
---|
| 51 | All this functionality is integrated into the \textit{Geometry::LodTreeLibrary} |
---|
| 52 | class, which has as parent the \textit{Ogre::Renderable} and |
---|
| 53 | \textit{Ogre::Movable} classes for its correct behaviour inside the engine. |
---|
| 54 | |
---|
| 55 | |
---|
| 56 | |
---|
| 57 | These modules are accompanied by four other support modules that |
---|
| 58 | will be independent: |
---|
| 59 | |
---|
| 60 | |
---|
| 61 | |
---|
| 62 | {\textbullet}\tab\textbf{Simplification Module.} |
---|
| 63 | |
---|
| 64 | This module is used by both models, general mesh and the plant |
---|
| 65 | and tree models. It contains functions that take a triangle mesh |
---|
| 66 | as input and generate simplified versions of 3D objects made |
---|
| 67 | out of triangles, while preserving its appearance. |
---|
| 68 | |
---|
| 69 | |
---|
| 70 | It receives a pointer to a \textit{Geometry::Mesh} object containing |
---|
| 71 | the model to be simplified. For general meshes, this input is |
---|
| 72 | a triangle mesh, while for leaf sets (foliage) is a set of leaves, |
---|
| 73 | each made of two texture-mapped triangles. |
---|
| 74 | |
---|
| 75 | |
---|
| 76 | As result of the simplification process, it returns a simplification |
---|
| 77 | sequence represented by an object that contains:\\ |
---|
| 78 | \begin{itemize} |
---|
| 79 | \item |
---|
| 80 | For general meshes: for each simplification step the module returns |
---|
| 81 | the edge to be collapsed, the two triangles begin removed, and |
---|
| 82 | the new triangles added to the representation. All the information |
---|
| 83 | of the steps is included in a \textit{Geometry::MeshSimplificationSequence} |
---|
| 84 | object. |
---|
| 85 | \item For leaf sets (foliage): for each simplification step the module |
---|
| 86 | returns the collapsed leaf, the two leaves being removed, and |
---|
| 87 | the new leaf added to the representation. This information is |
---|
| 88 | included in a \textit{Geometry::TreeSimplificationSequence} object. |
---|
| 89 | \end{itemize} |
---|
| 90 | |
---|
| 91 | This module consists of the \textit{Geometry::MeshSimplifier} for general |
---|
| 92 | meshes and the \textit{Geometry::TreeSimplifier} for plants and trees. The |
---|
| 93 | \textit{Geometry::MeshSimplifier} is a virtual class and must be derived in a |
---|
| 94 | class that implements the simplification algorithm. This is done by means of |
---|
| 95 | the classes \textit{Geometry::ImageBasedSimplifier} and |
---|
| 96 | \textit{Geometry::GeometryBasedSimplifier}. |
---|
| 97 | |
---|
| 98 | |
---|
| 99 | {\textbullet}\tab\textbf{Stripification (Strip Search) Module.} |
---|
| 100 | |
---|
| 101 | |
---|
| 102 | This module implements methods that extract triangle strips from |
---|
| 103 | triangle meshes. It receives a pointer to a \textit{Geometry::Mesh} |
---|
| 104 | object containing the model to be stripified and returns the |
---|
| 105 | stripified mesh, contained in another \textit{Geometry::Mesh} object. It |
---|
| 106 | consists of the virtual class \textit{Geometry::Stripifier} and |
---|
| 107 | the class \textit{Geometry::CustomStripifier} that implements the |
---|
| 108 | stripifying algorithm. |
---|
| 109 | |
---|
| 110 | |
---|
| 111 | {\textbullet}\tab\textbf{Construction module for general multiresolution models.} |
---|
| 112 | |
---|
| 113 | This module stores general multiresolution mesh representations according to |
---|
| 114 | the LODStrip format. Its functionality is supported by the \textit{LodStrips} |
---|
| 115 | \textit{Constructor} class. |
---|
| 116 | |
---|
| 117 | |
---|
| 118 | It takes as inputs the strips provided by the stripification module |
---|
| 119 | (\textit{Geometry::Mesh} class) and the edge collapse sequence computed by the |
---|
| 120 | simplification module (\textit{Geometry::MeshSimplificationSequence} class). It |
---|
| 121 | returns a file containing the mesh generated according to the |
---|
| 122 | \textit{Geometry::Mesh} object structure. Besides, it outputs a LodStrips file |
---|
| 123 | with the multiresolution information. |
---|
| 124 | |
---|
| 125 | |
---|
| 126 | |
---|
| 127 | {\textbullet}\tab\textbf{Construction module for tree multiresolution models.} |
---|
| 128 | |
---|
| 129 | This module stores tree multiresolution representations using our own specific |
---|
| 130 | file format. It consists of the \textit{Geometry::TreeConstructor} class. |
---|
| 131 | |
---|
| 132 | It receives a file including the geometry information of the foliage |
---|
| 133 | (\textit{Geometry::Mesh} object) and also a file describing the simplification |
---|
| 134 | steps of the leaves (\textit{Geometry::TreeSimplificationSequence} object). The |
---|
| 135 | output this module returns is a file describing the multiresolution tree |
---|
| 136 | object. In addition, it references the file with the original set of leaves, |
---|
| 137 | the one with the original geometry of the trunk and branches and the LodStrips |
---|
| 138 | file obtained after the simplification of the trunk and branches mesh. |
---|
| 139 | |
---|
| 140 | |
---|
| 141 | Besides, this modules structure requires the auxiliary |
---|
| 142 | \textit{Geometry::Serializer}, \textit{Geometry::Serializable} and |
---|
| 143 | \textit{Geometry::Mesh} classes. The \textit{Mesh} class represents the |
---|
| 144 | structure that will store the information about the mesh that we will work |
---|
| 145 | with. The \textit{Geometry::Serializer} and \textit{Geometry::Serializable} |
---|
| 146 | classes implement a method that reads information from a file and stores it in |
---|
| 147 | our mesh structure. It also provides a method to save this information to a |
---|
| 148 | file. |
---|
| 149 | |
---|
| 150 | |
---|
| 151 | |
---|
| 152 | %******************** Diagrama general de clases ************************ |
---|
| 153 | \begin{figure} |
---|
| 154 | \includegraphics[scale=0.7]{../html/inherit__graph__0.png}\\ |
---|
| 155 | \includegraphics[scale=0.7]{../html/inherit__graph__1.png}\\ |
---|
| 156 | \includegraphics[scale=0.7]{../html/inherit__graph__2.png}\\ |
---|
| 157 | \includegraphics[scale=0.7]{../html/inherit__graph__3.png}\\ |
---|
| 158 | \includegraphics[scale=0.7]{../html/inherit__graph__4.png}\\ |
---|
| 159 | \includegraphics[scale=0.7]{../html/inherit__graph__5.png}\\ |
---|
| 160 | \includegraphics[scale=0.7]{../html/inherit__graph__6.png}\\ |
---|
| 161 | \includegraphics[scale=0.7]{../html/inherit__graph__7.png}\\ |
---|
| 162 | \includegraphics[scale=0.7]{../html/inherit__graph__8.png}\\ |
---|
| 163 | \caption{Workpackage general class diagram .} |
---|
| 164 | \end{figure} |
---|
| 165 | |
---|