Changeset 8429

Show
Ignore:
Timestamp:
06/12/08 17:56:03
Author:
robert
Message:

Updated viewer presentation

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • OpenSceneGraph-TrainingMaterials/trunk/Presentations/Viewers/osgViewer.p3d

    r8235 r8429  
    7070Make your lives easier 
    7171 
    72 But... the real reason... 
     72And in doin so... the real reason... 
    7373 
    7474     MAKE MY LIFE EASIER 
     
    7777</page> 
    7878 
     79<!-- 
     80 
    7981<page inherit="middle" title="Previous viewer classes - SceneView"> 
    8082osgUtil::SceneView  - "A View onto a Scene": 
     
    162164-ve Producer + osgProducer Maintaince nightmare. 
    163165</page> 
     166--> 
    164167 
    165168<page inherit="middle" title="osgViewer"> 
    166169Goals: 
     170  
    167171    Extensible windowing toolkit support, Qt, WxWindows etc. 
    168172     
     
    172176     
    173177    Support distortion correction as part of the viewer 
    174  
     178  
    175179    Unify the RTT Camera and viewer Camera classes 
    176180     
    177181    Unify the concepts: 
    178182        Viewer "has a" Camera NOT Viewer "is a" Camera 
    179         Camera only takes a picture, in a viewer or in a scene 
     183        Camera only takes a picture, in a viewer or in 
     184        a scene 
    180185     
    181186    Make it easier: 
    182187        To integrate OpenSceneGraph with existing apps 
    183188        To handle mulitple views and multiple scene graphs 
    184         To maintain - now just 11,000 lines of code 
     189        To maintain - now just 11,000 lines of code vs 
     190        previous 27,000 lines in Producer+osgProducer 
     191</page> 
     192 
     193<page inherit="middle" title="Basic viewer setup"> 
     194  
     195osgViewer::Viewer viewer; 
     196  
     197viewer.setSceneData(myData) 
     198 
     199viewer.run(); 
     200</page> 
     201 
     202<page inherit="middle" title="Viewer frame loop"> 
     203  
     204osgViewer::Viewer viewer; 
     205  
     206viewer.setSceneData(myData) 
     207 
     208viewer.setCameraManipulator(new osgGA::TrackballManipulator); 
     209 
     210viewer.realize(); 
     211  
     212while(!viewer.done) 
     213
     214   viewer.frame(); 
     215
     216</page> 
     217 
     218<page inherit="middle" title="Viewer expanded frame loop"> 
     219  
     220osgViewer::Viewer viewer; 
     221  
     222viewer.setSceneData(myData) 
     223  
     224viewer.realize(); 
     225  
     226while(!viewer.done) 
     227
     228   viewer.advance(); 
     229   viewer.eventTraveral(); 
     230   viewer.updateTraversal(); 
     231  
     232   // compute view matrix myViewMatrix  
     233   // ... 
     234   // then apply   
     235   viewer.getCamera()->setViewMatrix(myViewMatrix); 
     236  
     237   viewer.renderingTraversals(); 
     238
    185239</page> 
    186240 
     
    214268osgViewer::Viewer 
    215269 
    216 osgViewer::CompisiteViewer 
     270osgViewer::CompositeViewer 
    217271</page> 
    218272 
     
    275329 
    276330Sets up theading: 
    277  
     331  
    278332   SingleThreaded 
    279333   CullDrawThreadPerContext 
     
    303357 
    304358Sets up theading (Same as Viewer): 
    305  
     359  
    306360   SingleThreaded 
    307361   CullDrawThreadPerContext 
     
    325379</page> 
    326380 
     381<page inherit="middle" title="Viewer Threading"> 
     382 
     383Main thread: 
     384  
     385   advance() 
     386   eventTraveral(); 
     387   updateTraveral(); 
     388   renderingTraveral(); // sync's with rendering threads 
     389  
     390    
     391Rendering threads: 
     392  
     393   SingleThreaded - main thread does cull and draw dispatch 
     394    
     395   CullDrawThreadPerContext - thread per context does  
     396   cull and draw dispatch 
     397  
     398   DrawThreadPerContext - main thread does culls and  
     399   thread per context does draw dispatch  
     400  
     401   CullThreadPerCameraDrawThreadPerContext -   
     402   thread per camera for cull,  
     403   thread per context for doing draw dispatch 
     404  
     405  
     406See white board for diagrams!! 
     407</page> 
     408 
    327409<page inherit="end" title="Conclusions"> 
    328410Delivers on goal of unification of concepts and classes