[osg-users] different materials for a geometry and highlight

Sebastian Messerschmidt sebastian.messerschmidt at gmx.de
Tue Sep 27 05:12:44 PDT 2016

Hi Gianni,
> Trajce Nikolov NICK wrote:
>> Maybe better idea then these email iterations is to write us what is your goal with this code since I see no smart logic in there (sorry :-) )
> OK, I try to explain in detail.
> The object I visualize on 3D is a road. A road can have different "materials": asphalt, curbs, oil, puddles, obsacles ... The road surface including materials is defined in a core road structure. I drow the 3D road base on the data stored in the core road structure. There each road element (=triangle) is associated to a "material" object. For that reason I thought to use different colors, one for each material. So, asphalt = dark grey, curbs = red/white, oil = dark green, puddle = brown ...
> The user, after loading a road, can change the "material" definition. So picking on the road surface he can add a puddle in the middle of the road. So the picked triangles must be shown in brown then.
> In addition I have to update the core road structure accordingly.
Basically this is something I wouldn't approach by using 
color-materials. I'd use multiple textures per geometry-element and sort 
of blend them based on a per-face value. Do you need to place the curbs 
etc. also dynamically?
If you only need to add puddles etc. you might be better of using 
decals, or even drawing on top of the original road-geometry.
The problem with the multiple primitive sets is, that you will have to 
recompile the data every time some triangle is changed.
If your geometry doesn't have to look nice, you indeed can simply use 
flat shading and set the vertex colors, but one problem with this is 
that with shared vertices you will affect neighboring triangles as well. 
Are there any restrictions to how the road is represented?

Another approach might be to use a geometry shader and determine the 
color of your triangle there (I believe this would work for shared 
indices as well). The determination of the color could be based on the 
vertices texture coordinate which point into an image which holds the 
"color" information. This way you wouldn't need to modify the geometry 
at all, but upload a modified texture if needed. I can try to make a 
minimal example, if you give me some time (I can do this after work).


> This is the scenario. Hope this is clearer now.
> Thanks Nick and Sebastian for the time spent, really!
> Gianni
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=68780#68780
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

More information about the osg-users mailing list