Ignore:
Timestamp:
06/27/06 10:21:48 (18 years ago)
Author:
szirmay
Message:
 
Location:
GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreIlluminationManager.cpp

    r1055 r1062  
    102102        OgreFireRenderTechniqueFactory* fire = new OgreFireRenderTechniqueFactory(); 
    103103                addRenderTechniqueFactory(fire); 
     104        OgreHierarchicalParticleSystemTechniqueFactory* HPSF = new OgreHierarchicalParticleSystemTechniqueFactory(); 
     105                addRenderTechniqueFactory(HPSF); 
    104106} 
    105107 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreRenderable.cpp

    r1055 r1062  
    3535        parentParticleSystem = sys; 
    3636        updateBounds(); 
    37         name = billboardset->getName(); 
     37        name = sys->getName(); 
    3838} 
    3939 
     
    136136                 break; 
    137137         case OGRE_RENDERABLETYPE_BILLBOARDSET: 
    138                 billboardSetRenderable->getParentSceneNode()->_updateBounds(); 
     138                /* billboardSetRenderable->getParentSceneNode()->_updateBounds(); 
    139139                 boundingBox = billboardSetRenderable->getWorldBoundingBox(true); 
    140                  boundingSphere = billboardSetRenderable->getWorldBoundingSphere(true); 
     140                 boundingSphere = billboardSetRenderable->getWorldBoundingSphere(true);*/ 
     141                 parentParticleSystem->getParentSceneNode()->_updateBounds(); 
     142                 boundingBox = parentParticleSystem->getWorldBoundingBox(true); 
     143                 boundingSphere = parentParticleSystem->getWorldBoundingSphere(true); 
    141144                 break; 
    142145        default: 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreHierarchicalParticleSystemTechnique.cpp

    r1055 r1062  
    2424        this->childPSysScriptName = childPSysScriptName; 
    2525        this->impostorMaterialName = impostorMaterialName; 
    26                                                                                                                  
     26        this->useOwnMaterial = useOwnMaterial; 
     27         
     28        //create the Particle system 
     29        childPSysName = parentOgreRenderable->getName() + "_small_PSYS"; 
     30        ParticleSystem* psys = Root::getSingleton()._getCurrentSceneManager()->createParticleSystem(childPSysName, childPSysScriptName); 
     31        SceneNode* node = Root::getSingleton()._getCurrentSceneManager()->getRootSceneNode()->createChildSceneNode(); 
     32        node->attachObject(psys); 
     33        psys->setVisible(false); 
    2734         
    2835        if(sharedRuns->getRun(ILLUMRUN_HPP_IMPOSTOR) == 0) 
    2936                sharedRuns->addRun(ILLUMRUN_HPP_IMPOSTOR, createChildPSysRenderingRun());        
    3037 
    31         //create the Particle system 
    32         String name = parentOgreRenderable->getName() + "_small_PSYS"; 
    33         ParticleSystem* psys = Root::getSingleton()._getCurrentSceneManager()->createParticleSystem(name, childPSysScriptName); 
    34         SceneNode* node = Root::getSingleton()._getCurrentSceneManager()->getRootSceneNode()->createChildSceneNode(); 
    35         node->attachObject(psys); 
    36         psys->setVisible(false); 
     38        impostorChanged(sharedRuns->getRun(ILLUMRUN_HPP_IMPOSTOR)); 
    3739} 
    3840 
     
    4143{ 
    4244 
     45} 
     46 
     47void OgreHierarchicalParticleSystemTechnique::impostorChanged(RenderingRun* run) 
     48{ 
     49        OgreChildPSystemRenderingRun* r = (OgreChildPSystemRenderingRun*) run->asOgreRenderingRun(); 
     50        pass->getTextureUnitState(impostorTexID)->setTextureName(r->getImpostorTextureName()); 
    4351} 
    4452 
     
    178186} 
    179187 
     188 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreChildParticlesystemRenderingRun.cpp

    r1055 r1062  
    4747         RenderTarget* rt = hpb->getRenderTarget(); 
    4848         Viewport* v = rt->addViewport(impostorCamera); 
     49         v->setBackgroundColour(ColourValue(0,1,0,0)); 
    4950         v->setOverlaysEnabled(false); 
    5051         rt->setAutoUpdated(false); 
     
    6061        rq->clear(); 
    6162 
     63        sharedRuns->getRoot()->updateBounds(); 
    6264        Sphere boundSphere = ((OgreSharedRuns*)sharedRuns->getRoot(ILLUMRUN_HPP_IMPOSTOR))->getBoundingSphere(); 
    6365        Camera* mainCam = OgreIlluminationManager::getSingleton().getMainCamera(); 
     
    6567        Vector3 dir = boundSphere.getCenter() - mainCam->getPosition(); 
    6668        float r = boundSphere.getRadius(); 
     69        r = 200; 
    6770        float d = dir.normalise(); 
    6871        impostorCamera->setDirection(dir); 
     
    7275                impostorCamera->setProjectionType(PT_PERSPECTIVE); 
    7376                impostorCamera->setAspectRatio(1.0); 
    74                 Radian a = Math::ASin(r / d); 
    75                 impostorCamera->setFOVy(a * 2.0); 
    76                 impostorCamera->setNearClipDistance(std::max(0.01f, d - r)); 
    77                 impostorCamera->setFarClipDistance(r + d);               
     77                Radian a = Math::ASin(r / d) * 2.0; 
     78                impostorCamera->setFOVy(/*a*/ Radian(Degree(90))); 
     79                impostorCamera->setNearClipDistance(/*std::max(0.01f, d - r)*/0.1); 
     80                impostorCamera->setFarClipDistance(/*r + d*/1000);               
    7881        } 
    7982        else 
     
    100103        rt->update();    
    101104         
    102         /* 
    103                 static int framecount = 0; 
    104                 String filename = "photon"; 
    105                 filename.append(this->name); 
    106                 //filename.append(StringConverter::toString(framecount)); 
    107                 filename.append(".png"); 
    108                 rt->writeContentsToFile(filename); 
    109                 framecount++; 
    110         */ 
     105         
     106        static int framecount = 0; 
     107        String filename = "impostor"; 
     108        filename.append(this->name); 
     109        //filename.append(StringConverter::toString(framecount)); 
     110        filename.append(".dds"); 
     111        rt->writeContentsToFile(filename); 
     112        framecount++;    
    111113         
    112114        if(!useOwnMaterial) 
Note: See TracChangeset for help on using the changeset viewer.