Show
Ignore:
Timestamp:
03/25/10 12:11:35 (5 years ago)
Author:
robert
Message:

Introduced the use of linear interpolation of evelvations when sampling

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgTerrain/GeometryTechnique.cpp

    r11259 r11287  
    311311                Locator* locator = colorLayer->getLocator(); 
    312312                if (!locator) 
    313                 {             
     313                { 
    314314                    osgTerrain::SwitchLayer* switchLayer = dynamic_cast<osgTerrain::SwitchLayer*>(colorLayer); 
    315315                    if (switchLayer) 
     
    322322                        } 
    323323                    } 
    324                 }             
    325              
     324                } 
     325 
    326326                TexCoordLocatorPair& tclp = layerToTexCoordMap[colorLayer]; 
    327327                tclp.first = new osg::Vec2Array; 
     
    356356            unsigned int iv = j*numColumns + i; 
    357357            osg::Vec3d ndc( ((double)i)/(double)(numColumns-1), ((double)j)/(double)(numRows-1), 0.0); 
    358       
     358 
    359359            bool validValue = true; 
    360       
    361              
    362             unsigned int i_equiv = i_sampleFactor==1.0 ? i : (unsigned int) (double(i)*i_sampleFactor); 
    363             unsigned int j_equiv = i_sampleFactor==1.0 ? j : (unsigned int) (double(j)*j_sampleFactor); 
    364              
    365360            if (elevationLayer) 
    366361            { 
    367362                float value = 0.0f; 
    368                 validValue = elevationLayer->getValidValue(i_equiv,j_equiv, value); 
    369                 // OSG_INFO<<"i="<<i<<" j="<<j<<" z="<<value<<std::endl; 
     363                if (sampleRatio==1.0) validValue = elevationLayer->getValidValue(i,j,value); 
     364                else validValue = elevationLayer->getInterpolatedValidValue(ndc.x(), ndc.y(), value); 
    370365                ndc.z() = value*scaleHeight; 
    371366            } 
    372              
     367 
    373368            if (validValue) 
    374369            { 
    375370                indices[iv] = vertices->size(); 
    376              
     371 
    377372                osg::Vec3d model; 
    378373                masterLocator->convertLocalToModel(ndc, model); 
     
    417412        } 
    418413    } 
    419      
     414 
    420415    // populate primitive sets 
    421416//    bool optimizeOrientations = elevations!=0;