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 | |
---|