From 82b02fdceb402516665eba6780ac3b924ca12055 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 30 Mar 2004 19:15:03 +0000 Subject: [PATCH] Added debugging for detecting problems in boundary equalization --- src/osgTerrain/DataSet.cpp | 75 +++++++++++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 14 deletions(-) diff --git a/src/osgTerrain/DataSet.cpp b/src/osgTerrain/DataSet.cpp index 677fbffee..eca378c09 100644 --- a/src/osgTerrain/DataSet.cpp +++ b/src/osgTerrain/DataSet.cpp @@ -1296,6 +1296,16 @@ void DataSet::DestinationTile::setNeighbours(DestinationTile* left, DestinationT _neighbour[ABOVE] = above; _neighbour[ABOVE_LEFT] = above_left; + + std::cout<<"LEFT="<<_neighbour[LEFT]<"; + } +} + void DataSet::DestinationTile::equalizeEdge(Position position) { // don't need to equalize if already done. - if (_equalized[position]) return; + //if (_equalized[position]) return; DestinationTile* tile2 = _neighbour[position]; Position position2 = (Position)((position+4)%NUMBER_OF_POSITIONS); @@ -1521,12 +1543,17 @@ void DataSet::DestinationTile::equalizeEdge(Position position) osg::Image* image1 = _imagery.valid()?_imagery->_image.get():0; osg::Image* image2 = tile2->_imagery.valid()?tile2->_imagery->_image.get():0; + std::cout<<"Equalizing edge "<getPixelFormat()==image2->getPixelFormat() && image1->getDataType()==image2->getDataType() && image1->getPixelFormat()==GL_RGB && image1->getDataType()==GL_UNSIGNED_BYTE) { + + std::cout<<" Equalizing image"<data(image2->s()-1,1); // RIGHT hand side delta2 = image2->getRowSizeInBytes(); num = (image1->t()==image2->t())?image2->t()-2:0; // note miss out corners. + std::cout<<" left "<data(1,0); // BELOW hand side @@ -1548,22 +1576,26 @@ void DataSet::DestinationTile::equalizeEdge(Position position) data2 = image2->data(1,image2->t()-1); // ABOVE hand side delta2 = 3; num = (image1->s()==image2->s())?image2->s()-2:0; // note miss out corners. + std::cout<<" below "<data(image2->s()-1,1); // LEFT hand side + data1 = image1->data(image1->s()-1,1); // LEFT hand side delta1 = image1->getRowSizeInBytes(); data2 = image2->data(0,1); // RIGHT hand side delta2 = image2->getRowSizeInBytes(); num = (image1->t()==image2->t())?image2->t()-2:0; // note miss out corners. + std::cout<<" right "<data(1,image2->t()-1); // ABOVE hand side + data1 = image1->data(1,image1->t()-1); // ABOVE hand side delta1 = 3; data2 = image2->data(1,0); // BELOW hand side delta2 = 3; num = (image1->s()==image2->s())?image2->s()-2:0; // note miss out corners. + std::cout<<" above "<getHeight(0,1)); // LEFT hand side delta1 = heightField1->getNumColumns(); - data2 = &(heightField2->getHeight(heightField2->getNumColumns()-1,1)); // LEFT hand side + data2 = &(heightField2->getHeight(heightField2->getNumColumns()-1,1)); // RIGHT hand side delta2 = heightField2->getNumColumns(); num = (heightField1->getNumRows()==heightField2->getNumRows())?heightField1->getNumRows()-2:0; // note miss out corners. break; @@ -1636,6 +1683,8 @@ void DataSet::DestinationTile::equalizeEdge(Position position) { float z = (*data1 + *data2)/2.0f; + //std::cout<<" equalizing height"<_image->setFileName(imageName.c_str()); - //std::cout<<"Writing out imagery to "<_image,_imagery->_image->getFileName().c_str()); + std::cout<<"Writing out imagery to "<_image,_imagery->_image->getFileName().c_str()); osg::StateSet* stateset = geode->getOrCreateStateSet(); osg::Texture2D* texture = new osg::Texture2D(_imagery->_image.get()); @@ -1854,8 +1903,8 @@ osg::Geometry* DataSet::DestinationTile::createDrawablePolygonal() if (n) (*n)[vi] = grid->getNormal(c,r); - t[vi].x() = (float)(c)/(float)(numColumns); - t[vi].y() = (float)(r)/(float)(numRows); + t[vi].x() = (c==numColumns-1)? 1.0f : (float)(c)/(float)(numColumns-1); + t[vi].y() = (r==numRows-1)? 1.0f : (float)(r)/(float)(numRows-1); ++vi; } @@ -1962,8 +2011,10 @@ osg::Geometry* DataSet::DestinationTile::createDrawablePolygonal() skirtDrawElements[ei++] = firstSkirtVertexIndex; } +#if 0 osgUtil::TriStripVisitor tsv; tsv.stripify(*geometry); +#endif return geometry; } @@ -2775,7 +2826,6 @@ void DataSet::updateSourcesForDestinationGraphNeeds() } -#if 1 // do standardisation of coordinates systems. // do any reprojection if required. { @@ -2794,7 +2844,6 @@ void DataSet::updateSourcesForDestinationGraphNeeds() } } } -#endif // do sampling of data to required values. { @@ -2957,8 +3006,6 @@ void DataSet::_emptyRow(Row& row) } } - - }