Hi Robert,
With the version in the svn it works as expected.

thank you
Cedric

Robert Osfield wrote:
> Hi Cedric,
>
> Thanks for the data, I've now been able to recreate the problem you've
> seen using:
>
>    osgviewer --dem dtm_200m.tif.gdal lines.shp
>
> And have reviewed your changes, but decided to rewrite the setup of
> the HeightField coordinates so that it works correctly and supports
> rotation of the data in the GDAL geotransform includes it.  The above
> now works just fine too.  This is now checked into SVN.
>
> Could you check out svn and let me know if things are working fine at
> your end as well.
>
> Robert.
>
> On Dec 12, 2007 10:30 AM, Cedric Pinson <[EMAIL PROTECTED]> wrote:
>   
>> Hi Robert,
>>
>> Here two files that must be at the same locations. the dtm.tif is loaded
>> with the plugin gdal and lines.shp is loaded with the standard
>> plugin.
>>
>> Cheers Cedric
>>
>>
>>     
>>> Thanks for explanation.  The invert of the data is to go from GDAL
>>> default of top left orign, to bottom left origin that OpenGL/OSG use.
>>>
>>> Could you send me the data you had problems with an I'll have a bash
>>> at reproducing the problem at my end.
>>>
>>> Robert.
>>>
>>> On Dec 11, 2007 3:16 PM, Cedric Pinson <[EMAIL PROTECTED]> wrote:
>>>
>>>       
>>>> I read the georeferenced tiff with this plugin it return me an
>>>> osg::HeightField
>>>> then i use it like that:
>>>>
>>>>   osg::ref_ptr<osg::ShapeDrawable> shape = new
>>>> osg::ShapeDrawable(heightField);
>>>>   {
>>>>   MyTriangulatorForDisplay triangulator;
>>>>   shape->accept(triangulator);
>>>>   triangulator.postProcess();
>>>>   _geometry = triangulator._geometry;
>>>>   }
>>>>
>>>> so the i passe in void PrimitiveShapeVisitor::apply(const HeightField&
>>>> field) that call my functor below.
>>>> It's ok for that just the result is not what it should be i mean
>>>> vertexes position are not where they would be.
>>>>  From the gdal documentation http://www.gdal.org/gdal_tutorial.html
>>>>
>>>>     adfGeoTransform[0] /* top left x */
>>>>     adfGeoTransform[1] /* w-e pixel resolution */
>>>>     adfGeoTransform[2] /* rotation, 0 if image is "north up" */
>>>>     adfGeoTransform[3] /* top left y */
>>>>     adfGeoTransform[4] /* rotation, 0 if image is "north up" */
>>>>     adfGeoTransform[5] /* n-s pixel resolution */
>>>>
>>>> and in the original plugin at line 679 there is TopLeft[1] =
>>>> geoTransform[1]; so it's not the good index it should be geoTransform[3];
>>>> because geoTransform[1] is the w-e pixel resolution. So i just fixed the
>>>> topLeft position.
>>>>
>>>> Then the other fix is the setOrigin . the original version switch the
>>>> corner of the origin, i think it was done to have the computation of
>>>> normal and the triangle in counter clockwize. But it does not work, i
>>>> imagine it works for special case because value from TopLeft are bad and
>>>> other value are computed with it.
>>>>
>>>> hf->setOrigin(osg::Vec3(BottomLeft[0],-BottomLeft[1],0));
>>>>
>>>>
>>>> So i change it to have the good origin (top left x, and bottom left y),
>>>> and the pixel delta are taken from the georeference data but i change
>>>> the sign of y pixel delta because the corner is not on the top but on
>>>> the bottom to have triangle in counter clockwize. (the -100 in my
>>>> version is a mistake from a test, it should be 0)
>>>>
>>>> hf->setOrigin(osg::Vec3(TopLeft[0],BottomLeft[1],-100));
>>>> hf->setXInterval(geoTransform[1]); the pixel in x
>>>> hf->setYInterval(-geoTransform[5]); the pixel in y
>>>>
>>>> and the x, y interval are taken from the geotransform.
>>>>
>>>> I imagine the original version worked but not for a georeferenced tiff
>>>> in a arbitrary location. I can't send you the data i used to test. I
>>>> hope there is enough
>>>> explanation. I dont if the other part work or not i used only
>>>> readHeightField.
>>>>
>>>>
>>>> cheers
>>>>
>>>> struct MyFunctor {
>>>>       // do nothing
>>>>     void operator ()(const osg::Vec3& v1, const osg::Vec3& v2, const
>>>> osg::Vec3& v3, bool treatVertexDataAsTemporary) {
>>>>     }
>>>>   };
>>>> struct MyTriangulatorForDisplay : osg::TriangleFunctor<MyFunctor>
>>>>   {
>>>>     osg::ref_ptr<osg::Geometry> _geometry;
>>>>     osg::ref_ptr<osg::Vec3Array> _vertexes;
>>>>
>>>>     MyTriangulatorForDisplay() {
>>>>       _vertexes = new osg::Vec3Array;
>>>>       _geometry = new osg::Geometry;
>>>>       _geometry->setVertexArray(_vertexes.get());
>>>>     }
>>>>     void drawArrays(GLenum mode,GLint first,GLsizei count) {
>>>>       osg::DrawArrays* primitive = new osg::DrawArrays(mode,
>>>> _vertexes->size()+first, count);
>>>>       _vertexes->insert(_vertexes->end(), _vertexCache.begin(),
>>>> _vertexCache.end());
>>>>       _geometry->addPrimitiveSet(primitive);
>>>>     }
>>>>     void postProcess();
>>>>
>>>>   };
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Robert Osfield wrote:
>>>>
>>>>         
>>>>> HI Cedric,
>>>>>
>>>>> Could you provide work flow which illustrates the problem you've seen
>>>>> so I can recreate at me end.
>>>>>
>>>>> I don't believe your changes are wholly appropriate, and perhaps miss
>>>>> the point of the some of the code, this code might be buggy... but
>>>>> does have a purpose.
>>>>>
>>>>> Cheers,
>>>>> Robert.
>>>>>
>>>>> On Dec 8, 2007 2:36 PM, Cedric Pinson <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> Hi Robert,
>>>>>> Here a patch for gdal reader, it did not take the georeference
>>>>>> correctly. I added a diff to show you the difference. with my fix it
>>>>>> works as expected for a tiff georeferenced.
>>>>>>
>>>>>>
>>>>>> diff for info:
>>>>>> 0a1,9
>>>>>>  > /**
>>>>>>  >  * Who is the original author ???
>>>>>>  >  *
>>>>>>  >  *
>>>>>>  >  * Modified (2007)
>>>>>>  >  *
>>>>>>  >  *  Authors:
>>>>>>  >  *  Cedric Pinson <[EMAIL PROTECTED]>
>>>>>>  >  */
>>>>>> 666c675
>>>>>> <             TopLeft[1] = geoTransform[1];
>>>>>> ---
>>>>>>  >             TopLeft[1] = geoTransform[3];
>>>>>> 736c745
>>>>>> <
>>>>>> ---
>>>>>>  >
>>>>>> 738,739c747,748
>>>>>> <                         osg::notify(osg::INFO)<<"flipping"<<std::endl;
>>>>>> <                         unsigned int copy_r = hf->getNumRows()-1;
>>>>>> ---
>>>>>>  >                 osg::notify(osg::INFO)<<"flipping"<<std::endl;
>>>>>>  >                 unsigned int copy_r = hf->getNumRows()-1;
>>>>>> 742,751c751,760
>>>>>> <                     for(unsigned int c=0;c<hf->getNumColumns();++c)
>>>>>> <                     {
>>>>>> <                         float temp = hf->getHeight(c,r);
>>>>>> <                         hf->setHeight(c,r,hf->getHeight(c,copy_r));
>>>>>> <                         hf->setHeight(c,copy_r,temp);
>>>>>> <                     }
>>>>>> <                 }
>>>>>> <                 
>>>>>> hf->setOrigin(osg::Vec3(BottomLeft[0],-BottomLeft[1],0));
>>>>>> <
>>>>>> hf->setXInterval((BottomRight[0]-BottomLeft[0])/destWidth);
>>>>>> <                 
>>>>>> hf->setYInterval((TopLeft[1]-BottomLeft[1])/destHeight);
>>>>>> ---
>>>>>>  >                      for(unsigned int c=0;c<hf->getNumColumns();++c)
>>>>>>  >                      {
>>>>>>  >                          float temp = hf->getHeight(c,r);
>>>>>>  >                          hf->setHeight(c,r,hf->getHeight(c,copy_r));
>>>>>>  >                          hf->setHeight(c,copy_r,temp);
>>>>>>  >                      }
>>>>>>  >                 }
>>>>>>  >                 
>>>>>> hf->setOrigin(osg::Vec3(TopLeft[0],BottomLeft[1],-100));
>>>>>>  >                 hf->setXInterval(geoTransform[1]);
>>>>>>  >                 hf->setYInterval(-geoTransform[5]);
>>>>>>
>>>>>> Cheers
>>>>>>
>>>>>> --
>>>>>> +33 (0) 6 63 20 03 56  Cedric Pinson mailto:[EMAIL PROTECTED] 
>>>>>> http://www.plopbyte.net
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> osg-submissions mailing list
>>>>>> [email protected]
>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>> _______________________________________________
>>>>> osg-submissions mailing list
>>>>> [email protected]
>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>>>>
>>>>>
>>>>>           
>>>> --
>>>>
>>>> +33 (0) 6 63 20 03 56  Cedric Pinson mailto:[EMAIL PROTECTED] 
>>>> http://www.plopbyte.net
>>>>
>>>>
>>>> _______________________________________________
>>>> osg-submissions mailing list
>>>> [email protected]
>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>>>
>>>>
>>>>         
>>> _______________________________________________
>>> osg-submissions mailing list
>>> [email protected]
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>>
>>>       
>> --
>> +33 (0) 6 63 20 03 56  Cedric Pinson mailto:[EMAIL PROTECTED] 
>> http://www.plopbyte.net
>>
>>
>>
>> _______________________________________________
>> osg-submissions mailing list
>> [email protected]
>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>
>>
>>     
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>   

-- 
+33 (0) 6 63 20 03 56  Cedric Pinson mailto:[EMAIL PROTECTED] 
http://www.plopbyte.net


_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to