Changeset 70


Ignore:
Timestamp:
Jul 20, 2010, 9:24:42 PM (14 years ago)
Author:
Torben Dannhauer
Message:

sky silverlining vereinfacht.

Location:
osgVisual
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • osgVisual/bin/visual_master.bat

    r69 r70  
    1 osgVisual.exe -C center -m --window 950 50 600 350 D:/OpenSceneGraph/VPB-Testdatensatz/DB_Small/database.ive -p salzburg.path
     1osgVisual.exe --SingleThreaded -C center -m --window 950 50 600 350 D:/OpenSceneGraph/VPB-Testdatensatz/DB_Small/database.ive -p salzburg.path
  • osgVisual/bin/visual_slave.bat

    r69 r70  
    1 osgVisual.exe -C center -s --server localhost 12345 --window 950 450 600 350 D:/OpenSceneGraph/VPB-Testdatensatz/DB_Small/database.ive -p salzburg.path
     1osgVisual.exe --SingleThreaded -C center -s --server localhost 12345 --window 950 450 600 350 D:/OpenSceneGraph/VPB-Testdatensatz/DB_Small/database.ive -p salzburg.path
  • osgVisual/include/dataIO/dataIO_transportContainer.h

    r32 r70  
    3434                        frameID(tC_.frameID),
    3535                        viewMatrix(tC_.viewMatrix),
     36                        projectionMatrix(tC_.projectionMatrix),
    3637                        executer(tC_.executer),
    3738                        ioSlots(tC_.ioSlots){}
     
    4849        int frameID;
    4950        osg::Matrixd viewMatrix;
     51        osg::Matrixd projectionMatrix;
    5052        executerList executer;
    5153        slotList ioSlots;
     
    5860        void setViewMatrix(const osg::Matrixd& viewMatrix_){viewMatrix=viewMatrix_;}
    5961        const osg::Matrixd& getViewMatrix() const {return viewMatrix;}
     62
     63        void setProjectionMatrix(const osg::Matrixd& projectionMatrix_){projectionMatrix=projectionMatrix_;}
     64        const osg::Matrixd& getProjectionMatrix() const {return projectionMatrix;}
    6065
    6166        void setExecuter(const executerList& executer_) {executer=executer_;}
  • osgVisual/include/dataIO/visual_dataIO.h

    r65 r70  
    9090        osg::ref_ptr<dataIO_eventCallback> eventCallback;
    9191
    92 
    9392        class dataIO_finalDrawCallback : public osg::Camera::DrawCallback
    9493        {
  • osgVisual/include/sky_Silverlining/visual_skySilverLining.h

    r60 r70  
    9797
    9898        /**
    99          * \brief This function initializes the sky framework if it's used with the main camera (without any PRE_RENDER camera like the distortion module).
    100          *
    101          * @param sceneGraphRoot : osg::Group* which is the rootNode and coordinateSystemNode of the scene.
    102          */
    103         void init(osg::CoordinateSystemNode *sceneGraphRoot);
    104 
    105         /**
    10699         * \brief This function can be called by the updateCallback. If the postInitialization for adding clouds etc. has be called already, this function will skip.
    107100         *
  • osgVisual/src/cluster/dataIO_clusterENet.cpp

    r69 r70  
    125125                sendContainer->setFrameID(viewer->getFrameStamp()->getFrameNumber());
    126126                sendContainer->setViewMatrix(viewer->getCamera()->getViewMatrix());
     127                sendContainer->setProjectionMatrix(viewer->getCamera()->getProjectionMatrix());
    127128
    128129                // Writing node to stream
     
    134135                        {
    135136                                // Send Data via ENet:
    136                                 OSG_NOTIFY( osg::ALWAYS ) << "dataIO_clusterUDP::sendTO_OBJvaluesToSlaves() - Bytes to send: " << myOstream.str().length() << std::endl;
    137                                 //sOSG_NOTIFY( osg::ALWAYS ) << "Send: " << myOstream.str() << std::endl;
     137                                //OSG_NOTIFY( osg::ALWAYS ) << "dataIO_clusterUDP::sendTO_OBJvaluesToSlaves() - Bytes to send: " << myOstream.str().length() << std::endl;
     138                                //OSG_NOTIFY( osg::ALWAYS ) << "Send: " << myOstream.str() << std::endl;
    138139                                ENetPacket * packet = enet_packet_create (myOstream.str().c_str(),
    139140                                                                                                  myOstream.str().size(),
     
    163164        if (bytes_received > 0 )
    164165        {
    165                 OSG_NOTIFY( osg::ALWAYS ) << "dataIO_clusterENet::readTO_OBJvaluesFromMaster() - Bytes received: " << bytes_received << std::endl;
     166                //OSG_NOTIFY( osg::ALWAYS ) << "dataIO_clusterENet::readTO_OBJvaluesFromMaster() - Bytes received: " << bytes_received << std::endl;
    166167                //OSG_NOTIFY( osg::ALWAYS ) << "Received: " << std::endl << receivedTransportContainer << std::endl;
    167168
     
    177178                                if (sendContainer)
    178179                                {
    179                                         OSG_NOTIFY( osg::ALWAYS ) << "Received::FrameID is: " << sendContainer->getFrameID() << std::endl;
    180                                         // Restore Viewmatrix
     180                                        OSG_NOTIFY( osg::ALWAYS ) << "Received:: Settings Viewmatrix...FrameID is: " << sendContainer->getFrameID() << std::endl;
     181                                        // Restore Viewmatrix / Projectionmatrix 
    181182                                        viewer->getCamera()->setViewMatrix(sendContainer->getViewMatrix());
     183                                        //viewer->getCamera()->setProjectionMatrix(sendContainer->getProjectionMatrix());
    182184                                }
    183185                                else
  • osgVisual/src/core/visual_core.cpp

    r69 r70  
    8282        #else
    8383                OSG_NOTIFY( osg::ALWAYS ) << "Using Sky without distortion." << std::endl;
    84                 sky->init(rootNode);
     84                sky->init(NULL, rootNode);
    8585        #endif
    8686#endif
     
    111111                // next frame please....
    112112        viewer->advance();
     113                std::cout << "New frame----------------------------" << std::endl;
    113114
    114115                /*double hat, hot, lat, lon, height;
     
    117118                        OSG_NOTIFY( osg::ALWAYS ) << "HOT is: " << hot << ", HAT is: " << hat << std::endl;*/
    118119       
     120                // perform all queued events
     121                viewer->eventTraversal();
     122
    119123                // update the scene by traversing it with the the update visitor which will
    120124        // call all node update callbacks and animations.
    121         viewer->eventTraversal();
     125       
    122126        viewer->updateTraversal();
    123127               
  • osgVisual/src/dataIO/dataIO_transportContainer.cpp

    r31 r70  
    2727        ADD_INT_SERIALIZER( FrameID, 0 );
    2828        ADD_MATRIXD_SERIALIZER( ViewMatrix, osg::Matrixd() );
     29        ADD_MATRIXD_SERIALIZER( ProjectionMatrix, osg::Matrixd() );
    2930        ADD_LIST_SERIALIZER( Executer, osgVisual::dataIO_transportContainer::executerList );
    3031        ADD_LIST_SERIALIZER( IOSlots, osgVisual::dataIO_transportContainer::slotList );
  • osgVisual/src/dataIO/visual_dataIO.cpp

    r69 r70  
    103103        viewer->getCamera()->setFinalDrawCallback( finalDrawCallback );
    104104
    105 
    106105        initialized = true;
    107106}
     
    113112                OSG_NOTIFY( osg::ALWAYS ) << "Shutdown visual_dataIO..." << std::endl;
    114113
    115                 viewer->getCamera()->removeEventCallback( NULL );
     114                viewer->getCamera()->removeEventCallback( eventCallback );
    116115                eventCallback = NULL;
    117116                viewer->getCamera()->setFinalDrawCallback( NULL );
    118117                finalDrawCallback = NULL;
     118               
    119119                viewer = NULL;
     120               
    120121
    121122                if(cluster.valid())
  • osgVisual/src/distortion/visual_distortion.cpp

    r31 r70  
    162162{
    163163        // Copy Main Camera's matrixes to the PRE_RENDER Camera.
     164        std::cout << "distortion updatecallback" << std::endl;
    164165        sceneCamera->setViewMatrix( viewer->getCamera()->getViewMatrix() );
    165166        sceneCamera->setProjectionMatrix( viewer->getCamera()->getProjectionMatrix() );
  • osgVisual/src/sky_Silverlining/visual_skySilverLining.cpp

    r64 r70  
    4141void visual_skySilverLining::skyUpdateCallback::operator()(osg::Node* node, osg::NodeVisitor* nv)
    4242{
     43        std::cout << "Sky silverlining update callback" << std::endl;
    4344        // Check if atmosphere is initialized.
    4445        if (!sky->isInitialized())
     
    166167        skyDrawable = new skySilverLining_skyDrawable(viewer, sceneRoot);
    167168
     169        if(distortedRoot)       // if distortion used:
     170        {
     171                int rootKids = distortedRoot->getNumChildren();
     172                for (int i = 0; i < rootKids; i++)
     173                {
     174                        osg::Node *n = distortedRoot->getChild(i);
     175                        osg::Camera *cam = dynamic_cast<osg::Camera*>(n);
     176                        if (cam && cam->getRenderOrder() == osg::Camera::PRE_RENDER)
     177                                sceneCamera = cam;
     178                }
     179        }
     180        else    // if no distortion used:
     181                sceneCamera = viewer->getCamera();
     182
    168183        osg::Camera *mainCamera = viewer->getCamera();
    169184        if (!useProjMatrixCallback)
     
    175190                mainCamera->setProjectionMatrixAsPerspective(fovy, aspect, 2, 125000);
    176191        }
    177 
    178     int rootKids = distortedRoot->getNumChildren();
    179     for (int i = 0; i < rootKids; i++)
    180     {
    181         osg::Node *n = distortedRoot->getChild(i);
    182         osg::Camera *cam = dynamic_cast<osg::Camera*>(n);
    183         if (cam)
    184         {
    185             if (cam->getRenderOrder() == osg::Camera::PRE_RENDER)
    186             {
    187                 cam->setClearMask(0);
    188 
    189                 osg::ref_ptr<skySilverLining_atmosphereReference> ar = new skySilverLining_atmosphereReference;
    190                                 ar->atmosphere = atmosphere;
    191                 cam->setUserData(ar);
    192                                 mainCamera->setUserData(ar);
    193                                 sceneCamera = cam;
    194 
    195                                 if (useProjMatrixCallback)
    196                                 {
    197                                         skySilverLining_projectionMatrixCallback *cb = new skySilverLining_projectionMatrixCallback( atmosphere, viewer->getCamera(), sceneRoot);
    198                                         cam->setClampProjectionMatrixCallback(cb);
    199                                         cb->setSkyDrawable(skyDrawable);
    200                                 }
    201             }
    202         }
    203     }
    204 
    205         // Create and install updateCallback (for position etc.)
    206         updateCallback = new skyUpdateCallback( sceneGraphRoot, sceneCamera, this );
    207         this->setUpdateCallback( updateCallback );
    208 
    209     // Use a RenderBin to enforce that the sky gets drawn first, then the scene, then the clouds
    210         skyDrawable->getOrCreateStateSet()->setRenderBinDetails(-1, "RenderBin");
    211 
    212     // Add the models
    213     sceneGraphRoot->getOrCreateStateSet()->setRenderBinDetails(1, "RenderBin");
    214 
    215     // Add the clouds (note, you need this even if you don't want clouds - it calls
    216     // Atmosphere::EndFrame() )
    217         cloudsDrawable = new skySilverLining_cloudsDrawable(viewer);
    218         cloudsDrawable->getOrCreateStateSet()->setRenderBinDetails(99, "RenderBin");
    219 
    220         // Add drawable to this geode to get rendered
    221         this->addDrawable(skyDrawable);
    222         this->addDrawable(cloudsDrawable);
    223 }
    224 
    225 void visual_skySilverLining::init(osg::CoordinateSystemNode *sceneGraphRoot)
    226 {
    227         sceneRoot = sceneGraphRoot;
    228 
    229         // Use projection matrix callback oder fixed Cullsettings?
    230         bool useProjMatrixCallback = true;
    231 
    232         // add Sky to SceneRoot
    233         sceneGraphRoot->addChild( this );
    234 
    235         // Deactivate culling for the sky node (required by the silverlining sky framework)
    236         this->setCullingActive(false);
    237 
    238         // Instantiate an Atmosphere and associate it with this camera. If you have multiple cameras
    239         // in multiple contexts, be sure to instantiate seperate Atmosphere objects for each.
    240     // ***IMPORTANT!**** Check that the path to the resources folder for SilverLining in SkyDrawable.cpp
    241     // SkyDrawable::initializeSilverLining matches with where you installed SilverLining.
    242         atmosphere = new SilverLining::Atmosphere(SILVERLINING_LICENSEE, SILVERLINING_LICENSE);
    243        
    244     // Add the sky (calls Atmosphere::BeginFrame and handles initialization once you're in
    245     // the rendering thread)
    246         skyDrawable = new skySilverLining_skyDrawable(viewer, sceneRoot);
    247  
    248         if (!useProjMatrixCallback)
    249         {
    250                 viewer->getCamera()->setClearMask(0);
    251                 viewer->getCamera()->setComputeNearFarMode(osg::CullSettings::DO_NOT_COMPUTE_NEAR_FAR);
    252                 double fovy, aspect, zNear, zFar;
    253                 viewer->getCamera()->getProjectionMatrixAsPerspective(fovy, aspect, zNear, zFar);
    254                 viewer->getCamera()->setProjectionMatrixAsPerspective(fovy, aspect, 2, 125000);
    255         }
    256192        else
    257193        {
    258194                cb = new skySilverLining_projectionMatrixCallback( atmosphere, viewer->getCamera(), sceneRoot);
    259                 viewer->getCamera()->setClampProjectionMatrixCallback(cb);
     195                sceneCamera->setClampProjectionMatrixCallback(cb);
    260196                cb->setSkyDrawable(skyDrawable);
    261197        }
    262198
    263 
    264     viewer->getCamera()->setClearMask(0);
    265 
    266     osg::ref_ptr<skySilverLining_atmosphereReference> ar = new skySilverLining_atmosphereReference;
     199        // append atmosphere pointer to the cameras.
     200        sceneCamera->setClearMask(0);
     201        osg::ref_ptr<skySilverLining_atmosphereReference> ar = new skySilverLining_atmosphereReference;
    267202        ar->atmosphere = atmosphere;
    268     viewer->getCamera()->setUserData(ar);
    269         sceneCamera = viewer->getCamera();
    270 
    271        
     203        sceneCamera->setUserData(ar);
     204        mainCamera->setUserData(ar);
     205
    272206        // Create and install updateCallback (for position etc.)
    273207        updateCallback = new skyUpdateCallback( sceneGraphRoot, sceneCamera, this );
Note: See TracChangeset for help on using the changeset viewer.