Changeset 2068


Ignore:
Timestamp:
01/31/07 13:39:49 (17 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/Lib/Vis/Preprocessing/manual
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/manual/integration.aux

    r2066 r2068  
    1111\newlabel{sec:requirements}{{4.1}{2}} 
    1212\newlabel{sec:BoundingBoxConverter}{{4.1}{3}} 
    13 \@writefile{toc}{\contentsline {paragraph}{Bounding Box Converter}{3}} 
     13\@writefile{toc}{\contentsline {paragraph}{BoundingBoxConverter}{3}} 
    1414\newlabel{sec:ObjectContainer}{{4.1}{3}} 
    1515\@writefile{toc}{\contentsline {paragraph}{ObjectContainer}{3}} 
    1616\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}} 
    2426\@setckpt{integration}{ 
    2527\setcounter{page}{8} 
     
    3234\setcounter{mpfootnote}{0} 
    3335\setcounter{part}{0} 
    34 \setcounter{section}{5} 
     36\setcounter{section}{6} 
    3537\setcounter{subsection}{0} 
    3638\setcounter{subsubsection}{0} 
  • GTP/trunk/Lib/Vis/Preprocessing/manual/integration.tcp

    r2066 r2068  
    77UseBibTeX=0 
    88UseMakeIndex=1 
    9 ActiveProfile=LaTeX => DVI 
     9ActiveProfile=LaTeX => PDF 
    1010ProjectLanguage=de 
    1111ProjectDialect=DE 
  • GTP/trunk/Lib/Vis/Preprocessing/manual/integration.tex

    r2066 r2068  
    1818\label{sec:visibility} 
    1919 
    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. 
     20All necessary scripts are located in the {\em Preprocessor/scripts} directory. 
     21The easiest way to use the scripts is with Cygwin. 
     22First some meaningful view cells must be generated for the current scene. 
     23The script {\em generate\_viewcells.sh} is responsible for view cell generation.  
     24It takes the parameters from the file {\em generate\_viewcells.env}. 
     25To specify the input scene, the parameter 
    2526 
    2627\begin{verbatim}Scene.filename\end{verbatim} 
    2728 
     29must be set to the file name of the new scene. Our preprocessor supports the formats obj and x3d. 
    2830Important options for performance are 
    2931 
    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} 
     33VspBspTree.Construction.samples 
     34VspBspTree.Termination.maxViewCells 
     35\end{verbatim} 
     36 
     37The first parameter sets the number of samples that is used for view cell construction. Less samples 
     38means faster computation, but maybe slightly less optimized view cells. The second 
     39parameter sets the maximal number of view cells. 
    3540%The easiest way to use the file is with Cygwin, but a windows command line will also do the job 
    3641 
    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 
     42Running the script will generate a visibility solution with empty view cells. 
     43Now we must compute visibility for these view cells. 
     44In the preprocessor script {\em generate\_visibility.sh}, set the following parameter to the 
     45newly generated visibility solution. 
    4046 
    4147\begin{verbatim}ViewCells.filename\end{verbatim} 
    4248 
    43 This script starts the preprocessor and generates a visibility solution. This solution contains 
     49This script starts the preprocessor and generates the full visibility solution. This solution contains 
    4450view cells and the corresponding Potentially Visible Set (PVS). Next we explain how this visibility 
    4551solution can be used in a target engine.  
     
    7278For this purpose we associate the entities of the engine with the PVS 
    7379entries from the visibility solution.  
    74 This can be done quite smoothly be implementing a small number of interface classes 
     80For this purposse the user must implement a small number of interface classes 
    7581of the preprocessor. 
    7682We 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 particular  
    78 target engine. 
    79  
    80 \begin{verbatim} 
    81    // this class associates PVS entries  
    82    // with the entities of the engine. 
    83    OctreeBoundingBoxConverter bconverter(this); 
     83in the popular rendering engine Ogre3D. Of course, the implementation has to be adapted  
     84to the requirements of a particular target engine. 
     85 
     86\begin{verbatim} 
     87// this class associates PVS entries  
     88// with the entities of the engine. 
     89OctreeBoundingBoxConverter bconverter(this); 
    8490          
    85    // a vector of intersectables 
    86    ObjectContainer objects; 
    87  
    88    // load the view cells and their PVS 
    89    GtpVisibilityPreprocessor::ViewCellsManager *viewCellsManager =  
     91// a vector of intersectables 
     92ObjectContainer objects; 
     93 
     94// load the view cells and their PVS 
     95GtpVisibilityPreprocessor::ViewCellsManager *viewCellsManager =  
    9096         GtpVisibilityPreprocessor::ViewCellsManager::LoadViewCells 
    9197                                   (filename, &objects, &bconverter); 
    9298\end{verbatim} 
    9399 
    94 This piece of code consists of the following parts. 
    95  
    96 \paragraph{Bounding Box Converter} 
     100This piece of code is loading the view cells into the engine. 
     101Let's analyze this code. There are two constructs that need explanation, the 
     102BoundingBoxConverter and the ObjectContainer, and the view cells manager. 
     103 
     104\paragraph{BoundingBoxConverter} 
    97105\label{sec:BoundingBoxConverter} 
    98106 
     107This is one of the interfaces that must be implemented 
     108In this case, we implemented an OctreeBoundingBoxConverter for the Ogre OctreeSceneManager. 
    99109The 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.  
     110in the engine with each pvs entry of the visibility solution. This is done by  
     111geometric comparison of the bounding boxes.  
     112 
    102113In the current setting we compare not for equality but for intersection. 
    103 All entities in the engine which bounding boxes that intersects a  
    104 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 of PVS but yields a very robust solution. 
     114All entities of the engine intersecting a bounding box of a PVS entry are  
     115associated with this PVS entry. This means that often more than one entity in the  
     116engine will map to a particular pvs entry. This gives a slight overestimation of  
     117PVS but yields a very robust solution. 
    107118 
    108119\paragraph{ObjectContainer} 
     
    111122The object container is basicly a vector of {\em Intersectable *}. It contains all 
    112123static entities of the scene. 
    113 All PVS entries must be derived from this class. To get access to the PVS of a view cell, 
     124A PVS entry must be derived from this class. To get access to the PVS of a view cell, 
    114125the user must implement this interface as a wrapper for the entities in the 
    115126particular engine. 
    116127 
    117 \paragraph{View cells loading} 
     128\paragraph{ViewCellsManager} 
    118129\label{sec:Loading} 
    119130 
    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. 
     131A view cells manager is returned from the loading call. It will be used to access and 
     132manage the view cells from now on. For example, it can be applied to locate the current view cell. 
     133For loading, the user has to provide the filename of the visibility solution, an ObjectContainer  
     134containing all the static entities of the scene, and a bounding box converter.  
     135After this step the view cells should be loaded and accessable in the engine. 
     136 
     137\section{Example Implementation} 
     138\label{sec:implementation} 
     139 
     140In this section we show an example implementation for the interface classes in Ogre3D. 
    128141 
    129142\subsection{Intersectable} 
    130143\label{sec:intersectable} 
    131144 
    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. 
     145In our current setting we said that we test for intersection other than equality when 
     146assigning the pvs entries to engine entites. Hence there can be more than one matching object  
     147per PVS entry, and there is a 1:n relationship. The typical wrapper for  
     148an {\em Intersectable} will therefore contain an array of entities corresponding to this PVS entry. 
     149In order to use the entities of the target engine instead of Ogre3D entities, 
     150replace {\em Entity} with the entity representation of the target engine.  
    135151 
    136152\begin{verbatim} 
     
    160176\end{verbatim} 
    161177 
    162 In order to use the target engine entities as PVS entry, 
    163 replace {\em Entity} with the entity representation of the target engine.  
    164178 
    165179\subsection{Bounding Box Converter} 
    166180\label{sec:Converter} 
    167181 
    168 This is the only tricky part of the integration. The bounding box converter 
     182This is maybe the most tricky part of the integration. The bounding box converter 
    169183is necessary because we have to associate the objects of the visibility solution with 
    170184the objects from the engine without having unique ids. 
    171185 
    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  
     186We give an example for a Bounding Box Converter  
    174187for 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 
     188Again, the implementation of this interface must be adapted for the requirements  
     189of the particular engine.  
     190 
     191\begin{verbatim} 
     192 
     193/**     Class which converts preprocessor entites to Ogre3D entities 
    179194*/ 
    180195template<typename T> PlatFormBoundingBoxConverter:  
     
    184199  PlatFormBoundingBoxConverter(T *sm); 
    185200         
    186         /** Takes a vector of indexed bounding boxes and uses it to  
    187           identify objects with a similar bounding box 
    188           and assigns them the proper index (id). 
    189           The objects are returned in the object container. 
     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. 
    190205                 
    191           @returns true if conversion was successful 
    192         */ 
     206      @returns true if conversion was successful 
     207  */ 
    193208  bool IdentifyObjects(const GtpVisibilityPreprocessor:: 
    194                        IndexedBoundingBoxContainer &iboxes, 
    195                              GtpVisibilityPreprocessor::ObjectContainer &objects) const; 
    196  
     209         IndexedBoundingBoxContainer &iboxes, 
     210               GtpVisibilityPreprocessor::ObjectContainer &objects) const; 
    197211 
    198212protected: 
     
    206220}; 
    207221 
    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  
     222typedef PlatFormBoundingBoxConverter<OctreeSceneManager>  
     223          OctreeBoundingBoxConverter; 
     224 
     225\end{verbatim} 
     226 
     227This class is inherited from {\em BoundingBoxConverter}. 
     228{\em BoundingBoxConverters} has only one virtual function {\em IdentifyObjects} that must 
     229be implemented. Additionally we  
     230use a helper function {\em FindIntersectingObjects} that is responsible for locating the  
     231corresponding objects in the scene. Let's now have a look at the  
     232implementation of {\em IdentifyObjects} for Ogre3D. 
    215233 
    216234\begin{verbatim} 
    217235template<typename T> 
    218236bool PlatFormBoundingBoxConverter<T>::IdentifyObjects( 
    219         const GtpVisibilityPreprocessor::IndexedBoundingBoxContainer &iboxes, 
    220         GtpVisibilityPreprocessor::ObjectContainer &objects) const 
     237       const GtpVisibilityPreprocessor::IndexedBoundingBoxContainer &iboxes, 
     238       GtpVisibilityPreprocessor::ObjectContainer &objects) const 
    221239{ 
    222         GtpVisibilityPreprocessor::IndexedBoundingBoxContainer:: 
    223                 const_iterator iit, iit_end = iboxes.end(); 
     240  GtpVisibilityPreprocessor::IndexedBoundingBoxContainer:: 
     241          const_iterator iit, iit_end = iboxes.end(); 
    224242   
    225         for (iit = iboxes.begin(); iit != iit_end; ++ iit) 
    226         { 
    227                 const AxisAlignedBox box =  
    228                         OgreTypeConverter::ConvertToOgre((*iit).second); 
     243  for (iit = iboxes.begin(); iit != iit_end; ++ iit) 
     244  { 
     245    const AxisAlignedBox box =  
     246      OgreTypeConverter::ConvertToOgre((*iit).second); 
    229247                 
    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; 
    243259} 
    244260\end{verbatim} 
    245261 
    246262The 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}, which 
    248 is responsible for finding the intersections for each indiviul box. 
     263are intersected by the bouding boxes. Let's have a look now at the function {\em FindIntersectingObjects}, which 
     264is searching the intersections for each individual box. 
    249265 
    250266 
     
    252268template<typename T> 
    253269void PlatFormBoundingBoxConverter<T>::FindIntersectingObjects( 
    254                                 const AxisAlignedBox &box, 
    255                                                                                                                           EntityContainer &objects) const 
     270       const AxisAlignedBox &box, 
     271       EntityContainer &objects) const 
    256272{ 
    257273  list<SceneNode *> sceneNodeList; 
    258274                         
    259         // find intersecting scene nodes to get candidates for intersection 
     275  // find intersecting scene nodes to get candidates for intersection 
    260276  // note: this function has to be provided by scene manager 
    261         mSceneMgr->findNodesIn(box, sceneNodeList, NULL); 
     277  mSceneMgr->findNodesIn(box, sceneNodeList, NULL); 
    262278 
    263279  // convert the bounding box to preprocessor format 
    264         GtpVisibilityPreprocessor::AxisAlignedBox3 nodeBox =  
    265           OgreTypeConverter::ConvertFromOgre(box); 
     280  GtpVisibilityPreprocessor::AxisAlignedBox3 nodeBox =  
     281    OgreTypeConverter::ConvertFromOgre(box); 
    266282         
    267283  // loop through the intersecting scene nodes 
    268         for (sit = sceneNodeList.begin(); sit != sceneNodeList.end(); ++ sit) 
    269         { 
    270           SceneNode *sn = *sit; 
    271           SceneNode::ObjectIterator oit = sn->getAttachedObjectIterator(); 
     284  for (sit = sceneNodeList.begin(); sit != sceneNodeList.end(); ++ sit) 
     285  { 
     286    SceneNode *sn = *sit; 
     287    SceneNode::ObjectIterator oit = sn->getAttachedObjectIterator(); 
    272288 
    273289    // find the objects that intersect the box 
    274290    while (oit.hasMoreElements()) 
    275                 { 
    276                   MovableObject *mo = oit.getNext(); 
    277  
    278                         // we are only interested in scene entities 
    279                         if (mo->getMovableType() != "Entity") 
    280                           continue; 
     291    { 
     292      MovableObject *mo = oit.getNext(); 
     293 
     294      // we are only interested in scene entities 
     295      if (mo->getMovableType() != "Entity") 
     296        continue; 
    281297                         
    282                         // get the bounding box of the objects 
    283                         AxisAlignedBox bbox = mo->getWorldBoundingBox(); 
     298      // get the bounding box of the objects 
     299      AxisAlignedBox bbox = mo->getWorldBoundingBox(); 
    284300                         
    285                         // test for intersection (note: function provided of preprocessor) 
    286                         if (Overlap(nodeBox, OgreTypeConverter::ConvertFromOgre(bbox))) 
    287                         { 
    288                           objects.push_back(static_cast<Entity *>(mo)); 
    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  } 
    292308} 
    293309\end{verbatim} 
    294310 
    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}. 
     311Note that the implementation of this function is maybe the one that differs the most 
     312for another engine, as it is highly depending on the particular engine design.  
     313For the Ogre3D implementation, we use a two stage approach. First we find the intersecting scene nodes. 
     314We apply a search function that is optimized for this engine.  
     315In the Ogre3D case, this is the function {\em findNodesIn}. 
    302316The engine is responsible to provide a function for fast geometric search in the scene, 
    303317in order to quickly find the objects intersecting the bounding box of a PVS entry.  
    304318A spatial data structure like Octree or Kd tree is very useful in this regard. 
    305  
    306319Second we traverse through the list of entities attached to the scene node. The intersection 
    307320test is then applied for each indiviual bounding box.  
     
    311324 
    312325By 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. 
     326the view cells manager. In order to query the current view cell, use the following code. 
    316327 
    317328\begin{verbatim} 
     
    320331\end{verbatim} 
    321332 
    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} 
     333where {\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  
     335apply a PVS iterator, like in the following example. 
     336For the implementation in another engine, { \em Entity} from Ogre3D must be replaced by the 
     337target engine entities. 
     338 
     339\begin{verbatim} 
     340GtpVisibilityPreprocessor::ObjectPvsIterator pit =  
     341  currentViewCell->GetPvs().GetIterator(); 
     342                         
    327343while (pit.HasMoreEntries()) 
    328344{                
    329345  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; 
    342356                     
    343                     // do something      
    344                 }        
     357    // do something, e.g., set objects visible 
     358  }      
    345359} 
    346360 
    347361\end{verbatim} 
    348362 
    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. 
     1This is D:\texmf\MiKTeX\bin\makeindex.exe, version 2.14 [02-Oct-2002] (with Thai support). 
     2Scanning input file D:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.idx...done (0 entries accepted, 0 rejected). 
     3Nothing written in D:\svn\gametools\GTP\trunk\Lib\Vis\Preprocessing\manual\manual.ind. 
     4Transcript 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:51 
     1This is pdfeTeX, Version 3.141592-1.21a-2.2 (MiKTeX 2.4) (preloaded format=latex 2005.8.25)  31 JAN 2007 13:39 
    22entering extended mode 
    3 **manual.tex 
    4 (manual.tex 
     3**D:/svn/gametools/GTP/trunk/Lib/Vis/Preprocessing/manual/manual.tex 
     4(D:/svn/gametools/GTP/trunk/Lib/Vis/Preprocessing/manual/manual.tex 
    55LaTeX2e <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 
     6Babel <v3.8g> and hyphenation patterns for english, dumylang, nohyphenation, ge 
     7rman, ngerman, french, loaded. 
     8(D:\texmf\tex\latex\base\article.cls 
    89Document Class: article 2004/02/16 v1.4f Standard LaTeX document class 
    9 (C:\texmf\tex\latex\base\size10.clo 
     10(D:\texmf\tex\latex\base\size10.clo 
    1011File: size10.clo 2004/02/16 v1.4f Standard LaTeX file (size option) 
    1112) 
     
    2122\belowcaptionskip=\skip42 
    2223\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 
     25Package: times 2005/04/12 PSNFSS-v9.2a (SPQR)  
     26) 
     27(D:\texmf\tex\latex\ltxmisc\a4wide.sty 
    2628Package: a4wide 1994/08/30 
    27  
    28 (C:\texmf\tex\latex\ntgclass\a4.sty 
     29 (D:\texmf\tex\latex\ntgclass\a4.sty 
    2930Package: 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 
    3133Package: float 2001/11/08 v1.3d Float enhancements (AL) 
    3234\c@float@type=\count87 
     
    4547\symmathboldr=\mathgroup6 
    4648LaTeX Font Info:    Redeclaring math symbol \beta on input line 74. 
    47  (C:\texmf\tex\latex\thumbpdf\thumbpdf.sty 
    48 Package: thumbpdf 2004/11/19 v3.7 Inclusion of thumbnails (HO) 
    49  
    50  
    51 Package thumbpdf Warning: Missing driver name. 
    52  
    53 ) (C:\texmf\tex\latex\base\alltt.sty 
     49 (D:\texmf\tex\latex\thumbpdf\thumbpdf.sty 
     50Package: thumbpdf 2005/07/06 v3.8 Inclusion of thumbnails (HO) 
     51 
     52 
     53Package thumbpdf Warning: Thumbnail data file `manual.tpt' not found. 
     54 
     55) (D:\texmf\tex\latex\base\alltt.sty 
    5456Package: alltt 1997/06/16 v2.0g defines alltt environment 
    55 ) (C:\texmf\tex\latex\tools\hhline.sty 
     57) (D:\texmf\tex\latex\tools\hhline.sty 
    5658Package: hhline 1994/05/23 v2.03 Table rule package (DPC) 
    57 ) (multirow.sty 
     59) 
     60(multirow.sty 
    5861\bigstrutjot=\dimen103 
    59 ) 
    60 (C:\texmf\tex\latex\ltxmisc\url.sty 
     62) (D:\texmf\tex\latex\ltxmisc\url.sty 
    6163\Urlmuskip=\muskip10 
    62 Package: url 2004/03/15  ver 3.1  Verb mode for urls, etc. 
     64Package: url 2005/06/27  ver 3.2  Verb mode for urls, etc. 
    6365) (rotating.sty 
    6466Package: 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 
    6669Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) 
    6770 
    68 (C:\texmf\tex\latex\graphics\keyval.sty 
     71(D:\texmf\tex\latex\graphics\keyval.sty 
    6972Package: keyval 1999/03/16 v1.13 key=value parser (DPC) 
    7073\KV@toks@=\toks16 
    71 ) (C:\texmf\tex\latex\graphics\graphics.sty 
     74) 
     75(D:\texmf\tex\latex\graphics\graphics.sty 
    7276Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR) 
    73  (C:\texmf\tex\latex\graphics\trig.sty 
     77 (D:\texmf\tex\latex\graphics\trig.sty 
    7478Package: trig 1999/03/16 v1.09 sin cos tan (DPC) 
    75 ) (C:\texmf\tex\latex\00miktex\graphics.cfg 
     79) (D:\texmf\tex\latex\00miktex\graphics.cfg 
    7680File: graphics.cfg 2003/03/12 v1.1 MiKTeX 'graphics' configuration 
    7781) 
    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) 
     82Package graphics Info: Driver file: pdftex.def on input line 80. 
     83 
     84(D:\texmf\tex\latex\graphics\pdftex.def 
     85File: pdftex.def 2005/06/20 v0.03m graphics/color for pdftex 
     86\Gread@gobject=\count88 
    8187)) 
    8288\Gin@req@height=\dimen104 
    8389\Gin@req@width=\dimen105 
    84 ) 
    85 (C:\texmf\tex\latex\base\ifthen.sty 
     90) (D:\texmf\tex\latex\base\ifthen.sty 
    8691Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) 
    8792) 
    88 \c@r@tfl@t=\count88 
     93\c@r@tfl@t=\count89 
    8994\rot@float@box=\box28 
    9095) (ifpdf.sty) 
     
    110115LaTeX Font Info:    ... okay on input line 135. 
    111116LaTeX 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 
    113119File: 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 
     122loading : 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) 
     146loading : 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 
    114153) 
    115154LaTeX Font Info:    External font `cmex10' loaded for size 
     
    119158LaTeX Font Info:    External font `cmex10' loaded for size 
    120159(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) 
     160LaTeX Font Info:    Try loading font information for OML+cmbrm on input line 16 
     1614. 
     162 (D:\texmf\tex\latex\cmbright\omlcmbrm.fd 
     163File: omlcmbrm.fd 2005/04/13 v8.1 (WaS) 
    124164) 
    125165LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <14.4> not available 
    126166(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 167. 
    127  
    128 (manual.toc 
     167 (manual.toc 
    129168LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <10> not available 
    130169(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 1. 
    131170) 
    132 \tf@toc=\write4 
     171\tf@toc=\write5 
    133172 [1 
    134173 
    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 
     176LaTeX Font Info:    Try loading font information for OT1+pcr on input line 27. 
     177 (D:\texmf\tex\latex\psnfss\ot1pcr.fd 
    138178File: ot1pcr.fd 2001/06/04 font definitions for OT1/pcr. 
    139179) 
    140180LaTeX 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. 
     182LaTeX Font Info:    Try loading font information for OMS+ptm on input line 64. 
     183 
     184(D:\texmf\tex\latex\psnfss\omsptm.fd 
    144185File: omsptm.fd  
    145186) 
    146187LaTeX 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. 
    148189 [2 
    149190 
    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] 
     192Overfull \hbox (1.41376pt too wide) in paragraph at lines 176--176 
     193[]                                \OT1/pcr/m/n/10 IntersectableWrapper<EntityCo 
     194ntainer *>[]  
     195 [] 
     196 
     197 
     198Overfull \hbox (19.41376pt too wide) in paragraph at lines 176--176 
     199[]   \OT1/pcr/m/n/10 EngineIntersectable(EntityContainer *item): GtpVisibilityP 
     200reprocessor::[]  
     201 [] 
     202 
     203[4] 
     204Overfull \hbox (31.41376pt too wide) in paragraph at lines 260--260 
     205[]       \OT1/pcr/m/n/10 const GtpVisibilityPreprocessor::IndexedBoundingBoxCon 
     206tainer &iboxes,[]  
     207 [] 
     208 
     209 
     210Overfull \hbox (1.41376pt too wide) in paragraph at lines 260--260 
     211[]    \OT1/pcr/m/n/10 EngineIntersectable *entry = new EngineIntersectable(entr 
     212yObjects);[]  
     213 [] 
     214 
     215[5] 
     216Overfull \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 
     222Overfull \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 
     224eprocessor)[]  
     225 [] 
     226 
     227[6]) [7] (manual.aux (integration.aux)) )  
    166228Here 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 
     236PDF 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 
     2410.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 
     243onts\type1\urw\urwstd\utmr8a.pfb> 
     244Output written on manual.pdf (7 pages, 82161 bytes). 
  • GTP/trunk/Lib/Vis/Preprocessing/manual/manual.toc

    r2066 r2068  
    44\contentsline {section}{\numberline {4}Integration of Preprocessed Visibility}{2} 
    55\contentsline {subsection}{\numberline {4.1}Requirements}{2} 
    6 \contentsline {paragraph}{Bounding Box Converter}{3} 
     6\contentsline {paragraph}{BoundingBoxConverter}{3} 
    77\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.