Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 12, 2010, 3:48:24 PM (15 years ago)
Author:
kolibri7
Message:

implementing the XMLPort function for LoD; getting some erreors from gcc…

Location:
code/branches/lod/src/orxonox/graphics
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/lod/src/orxonox/graphics/CMakeLists.txt

    r5929 r6691  
    44  FadingBillboard.cc
    55  GlobalShader.cc
     6  MeshLodInformation.cc
    67  Model.cc
    78  ParticleEmitter.cc
  • code/branches/lod/src/orxonox/graphics/Model.cc

    r5781 r6691  
    5858    {
    5959        SUPER(Model, XMLPort, xmlelement, mode);
    60 
     60               
     61                //LoD
     62        XMLPortParam(Model, "lodLevel", setLodLevel, getLodLevel, xmlelement, mode).defaultValues(5);
     63               
    6164        XMLPortParam(Model, "mesh", setMeshSource, getMeshSource, xmlelement, mode);
    6265        XMLPortParam(Model, "shadow", setCastShadows, getCastShadows, xmlelement, mode).defaultValues(true);
     
    7578            if (this->mesh_.getEntity())
    7679                this->detachOgreObject(this->mesh_.getEntity());
    77 
     80           
    7881            this->mesh_.setMeshSource(this->getScene()->getSceneManager(), this->meshSrc_);
    7982
     
    8386                this->mesh_.getEntity()->setCastShadows(this->bCastShadows_);
    8487                this->mesh_.setVisible(this->isVisible());
     88               
     89                //LOD
     90                if(this->mesh_.getEntity()->getMesh()->getNumLodLevels()==1
     91                    &&this->meshSrc_!="laserbeam.mesh"
     92                    &&this->lodLevel_!=0)
     93                {
     94                    float scaleFactor = this->getScale();
     95                    COUT(0) << this->meshSrc_<< " lodLevel_: " << this->lodLevel_ <<" scale: "<< scaleFactor << std::endl;
     96                    //Für Asteroiden perfekt
     97
     98#if OGRE_VERSION >= 0x010700
     99                    Ogre::Mesh::LodValueList distList;
     100#else
     101                    Ogre::Mesh::LodDistanceList distList;
     102#endif
     103
     104                    distList.push_back(70.0f*scaleFactor);
     105                    distList.push_back(140.0f*scaleFactor);
     106                    distList.push_back(170.0f*scaleFactor);
     107                    distList.push_back(200.0f*scaleFactor);
     108                    distList.push_back(230.0f*scaleFactor);
     109                    distList.push_back(250.0f*scaleFactor);
     110                    distList.push_back(270.0f*scaleFactor);
     111                    distList.push_back(290.0f*scaleFactor);
     112                    distList.push_back(310.0f*scaleFactor);
     113                    distList.push_back(330.0f*scaleFactor);
     114
     115                    float reductionValue = 0.2f;
     116
     117                   
     118                    //Generiert LOD-Levels
     119                    this->mesh_.getEntity()->getMesh()->generateLodLevels(distList, Ogre::ProgressiveMesh::VRQ_PROPORTIONAL, reductionValue);
     120                }
    85121            }
    86122        }
  • code/branches/lod/src/orxonox/graphics/Model.h

    r5781 r6691  
    6161            inline bool getCastShadows() const
    6262                { return this->bCastShadows_; }
    63 
     63                               
    6464        private:
    6565            void changedMesh();
    6666            void changedShadows();
     67                       
     68                        //LoD
     69                        inline void setLodLevel(unsigned short lodLevel)
     70                                { this->lodLevel_ =  lodLevel; }
     71                        inline unsigned short getLodLevel() const
     72                                { return this->lodLevel_; }
    6773
    6874            std::string meshSrc_;
    6975            Mesh mesh_;
    7076            bool bCastShadows_;
     77                       
     78                        //LoD
     79                        unsigned short lodLevel_;
    7180    };
    7281}
Note: See TracChangeset for help on using the changeset viewer.