Hi,

I have a terrain with some roads on it. I want to specify a route by selecting 
some roads one after another. So, what I want to do is: select road1, highlight 
it, select road2, highlight it ... . For now, only the last selected road will 
stay highlight and the other one just return to "normal". 
Is there a way to do this ? I'm using osgSim::OverlayNode.

Thx !
Jeff


Code:

void Road::Highlight(osgGIS::FeatureCursor& cursor)
{
        //A FilterGraph is a sequence of discrete data-processing units called 
Filters
        osgGIS::FilterGraph* graph = new osgGIS::FilterGraph();

        //Changes the shape type of incoming features
    osgGIS::ChangeShapeTypeFilter* change = new osgGIS::ChangeShapeTypeFilter();
        //Sets the shape type to which to change all feature shapes, in this 
case POLYGON
    change->setNewShapeType(osgGIS::GeoShape::TYPE_POLYGON);
        //Appends a filter to the end of the graph's filter chain
    graph->appendFilter(change);

        //Creates a polygon representing a region containing all points within 
a certain distance of all points on the source feature
        osgGIS::BufferFilter* buffer = new osgGIS::BufferFilter(20); //meters
        graph->appendFilter(buffer);
    
        //Transforms feature data by way of spatial reference reprojection 
and/or matrix transformation
    osgGIS::TransformFilter* xform = new osgGIS::TransformFilter();
        //Sets the spatial reference system into which to reproject feature 
geodata
    xform->setSRS(mTerrain_srs.get());
        //Sets whether to localize the feature geodata by transforming it so it 
is relative to the centroid of the graph's working extent 
    xform->setLocalize(true);
    graph->appendFilter(xform);

        //Assembles feature data into basic fragments (i.e. attributed 
drawables). It create basic OSG geometry from GIS feature data
    osgGIS::BuildGeomFilter* geom = new osgGIS::BuildGeomFilter();
        //Sets the script that evalutes to the color to apply to the geometry
        geom->setColorScript(new osgGIS::Script("vec4(1,1,1,1)"));
    graph->appendFilter(geom);

    graph->appendFilter(new osgGIS::CollectionFilter());

        //Assembles Fragment instances into osg::Node instances
    osgGIS::BuildNodesFilter* nodes = new osgGIS::BuildNodesFilter();
        //Sets whether to disable GL lighting on the resulting node graphs
    nodes->setDisableLighting(true);
    graph->appendFilter(nodes);

        //Compiles all or part of a FeatureLayer into an OSG scene graph
        osgGIS::SimpleLayerCompiler compiler(graph);
        osg::Node* result = compiler.compile(mLayer.get(), cursor);

        //Set the overlay subgraph which will be rendered to texture
        mOverlay->setOverlaySubgraph(result);
        mOverlay->
        //Inform the OverlayNode that the overlay texture needs to be updated
        mOverlay->dirtyOverlayTexture();
}


[/code]

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=19839#19839





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

Reply via email to