- Timestamp:
- 01/31/07 13:39:49 (18 years ago)
- Location:
- GTP/trunk/Lib/Vis/Preprocessing/manual
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/manual/integration.aux
r2066 r2068 11 11 \newlabel{sec:requirements}{{4.1}{2}} 12 12 \newlabel{sec:BoundingBoxConverter}{{4.1}{3}} 13 \@writefile{toc}{\contentsline {paragraph}{Bounding BoxConverter}{3}}13 \@writefile{toc}{\contentsline {paragraph}{BoundingBoxConverter}{3}} 14 14 \newlabel{sec:ObjectContainer}{{4.1}{3}} 15 15 \@writefile{toc}{\contentsline {paragraph}{ObjectContainer}{3}} 16 16 \newlabel{sec:Loading}{{4.1}{3}} 17 \@writefile{toc}{\contentsline {paragraph}{View cells loading}{3}} 18 \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Intersectable}{3}} 19 \newlabel{sec:intersectable}{{4.2}{3}} 20 \@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Bounding Box Converter}{4}} 21 \newlabel{sec:Converter}{{4.3}{4}} 22 \@writefile{toc}{\contentsline {section}{\numberline {5}View Cells Usage}{6}} 23 \newlabel{sec:usage}{{5}{6}} 17 \@writefile{toc}{\contentsline {paragraph}{ViewCellsManager}{3}} 18 \@writefile{toc}{\contentsline {section}{\numberline {5}Example Implementation}{4}} 19 \newlabel{sec:implementation}{{5}{4}} 20 \@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Intersectable}{4}} 21 \newlabel{sec:intersectable}{{5.1}{4}} 22 \@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Bounding Box Converter}{4}} 23 \newlabel{sec:Converter}{{5.2}{4}} 24 \@writefile{toc}{\contentsline {section}{\numberline {6}View Cells Usage}{7}} 25 \newlabel{sec:usage}{{6}{7}} 24 26 \@setckpt{integration}{ 25 27 \setcounter{page}{8} … … 32 34 \setcounter{mpfootnote}{0} 33 35 \setcounter{part}{0} 34 \setcounter{section}{ 5}36 \setcounter{section}{6} 35 37 \setcounter{subsection}{0} 36 38 \setcounter{subsubsection}{0} -
GTP/trunk/Lib/Vis/Preprocessing/manual/integration.tcp
r2066 r2068 7 7 UseBibTeX=0 8 8 UseMakeIndex=1 9 ActiveProfile=LaTeX => DVI9 ActiveProfile=LaTeX => PDF 10 10 ProjectLanguage=de 11 11 ProjectDialect=DE -
GTP/trunk/Lib/Vis/Preprocessing/manual/integration.tex
r2066 r2068 18 18 \label{sec:visibility} 19 19 20 First generate some view cells. 21 The script responsible for view cell generation is {\em generate\_viewcells.sh}. 22 It is located in the {\em Preprocessor/scripts} directory. 23 It uses the options from the file {\em generate\_viewcells.env}. 24 First the input scene must be replaced with the scene of the user. 20 All necessary scripts are located in the {\em Preprocessor/scripts} directory. 21 The easiest way to use the scripts is with Cygwin. 22 First some meaningful view cells must be generated for the current scene. 23 The script {\em generate\_viewcells.sh} is responsible for view cell generation. 24 It takes the parameters from the file {\em generate\_viewcells.env}. 25 To specify the input scene, the parameter 25 26 26 27 \begin{verbatim}Scene.filename\end{verbatim} 27 28 29 must be set to the file name of the new scene. Our preprocessor supports the formats obj and x3d. 28 30 Important options for performance are 29 31 30 \begin{verbatim}VspBspTree.Construction.samples\end{verbatim} 31 \begin{verbatim}VspBspTree.Termination.maxViewCells\end{verbatim} 32 33 The first option sets the number of samples that is used for view cell construction. The second 34 sets the maximal number of view cells. 32 \begin{verbatim} 33 VspBspTree.Construction.samples 34 VspBspTree.Termination.maxViewCells 35 \end{verbatim} 36 37 The first parameter sets the number of samples that is used for view cell construction. Less samples 38 means faster computation, but maybe slightly less optimized view cells. The second 39 parameter sets the maximal number of view cells. 35 40 %The easiest way to use the file is with Cygwin, but a windows command line will also do the job 36 41 37 Now the visibility solution will be generated on this view cells. 38 The generated view cell file must be set as input in the script {\em generate\_visibility.sh}. 39 For this purpose set the following option 42 Running the script will generate a visibility solution with empty view cells. 43 Now we must compute visibility for these view cells. 44 In the preprocessor script {\em generate\_visibility.sh}, set the following parameter to the 45 newly generated visibility solution. 40 46 41 47 \begin{verbatim}ViewCells.filename\end{verbatim} 42 48 43 This script starts the preprocessor and generates avisibility solution. This solution contains49 This script starts the preprocessor and generates the full visibility solution. This solution contains 44 50 view cells and the corresponding Potentially Visible Set (PVS). Next we explain how this visibility 45 51 solution can be used in a target engine. … … 72 78 For this purpose we associate the entities of the engine with the PVS 73 79 entries from the visibility solution. 74 This can be done quite smoothly be implementinga small number of interface classes80 For this purposse the user must implement a small number of interface classes 75 81 of the preprocessor. 76 82 We demonstrate this on a small example, which shows how to access preprocessed visibility 77 in the popular rendering engine Ogre3D. Of course, it to be adapted to the particular78 t arget engine.79 80 \begin{verbatim} 81 82 83 83 in the popular rendering engine Ogre3D. Of course, the implementation has to be adapted 84 to the requirements of a particular target engine. 85 86 \begin{verbatim} 87 // this class associates PVS entries 88 // with the entities of the engine. 89 OctreeBoundingBoxConverter bconverter(this); 84 90 85 86 87 88 89 91 // a vector of intersectables 92 ObjectContainer objects; 93 94 // load the view cells and their PVS 95 GtpVisibilityPreprocessor::ViewCellsManager *viewCellsManager = 90 96 GtpVisibilityPreprocessor::ViewCellsManager::LoadViewCells 91 97 (filename, &objects, &bconverter); 92 98 \end{verbatim} 93 99 94 This piece of code consists of the following parts. 95 96 \paragraph{Bounding Box Converter} 100 This piece of code is loading the view cells into the engine. 101 Let's analyze this code. There are two constructs that need explanation, the 102 BoundingBoxConverter and the ObjectContainer, and the view cells manager. 103 104 \paragraph{BoundingBoxConverter} 97 105 \label{sec:BoundingBoxConverter} 98 106 107 This is one of the interfaces that must be implemented 108 In this case, we implemented an OctreeBoundingBoxConverter for the Ogre OctreeSceneManager. 99 109 The bounding box converter is used to associate one or more entities (objects) 100 in the engine with a pvs entries of the visibility solution. This is done by 101 geometric comparison of their bounding boxes. 110 in the engine with each pvs entry of the visibility solution. This is done by 111 geometric comparison of the bounding boxes. 112 102 113 In the current setting we compare not for equality but for intersection. 103 All entities in the engine which bounding boxes that intersects a104 bounding box of a PVS entry is associated with this PVS entry. 105 This means that often more than one entity in the engine will map to a particular pvs entry. 106 This gives a slight overestimation ofPVS but yields a very robust solution.114 All entities of the engine intersecting a bounding box of a PVS entry are 115 associated with this PVS entry. This means that often more than one entity in the 116 engine will map to a particular pvs entry. This gives a slight overestimation of 117 PVS but yields a very robust solution. 107 118 108 119 \paragraph{ObjectContainer} … … 111 122 The object container is basicly a vector of {\em Intersectable *}. It contains all 112 123 static entities of the scene. 113 A ll PVS entriesmust be derived from this class. To get access to the PVS of a view cell,124 A PVS entry must be derived from this class. To get access to the PVS of a view cell, 114 125 the user must implement this interface as a wrapper for the entities in the 115 126 particular engine. 116 127 117 \paragraph{View cells loading}128 \paragraph{ViewCellsManager} 118 129 \label{sec:Loading} 119 130 120 All that is left now is the loading of the view cells. The user has to provide 121 the filename of the visibility solution, a vector of the static entities 122 of the scene, and a bounding box converter. 123 The function returns a view cells manager which is used to access the view cells, e.g., 124 locate the current view cell. 125 126 After this step the view cells should be loaded and usable in the engine. 127 Now we give an example implementation for the interface classes. 131 A view cells manager is returned from the loading call. It will be used to access and 132 manage the view cells from now on. For example, it can be applied to locate the current view cell. 133 For loading, the user has to provide the filename of the visibility solution, an ObjectContainer 134 containing all the static entities of the scene, and a bounding box converter. 135 After this step the view cells should be loaded and accessable in the engine. 136 137 \section{Example Implementation} 138 \label{sec:implementation} 139 140 In this section we show an example implementation for the interface classes in Ogre3D. 128 141 129 142 \subsection{Intersectable} 130 143 \label{sec:intersectable} 131 144 132 As we currently test for intersection, there can be more than one matching object per PVS entry, so there 133 is a 1:n relationship. The typical wrapper for an {\em Intersectable} will therefore contain an array of 134 corresponding entities. 145 In our current setting we said that we test for intersection other than equality when 146 assigning the pvs entries to engine entites. Hence there can be more than one matching object 147 per PVS entry, and there is a 1:n relationship. The typical wrapper for 148 an {\em Intersectable} will therefore contain an array of entities corresponding to this PVS entry. 149 In order to use the entities of the target engine instead of Ogre3D entities, 150 replace {\em Entity} with the entity representation of the target engine. 135 151 136 152 \begin{verbatim} … … 160 176 \end{verbatim} 161 177 162 In order to use the target engine entities as PVS entry,163 replace {\em Entity} with the entity representation of the target engine.164 178 165 179 \subsection{Bounding Box Converter} 166 180 \label{sec:Converter} 167 181 168 This is the onlytricky part of the integration. The bounding box converter182 This is maybe the most tricky part of the integration. The bounding box converter 169 183 is necessary because we have to associate the objects of the visibility solution with 170 184 the objects from the engine without having unique ids. 171 185 172 The implementation of this interface must be adapted for the requirements 173 of the particular engine. We give an example for a Bounding Box Converter 186 We give an example for a Bounding Box Converter 174 187 for Ogre. It is templated in order to works with any Ogre SceneManager. 175 176 \begin{verbatim} 177 178 /** Class which converts preprocessor types to OGRE types 188 Again, the implementation of this interface must be adapted for the requirements 189 of the particular engine. 190 191 \begin{verbatim} 192 193 /** Class which converts preprocessor entites to Ogre3D entities 179 194 */ 180 195 template<typename T> PlatFormBoundingBoxConverter: … … 184 199 PlatFormBoundingBoxConverter(T *sm); 185 200 186 187 188 189 201 /** Takes a vector of indexed bounding boxes and uses it to 202 identify objects with a similar bounding box 203 and assigns them the proper index (id). 204 The objects are returned in the object container. 190 205 191 192 206 @returns true if conversion was successful 207 */ 193 208 bool IdentifyObjects(const GtpVisibilityPreprocessor:: 194 IndexedBoundingBoxContainer &iboxes, 195 GtpVisibilityPreprocessor::ObjectContainer &objects) const; 196 209 IndexedBoundingBoxContainer &iboxes, 210 GtpVisibilityPreprocessor::ObjectContainer &objects) const; 197 211 198 212 protected: … … 206 220 }; 207 221 208 \end{verbatim} 209 210 Let's analize this class. The only function the user has to implement is the 211 function {\em IdentifyObjects}. For this purpose we also use a helper function 212 {\em FindIntersectingObjects}. Let's now have a look at the implementation 213 of {\em IdentifyObjects} for Ogre3D. 214 222 typedef PlatFormBoundingBoxConverter<OctreeSceneManager> 223 OctreeBoundingBoxConverter; 224 225 \end{verbatim} 226 227 This class is inherited from {\em BoundingBoxConverter}. 228 {\em BoundingBoxConverters} has only one virtual function {\em IdentifyObjects} that must 229 be implemented. Additionally we 230 use a helper function {\em FindIntersectingObjects} that is responsible for locating the 231 corresponding objects in the scene. Let's now have a look at the 232 implementation of {\em IdentifyObjects} for Ogre3D. 215 233 216 234 \begin{verbatim} 217 235 template<typename T> 218 236 bool PlatFormBoundingBoxConverter<T>::IdentifyObjects( 219 220 237 const GtpVisibilityPreprocessor::IndexedBoundingBoxContainer &iboxes, 238 GtpVisibilityPreprocessor::ObjectContainer &objects) const 221 239 { 222 223 240 GtpVisibilityPreprocessor::IndexedBoundingBoxContainer:: 241 const_iterator iit, iit_end = iboxes.end(); 224 242 225 226 227 228 243 for (iit = iboxes.begin(); iit != iit_end; ++ iit) 244 { 245 const AxisAlignedBox box = 246 OgreTypeConverter::ConvertToOgre((*iit).second); 229 247 230 EntityContainer *entryObjects = new EntityContainer(); 231 232 // find all objects that intersect the bounding box 233 FindIntersectingObjects(box, *entryObjects); 234 235 EngineIntersectable *entry = 236 new EngineIntersectable(entryObjects); 237 entry->SetId((*iit).first); 238 239 objects.push_back(entry); 240 } 241 242 return true; 248 EntityContainer *entryObjects = new EntityContainer(); 249 250 // find all objects that intersect the bounding box 251 FindIntersectingObjects(box, *entryObjects); 252 253 EngineIntersectable *entry = new EngineIntersectable(entryObjects); 254 entry->SetId((*iit).first); 255 256 objects.push_back(entry); 257 } 258 return true; 243 259 } 244 260 \end{verbatim} 245 261 246 262 The function just loops over the bounding boxes of the PVS entries and finds the entities that 247 they intersect. Let's have a look now at the function {\em FindIntersectingObjects}, which248 is responsible for finding the intersections for each indiviul box.263 are intersected by the bouding boxes. Let's have a look now at the function {\em FindIntersectingObjects}, which 264 is searching the intersections for each individual box. 249 265 250 266 … … 252 268 template<typename T> 253 269 void PlatFormBoundingBoxConverter<T>::FindIntersectingObjects( 254 255 270 const AxisAlignedBox &box, 271 EntityContainer &objects) const 256 272 { 257 273 list<SceneNode *> sceneNodeList; 258 274 259 275 // find intersecting scene nodes to get candidates for intersection 260 276 // note: this function has to be provided by scene manager 261 277 mSceneMgr->findNodesIn(box, sceneNodeList, NULL); 262 278 263 279 // convert the bounding box to preprocessor format 264 265 280 GtpVisibilityPreprocessor::AxisAlignedBox3 nodeBox = 281 OgreTypeConverter::ConvertFromOgre(box); 266 282 267 283 // loop through the intersecting scene nodes 268 269 270 271 284 for (sit = sceneNodeList.begin(); sit != sceneNodeList.end(); ++ sit) 285 { 286 SceneNode *sn = *sit; 287 SceneNode::ObjectIterator oit = sn->getAttachedObjectIterator(); 272 288 273 289 // find the objects that intersect the box 274 290 while (oit.hasMoreElements()) 275 276 277 278 279 280 291 { 292 MovableObject *mo = oit.getNext(); 293 294 // we are only interested in scene entities 295 if (mo->getMovableType() != "Entity") 296 continue; 281 297 282 283 298 // get the bounding box of the objects 299 AxisAlignedBox bbox = mo->getWorldBoundingBox(); 284 300 285 286 287 288 289 290 291 301 // test for intersection (note: function provided of preprocessor) 302 if (Overlap(nodeBox, OgreTypeConverter::ConvertFromOgre(bbox))) 303 { 304 objects.push_back(static_cast<Entity *>(mo)); 305 } 306 } 307 } 292 308 } 293 309 \end{verbatim} 294 310 295 Note that the implementation of this function can be quite different for a different engine, 296 as it is highly depending on the particular engine design. 297 298 For Ogre3D, we use a two stage approach. 299 First we find the intersecting scene nodes. 300 We apply a search function that is optimized for the particular engine. 301 For Ogre3D this is the function {\em findNodesIn}. 311 Note that the implementation of this function is maybe the one that differs the most 312 for another engine, as it is highly depending on the particular engine design. 313 For the Ogre3D implementation, we use a two stage approach. First we find the intersecting scene nodes. 314 We apply a search function that is optimized for this engine. 315 In the Ogre3D case, this is the function {\em findNodesIn}. 302 316 The engine is responsible to provide a function for fast geometric search in the scene, 303 317 in order to quickly find the objects intersecting the bounding box of a PVS entry. 304 318 A spatial data structure like Octree or Kd tree is very useful in this regard. 305 306 319 Second we traverse through the list of entities attached to the scene node. The intersection 307 320 test is then applied for each indiviual bounding box. … … 311 324 312 325 By now the view cells should be accessible within the target engine. This happens through 313 the view cells manager. 314 315 In order to query the current view cell, apply the following code snipped. 326 the view cells manager. In order to query the current view cell, use the following code. 316 327 317 328 \begin{verbatim} … … 320 331 \end{verbatim} 321 332 322 where {\em viewPoint} contains the current location of the player and must be of type 323 {\em GtpVisibilityPreprocessor::Vector3}. 324 To access the PVS of the view cell, we apply a PVS iterator, like in the following example. 325 326 \begin{verbatim} 333 where {\em viewPoint} contains the current location of the player. It must be of type 334 {\em GtpVisibilityPreprocessor::Vector3}. In order to traverse the PVS of this view cell, we 335 apply a PVS iterator, like in the following example. 336 For the implementation in another engine, { \em Entity} from Ogre3D must be replaced by the 337 target engine entities. 338 339 \begin{verbatim} 340 GtpVisibilityPreprocessor::ObjectPvsIterator pit = 341 currentViewCell->GetPvs().GetIterator(); 342 327 343 while (pit.HasMoreEntries()) 328 344 { 329 345 GtpVisibilityPreprocessor::ObjectPvsEntry entry = pit.Next(); 330 GtpVisibilityPreprocessor::Intersectable *obj = entry.mObject; 331 332 switch (obj->Type()) 333 { 334 EngineIntersectable *oi = static_cast<EngineIntersectable *>(obj); 335 336 EntityContainer *entries = oi->GetItem(); 337 EntityContainer::const_iterator eit, eit_end = entries->end(); 338 339 for (eit = entries->begin(); eit != eit_end; ++ eit) 340 { 341 Entity *ent = *eit; 346 GtpVisibilityPreprocessor::Intersectable *obj = entry.mObject; 347 348 EngineIntersectable *oi = static_cast<EngineIntersectable *>(obj); 349 EntityContainer *entries = oi->GetItem(); 350 351 EntityContainer::const_iterator eit, eit_end = entries->end(); 352 353 for (eit = entries->begin(); eit != eit_end; ++ eit) 354 { 355 Entity *ent = *eit; 342 356 343 // do something 344 357 // do something, e.g., set objects visible 358 } 345 359 } 346 360 347 361 \end{verbatim} 348 362 349 Again, entity would have to be replaced by the target engine entities. -
GTP/trunk/Lib/Vis/Preprocessing/manual/manual.ilg
r2066 r2068 1 This is C:\texmf\MiKTeX\bin\makeindex.exe, version 2.14 [02-Oct-2002] (with Thai support).2 Scanning input file E:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.idx...done (0 entries accepted, 0 rejected).3 Nothing written in E:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.ind.4 Transcript written in E:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.ilg.1 This is D:\texmf\MiKTeX\bin\makeindex.exe, version 2.14 [02-Oct-2002] (with Thai support). 2 Scanning input file D:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.idx...done (0 entries accepted, 0 rejected). 3 Nothing written in D:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.ind. 4 Transcript written in D:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.ilg. -
GTP/trunk/Lib/Vis/Preprocessing/manual/manual.log
r2066 r2068 1 This is e-TeX, Version 3.141592-2.2 (MiKTeX 2.4) (preloaded format=latex 2007.1.30) 31 JAN 2007 01:511 This is pdfeTeX, Version 3.141592-1.21a-2.2 (MiKTeX 2.4) (preloaded format=latex 2005.8.25) 31 JAN 2007 13:39 2 2 entering extended mode 3 ** manual.tex4 ( manual.tex3 **D:/svn/gametools/GTP/trunk/Lib/Vis/Preprocessing/manual/manual.tex 4 (D:/svn/gametools/GTP/trunk/Lib/Vis/Preprocessing/manual/manual.tex 5 5 LaTeX2e <2003/12/01> 6 Babel <v3.8a> and hyphenation patterns for english, french, german, ngerman, dumylang, nohyphenation, loaded. 7 (C:\texmf\tex\latex\base\article.cls 6 Babel <v3.8g> and hyphenation patterns for english, dumylang, nohyphenation, ge 7 rman, ngerman, french, loaded. 8 (D:\texmf\tex\latex\base\article.cls 8 9 Document Class: article 2004/02/16 v1.4f Standard LaTeX document class 9 ( C:\texmf\tex\latex\base\size10.clo10 (D:\texmf\tex\latex\base\size10.clo 10 11 File: size10.clo 2004/02/16 v1.4f Standard LaTeX file (size option) 11 12 ) … … 21 22 \belowcaptionskip=\skip42 22 23 \bibindent=\dimen102 23 ) (C:\texmf\tex\latex\psnfss\times.sty 24 Package: times 2004/09/15 PSNFSS-v9.2 (SPQR) 25 ) (C:\texmf\tex\latex\ltxmisc\a4wide.sty 24 ) (D:\texmf\tex\latex\psnfss\times.sty 25 Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) 26 ) 27 (D:\texmf\tex\latex\ltxmisc\a4wide.sty 26 28 Package: a4wide 1994/08/30 27 28 (C:\texmf\tex\latex\ntgclass\a4.sty 29 (D:\texmf\tex\latex\ntgclass\a4.sty 29 30 Package: a4 2004/04/15 v1.2g A4 based page layout 30 )) (C:\texmf\tex\latex\float\float.sty 31 )) 32 (D:\texmf\tex\latex\float\float.sty 31 33 Package: float 2001/11/08 v1.3d Float enhancements (AL) 32 34 \c@float@type=\count87 … … 45 47 \symmathboldr=\mathgroup6 46 48 LaTeX Font Info: Redeclaring math symbol \beta on input line 74. 47 ( C:\texmf\tex\latex\thumbpdf\thumbpdf.sty48 Package: thumbpdf 200 4/11/19 v3.7Inclusion of thumbnails (HO)49 50 51 Package thumbpdf Warning: Missing driver name.52 53 ) ( C:\texmf\tex\latex\base\alltt.sty49 (D:\texmf\tex\latex\thumbpdf\thumbpdf.sty 50 Package: thumbpdf 2005/07/06 v3.8 Inclusion of thumbnails (HO) 51 52 53 Package thumbpdf Warning: Thumbnail data file `manual.tpt' not found. 54 55 ) (D:\texmf\tex\latex\base\alltt.sty 54 56 Package: alltt 1997/06/16 v2.0g defines alltt environment 55 ) ( C:\texmf\tex\latex\tools\hhline.sty57 ) (D:\texmf\tex\latex\tools\hhline.sty 56 58 Package: hhline 1994/05/23 v2.03 Table rule package (DPC) 57 ) (multirow.sty 59 ) 60 (multirow.sty 58 61 \bigstrutjot=\dimen103 59 ) 60 (C:\texmf\tex\latex\ltxmisc\url.sty 62 ) (D:\texmf\tex\latex\ltxmisc\url.sty 61 63 \Urlmuskip=\muskip10 62 Package: url 200 4/03/15 ver 3.1Verb mode for urls, etc.64 Package: url 2005/06/27 ver 3.2 Verb mode for urls, etc. 63 65 ) (rotating.sty 64 66 Package: rotating 1997/09/26, v2.13 Rotation package 65 (C:\texmf\tex\latex\graphics\graphicx.sty 67 68 (D:\texmf\tex\latex\graphics\graphicx.sty 66 69 Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) 67 70 68 ( C:\texmf\tex\latex\graphics\keyval.sty71 (D:\texmf\tex\latex\graphics\keyval.sty 69 72 Package: keyval 1999/03/16 v1.13 key=value parser (DPC) 70 73 \KV@toks@=\toks16 71 ) (C:\texmf\tex\latex\graphics\graphics.sty 74 ) 75 (D:\texmf\tex\latex\graphics\graphics.sty 72 76 Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR) 73 ( C:\texmf\tex\latex\graphics\trig.sty77 (D:\texmf\tex\latex\graphics\trig.sty 74 78 Package: trig 1999/03/16 v1.09 sin cos tan (DPC) 75 ) ( C:\texmf\tex\latex\00miktex\graphics.cfg79 ) (D:\texmf\tex\latex\00miktex\graphics.cfg 76 80 File: graphics.cfg 2003/03/12 v1.1 MiKTeX 'graphics' configuration 77 81 ) 78 Package graphics Info: Driver file: dvips.def on input line 80. 79 (C:\texmf\tex\latex\graphics\dvips.def 80 File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) 82 Package graphics Info: Driver file: pdftex.def on input line 80. 83 84 (D:\texmf\tex\latex\graphics\pdftex.def 85 File: pdftex.def 2005/06/20 v0.03m graphics/color for pdftex 86 \Gread@gobject=\count88 81 87 )) 82 88 \Gin@req@height=\dimen104 83 89 \Gin@req@width=\dimen105 84 ) 85 (C:\texmf\tex\latex\base\ifthen.sty 90 ) (D:\texmf\tex\latex\base\ifthen.sty 86 91 Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) 87 92 ) 88 \c@r@tfl@t=\count8 893 \c@r@tfl@t=\count89 89 94 \rot@float@box=\box28 90 95 ) (ifpdf.sty) … … 110 115 LaTeX Font Info: ... okay on input line 135. 111 116 LaTeX Font Info: Try loading font information for OT1+ptm on input line 135. 112 (C:\texmf\tex\latex\psnfss\ot1ptm.fd 117 118 (D:\texmf\tex\latex\psnfss\ot1ptm.fd 113 119 File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. 120 ) 121 (D:\texmf\tex\context\base\supp-pdf.tex (D:\texmf\tex\context\base\supp-mis.tex 122 loading : Context Support Macros / Miscellaneous (2004.10.26) 123 \protectiondepth=\count90 124 \scratchcounter=\count91 125 \scratchtoks=\toks17 126 \scratchdimen=\dimen106 127 \scratchskip=\skip43 128 \scratchmuskip=\muskip11 129 \scratchbox=\box29 130 \scratchread=\read1 131 \scratchwrite=\write4 132 \zeropoint=\dimen107 133 \onepoint=\dimen108 134 \onebasepoint=\dimen109 135 \minusone=\count92 136 \thousandpoint=\dimen110 137 \onerealpoint=\dimen111 138 \emptytoks=\toks18 139 \nextbox=\box30 140 \nextdepth=\dimen112 141 \everyline=\toks19 142 \!!counta=\count93 143 \!!countb=\count94 144 \recursecounter=\count95 145 ) 146 loading : Context Support Macros / PDF (2004.03.26) 147 \nofMPsegments=\count96 148 \nofMParguments=\count97 149 \MPscratchCnt=\count98 150 \MPscratchDim=\dimen113 151 \MPnumerator=\count99 152 \everyMPtoPDFconversion=\toks20 114 153 ) 115 154 LaTeX Font Info: External font `cmex10' loaded for size … … 119 158 LaTeX Font Info: External font `cmex10' loaded for size 120 159 (Font) <6> on input line 164. 121 LaTeX Font Info: Try loading font information for OML+cmbrm on input line 164. 122 (C:\texmf\tex\latex\cmbright\omlcmbrm.fd 123 File: omlcmbrm.fd 1999/05/12 v7.3 (WaS) 160 LaTeX Font Info: Try loading font information for OML+cmbrm on input line 16 161 4. 162 (D:\texmf\tex\latex\cmbright\omlcmbrm.fd 163 File: omlcmbrm.fd 2005/04/13 v8.1 (WaS) 124 164 ) 125 165 LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <14.4> not available 126 166 (Font) Font shape `OT1/ptm/b/n' tried instead on input line 167. 127 128 (manual.toc 167 (manual.toc 129 168 LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <10> not available 130 169 (Font) Font shape `OT1/ptm/b/n' tried instead on input line 1. 131 170 ) 132 \tf@toc=\write 4171 \tf@toc=\write5 133 172 [1 134 173 135 ] (integration.tex 136 LaTeX Font Info: Try loading font information for OT1+pcr on input line 26. 137 (C:\texmf\tex\latex\psnfss\ot1pcr.fd 174 {psfonts.map}] 175 (integration.tex 176 LaTeX Font Info: Try loading font information for OT1+pcr on input line 27. 177 (D:\texmf\tex\latex\psnfss\ot1pcr.fd 138 178 File: ot1pcr.fd 2001/06/04 font definitions for OT1/pcr. 139 179 ) 140 180 LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <12> not available 141 (Font) Font shape `OT1/ptm/b/n' tried instead on input line 51. 142 LaTeX Font Info: Try loading font information for OMS+ptm on input line 58. 143 (C:\texmf\tex\latex\psnfss\omsptm.fd 181 (Font) Font shape `OT1/ptm/b/n' tried instead on input line 57. 182 LaTeX Font Info: Try loading font information for OMS+ptm on input line 64. 183 184 (D:\texmf\tex\latex\psnfss\omsptm.fd 144 185 File: omsptm.fd 145 186 ) 146 187 LaTeX Font Info: Font shape `OMS/ptm/m/n' in size <10> not available 147 (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 58.188 (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 64. 148 189 [2 149 190 150 ] 151 Overfull \hbox (1.41376pt too wide) in paragraph at lines 160--160 152 [] \OT1/pcr/m/n/10 IntersectableWrapper<EntityContainer *>[] 153 [] 154 155 [3] 156 Overfull \hbox (19.41376pt too wide) in paragraph at lines 160--160 157 [] \OT1/pcr/m/n/10 EngineIntersectable(EntityContainer *item): GtpVisibilityPreprocessor::[] 158 [] 159 160 161 Overfull \hbox (55.41376pt too wide) in paragraph at lines 208--208 162 [] \OT1/pcr/m/n/10 GtpVisibilityPreprocessor::ObjectContainer &objects) const;[] 163 [] 164 165 [4] [5] [6]) [7] (manual.aux (integration.aux)) ) 191 ] [3] 192 Overfull \hbox (1.41376pt too wide) in paragraph at lines 176--176 193 [] \OT1/pcr/m/n/10 IntersectableWrapper<EntityCo 194 ntainer *>[] 195 [] 196 197 198 Overfull \hbox (19.41376pt too wide) in paragraph at lines 176--176 199 [] \OT1/pcr/m/n/10 EngineIntersectable(EntityContainer *item): GtpVisibilityP 200 reprocessor::[] 201 [] 202 203 [4] 204 Overfull \hbox (31.41376pt too wide) in paragraph at lines 260--260 205 [] \OT1/pcr/m/n/10 const GtpVisibilityPreprocessor::IndexedBoundingBoxCon 206 tainer &iboxes,[] 207 [] 208 209 210 Overfull \hbox (1.41376pt too wide) in paragraph at lines 260--260 211 [] \OT1/pcr/m/n/10 EngineIntersectable *entry = new EngineIntersectable(entr 212 yObjects);[] 213 [] 214 215 [5] 216 Overfull \hbox (1.41376pt too wide) in paragraph at lines 309--309 217 [] \OT1/pcr/m/n/10 for (sit = sceneNodeList.begin(); sit != sceneNodeList.end( 218 ); ++ sit)[] 219 [] 220 221 222 Overfull \hbox (7.41376pt too wide) in paragraph at lines 309--309 223 [] \OT1/pcr/m/n/10 // test for intersection (note: function provided of pr 224 eprocessor)[] 225 [] 226 227 [6]) [7] (manual.aux (integration.aux)) ) 166 228 Here is how much of TeX's memory you used: 167 1163 strings out of 95898 168 12243 string characters out of 1195288 169 59774 words of memory out of 1060479 170 4091 multiletter control sequences out of 60000 171 13818 words of font info for 41 fonts, out of 500000 for 1000 172 14 hyphenation exceptions out of 607 173 32i,7n,21p,207b,241s stack positions out of 1500i,500n,5000p,200000b,32768s 174 175 Output written on manual.dvi (7 pages, 16556 bytes). 229 1532 strings out of 95515 230 16755 string characters out of 1189489 231 65463 words of memory out of 1065662 232 4500 multiletter control sequences out of 60000 233 21808 words of font info for 49 fonts, out of 1000000 for 2000 234 14 hyphenation exceptions out of 4999 235 32i,7n,21p,279b,239s stack positions out of 5000i,500n,10000p,200000b,32768s 236 PDF statistics: 237 38 PDF objects out of 300000 238 0 named destinations out of 300000 239 1 words of extra memory for PDF output out of 65536 240 <D:\texmf\fonts\type1\bluesky\cm\cmsy1 241 0.pfb>{8r.enc}<D:\texmf\fonts\type1\urw\urwstd\ucrr8a.pfb><D:\texmf\fonts\type1 242 \urw\urwstd\utmri8a.pfb><D:\texmf\fonts\type1\urw\urwstd\utmb8a.pfb><D:\texmf\f 243 onts\type1\urw\urwstd\utmr8a.pfb> 244 Output written on manual.pdf (7 pages, 82161 bytes). -
GTP/trunk/Lib/Vis/Preprocessing/manual/manual.toc
r2066 r2068 4 4 \contentsline {section}{\numberline {4}Integration of Preprocessed Visibility}{2} 5 5 \contentsline {subsection}{\numberline {4.1}Requirements}{2} 6 \contentsline {paragraph}{Bounding BoxConverter}{3}6 \contentsline {paragraph}{BoundingBoxConverter}{3} 7 7 \contentsline {paragraph}{ObjectContainer}{3} 8 \contentsline {paragraph}{View cells loading}{3} 9 \contentsline {subsection}{\numberline {4.2}Intersectable}{3} 10 \contentsline {subsection}{\numberline {4.3}Bounding Box Converter}{4} 11 \contentsline {section}{\numberline {5}View Cells Usage}{6} 8 \contentsline {paragraph}{ViewCellsManager}{3} 9 \contentsline {section}{\numberline {5}Example Implementation}{4} 10 \contentsline {subsection}{\numberline {5.1}Intersectable}{4} 11 \contentsline {subsection}{\numberline {5.2}Bounding Box Converter}{4} 12 \contentsline {section}{\numberline {6}View Cells Usage}{7}
Note: See TracChangeset
for help on using the changeset viewer.