I've never used a terrainnode so I can't help you on that, but on the ShapeDrawable something look strange on your code :
you do a drawable->setcolor on each loop (so 410*296 times) and a the end you add it to the geode.... so I imagine that only the last loop is used, and it look normal to obtain a single color... Maybe you should create a vec4Array with the same size of your vertex array, and in each element of the Colorarray you put the calculated vector. Last, you make something like : drawable->setVerticeArray(your_vertex_array); drawable->setColorArray(your_color_array); (Maybe your should add normalArray too) I don't know if you understand what it intend to explain, It's a little bit difficult for me to write in english ;) Vincent 2008/3/3, aurora restivo <[EMAIL PROTECTED]>: > > Hi! > > if I use a ShapeDrawable I get a figure with an only color, because "draw > -> setColor (...)" it doesn't allow me to color every altitude > > osg::Geode* geode= new osg::Geode(); > osg::ShapeDrawable* draw= new osg::ShapeDrawable(hF); > double highColor=1.0; > double lowColor=0.2; > > double R=0.0, G=0.0, B=0.0; > > for(int i=0; i< 410; i++) > { > for(int j=0; j<296 ;j++) > { > float altitude = hF->getHeight(j,i); > > R =(highColor - lowColor) * ((altitude - min) / max) + > lowColor; > G =(highColor - lowColor) * ((altitude - min) / max) + > lowColor; > B =(highColor - lowColor) * ((altitude - min) / max) + > lowColor; > > draw->setColor(osg::Vec4(R,G,B,1.0)); > } > } > > geode->addDrawable(draw); > > > if I draw a TerrainNode with GeometryTechnique and use > terrainNode - > setColorTransferFunction (0, tf.get()); > I get a figure with an only color if I use "tf -> allocate (1);" > otherwise, if I use "tf -> allocate (2);" I get a colored figure to two > zones, etc... > > osg::ref_ptr<osg::TransferFunction1D> tf = new osg::TransferFunction1D; > tf->setInputRange(min, max); //minAltitude = 0, maxAltitude = 1400 > tf->allocate(1); > //or tf->allocate(2); > > for(int i=0; i< 410; i++) > { > for(int j=0; j<296 ;j++) > { > float altitude = hF->getHeight(j,i); > > R =(highColor - lowColor) * ((altitude - min) / max) + > lowColor; > G =(highColor - lowColor) * ((altitude - min) / max) + > lowColor; > B =(highColor - lowColor) * ((altitude - min) / max) + > lowColor; > > tf->setValue(0, osg::Vec4(R,G,B,1.0)); > //tf->setValue(1, osg::Vec4(1.0,0.0,1.0,1.0)); > terrainNode->setColorTransferFunction(0, tf.get()); > > } > } > > how can I color every altitude with different color? > I apologize for the trouble > Thanks > Aurora > > > > > Vincent Bourdier ha scritto: > > Hi Aurora, > > With his proposition, you can create the color that you need. > Setcolor(vec4) uses RGBA (Red, Green, Blue, Alpha) color (if i remember > well) so put A to 1.0 (opacity) , and the RGB can be defined using the > function he gives to you... you can use it for each component if you want a > greyscale color (R=G=B) or only use it on one component... try it and you > will see... > > for greyscale image, you can try : > > hightcolor = 1.0 > lowcolor = 0.0 > > and then > > R =(highColor - lowColor) * ((altitude - minAltitude) / maxAltitude) + > lowColor; > G =(highColor - lowColor) * ((altitude - minAltitude) / maxAltitude) + > lowColor; > B =(highColor - lowColor) * ((altitude - minAltitude) / maxAltitude) + > lowColor; > > this is just a simple example... > > Regards, > > Vincent. > > 2008/2/29, aurora restivo <[EMAIL PROTECTED]>: > > > > The Sukender ha scritto: > > > > Hum... I don't have a global solution, but you may set a color for each > > vertex with something lile : > > color = (highColor - lowColor) * ((altitude - minAltitude) / maxAltitude) + > > lowColor; > > > > > > > > > > I apologize but I am still inexperienced. > > > > I have a HeightField associated to shapeDrawable (this because if I use > > Locator and GeometryTechnique I succeed in visualizing the alone ground > > "GEOCENTRIC"), > > therefore if I use > > > > shapeDrawable - > setColor (Vec4); > > > > I don't know whether to plan the values of the Vec4 with the formula > > that you have sent me > > > > besides of what type it is color? > > > > Aurora > > > > > > > > You can allso do it in HSL coordinates (instead of RGB). > > > > Sukender > > > > ---------------------------------------- > > > > Date: Fri, 29 Feb 2008 12:54:48 +0100 > > From: [EMAIL PROTECTED] > > To: osg-users@lists.openscenegraph.org > > > > Subject: Re: [osg-users] [Fwd: Re: to draw landscapes beginning from a > > matrix] > > > > Hi! > > > > does a way exists to color from the tallest altitude of a ground to the > > lowest with gradations of color? > > > > thanks > > > > Aurora > > > > > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org