So hi again.
Now i tryed the osgTerrain Nodekit. To gernerate my Terrain. i greated 2
TerrianTiles. But now the whole Terrian is very dark. Look at the code pls and
picture:
Sorry but the code tag dont work right.
osg::ref_ptr<osgTerrain::Locator> Locator1
= new osgTerrain::Locator;
Locator1->setCoordinateSystemType( osgTerrain::Locator::PROJECTED );
Locator1->setTransformAsExtents( 0.0, 0.0, 2560.0, 2560.0 );
osg::ref_ptr<osgTerrain::Locator> Locator2
= new osgTerrain::Locator;
Locator2->setCoordinateSystemType( osgTerrain::Locator::PROJECTED );
Locator2->setTransformAsExtents( 2560.0, 0.0, 2560.0+2560.0, 2560.0 );
////////////////////////////////////////////////////////////////////////////////////////////////////////////
osg::Image* img = osgDB::readImageFile( _Heightmap );
osg::ref_ptr<osg::HeightField> heightmap1 = new osg::HeightField;
heightmap1->allocate(256,256);
heightmap1->setXInterval(10.0f);
heightmap1->setYInterval(10.0f);
for(int z=0; z<256; z++)
{
for(int x=0; x<256; x++)
{
heightmap1->setHeight( x, z, (float)*img->data( x, z )
);
}
}
osg::ref_ptr<osgTerrain::HeightFieldLayer>
HeightFieldLayer1 = new osgTerrain::HeightFieldLayer( heightmap1.get() );
HeightFieldLayer1->setLocator( Locator1.get() );
osg::ref_ptr<osgTerrain::GeometryTechnique> GeometryTechnique1 = new
osgTerrain::GeometryTechnique;
osg::ref_ptr<osgTerrain::TerrainTile> TerrainTile1 = new
osgTerrain::TerrainTile;
TerrainTile1->setElevationLayer( HeightFieldLayer1.get() );
TerrainTile1->setTerrainTechnique( GeometryTechnique1.get() );
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
osg::ref_ptr<osg::HeightField> heightmap2 = new osg::HeightField;
heightmap2->allocate(256,256);
heightmap2->setXInterval(10.0f);
heightmap2->setYInterval(10.0f);
for(int z=0; z<256; z++)
{
for(int x=255, ix = 0; x>=0; x--, ix++)
{
heightmap2->setHeight( ix, z, (float)*img->data( x, z )
);
}
}
osg::ref_ptr<osgTerrain::HeightFieldLayer>
HeightFieldLayer2 = new osgTerrain::HeightFieldLayer( heightmap2.get() );
HeightFieldLayer2->setLocator( Locator2.get() );
osg::ref_ptr<osgTerrain::GeometryTechnique> GeometryTechnique2 = new
osgTerrain::GeometryTechnique;
osg::ref_ptr<osgTerrain::TerrainTile> TerrainTile2 = new
osgTerrain::TerrainTile;
TerrainTile2->setElevationLayer( HeightFieldLayer2.get() );
TerrainTile2->setTerrainTechnique( GeometryTechnique2.get() );
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
osg::ref_ptr<osgTerrain::Terrain> Terrain
= new osgTerrain::Terrain;
Terrain->setSampleRatio( 1.0f );
osg::ref_ptr<osg::Image> m_TextureImg =
osgDB::readImageFile( _Texture );
osg::ref_ptr<osg::Texture2D> m_Texture = new
osg::Texture2D;
m_Texture->setImage( m_TextureImg.get() );
osg::ref_ptr<osg::StateSet> m_TerrainStateSet =
Terrain->getOrCreateStateSet();
m_TerrainStateSet->setTextureAttributeAndModes( 0, m_Texture,
osg::StateAttribute::ON );
m_TerrainStateSet->setMode( GL_LIGHTING, osg::StateAttribute::ON );
m_TerrainStateSet->setAttribute( new osg::PolygonMode(
osg::PolygonMode::FRONT_AND_BACK, osg::PolygonMode::LINE ) );
Terrain->addChild( TerrainTile1.get() );
Terrain->addChild( TerrainTile2.get() );
[Image: http://www.husseini.de/markus/Terrain3.jpg ]
The red should be like the other pictures.
Thanks for help.
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=15452#15452
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org