Hi,

Here some tests about the ground textures for photo scenery.

Terragear build BTG. Each BTG contains several 3D objects with a
material property (city, wood...)

Is it possible that terragear cuts a texture for these 3D objets...

In fact, my proposition is very simple. In the function SGLoadBTG, I
replace :

osg::Node* node = tileGeometryBin.getSurfaceGeometry(matlib);

By :

cout << path; // sample : Terrain/w010n40/w005n48/2876058.btg

phototexture = path;
phototexture =~ s/btg$/dds/; // or PNG, JPG...

if (phototexture found) {
  osg::Node* node = tileGeometryBin.loadPhotoScenery(matlib);
  if (node)
    terrainGroup->addChild(node);
}
else {
  osg::Node* node = tileGeometryBin.getSurfaceGeometry(matlib);
  if (node)
    terrainGroup->addChild(node);
}

And loadPhotoScenery(...) {
  int n;
  char buffer[128];
  
  if (materialTriangleMap.empty())
    return 0;
  
  osg::Group* groupe = new osg::Group;
  
  osg::Geode* geode = new osg::Geode;
  SGMaterialTriangleMap::const_iterator i;
  
  for (n=0, i = materialTriangleMap.begin(); i !=
materialTriangleMap.end(); ++i, n++) {
    snprintf(buffer, 128, "Textures/PhotoScenery/%d.dds", n);
  
    osg::Texture2D* FaceTexture = new osg::Texture2D;
    FaceTexture->setDataVariance(osg::Object::DYNAMIC);
    osg::Image* Face = osgDB::readImageFile(buffer);
    FaceTexture->setImage(Face);
    osg::Geometry* geometry = i->second.buildGeometry();
  
    osg::StateSet* stateOne = new osg::StateSet();

stateOne->setTextureAttributeAndModes(0,FaceTexture,osg::StateAttribute::ON);
    geometry->setStateSet(stateOne);
  
    geode->addDrawable(geometry);
  }
  
  groupe->addChild(geode);
  
  return geode;
}


With this solution, my issue is : How can I generate photo texture with
terragear ? Is it possible ?


Regards,

Nicolas


Le mardi 23 septembre 2008 à 13:16 +0200, Tim Moore a écrit :
> Frederic Bouvier wrote:
> > Hi Tim,
> > 
> > Tim Moore wrote :
> >> This code did survive the OSG port, but was removed in a later
> >> reorganization of  the tile loading code. It's easy enough 
> >> to put this back in, but the old code would add the local 
> >> material permanently to the material library; is that really 
> >> desired? I would think the local material should get deleted 
> >> when the tile is deleted.
> > 
> > I tried to restore that code this past weekend but I experienced
> > random access violation when loading the texture. I was wondering
> > if loading textures in the pager thread was legal.
> 
> It is legal to load textures from the pager thread, but there might now be a 
> problem with adding a material to the material library in the pager thread. 
> Is 
> the access violation really "random?"
> 
> Tim
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Flightgear-devel mailing list
> Flightgear-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/flightgear-devel
> 


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to