[osg-users] Utility functions

xuyuanzhen1 xuyuanzhen1 at sina.com
Tue Sep 9 21:47:41 PDT 2008


Hello all,
 
      But how to take texture to this shapes?For example,I draw a cylinder by following code:
-------------------------------------------------------
osg::ref_ptr <osg::Cylinder > cylinder = new
osg::Cylinder(osg::Vec3f(), 2.0, 5.0);
sd = new osg::ShapeDrawable(cylinder.get());
geode- >addDrawable(sd.get());
-------------------------------------------------------
How I take texture to only the top face not all faces?

Best Regards.

2008-09-10 



xuyuanzhen1 



发件人: Vijay Patil 
发送时间: 2008-09-10  12:44:43 
收件人: OpenSceneGraph Users 
抄送: 
主题: Re: [osg-users] Utility functions 
 
On Wed, Sep 10, 2008 at 8:16 AM, ami guru  <dosto.walla at gmail.com > wrote:
> Hello forum,
>
>
> Are there any utility functions for drawing spheres, planes , boxes ,cubes
> etc. within OSG's framework?
>
>
>
> Sajjad
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>

To draw regular shapes in OSG, refer to classes derived to
'osg::Shape'. Following is a segment from a program while
experimenting with those classes.

Also to find out if a particular shape is implemented in OSG, I
usually refer to HTML documentation (Generated using Doxygen). Just
refer to all the classes.

----------------------------------
osg::ref_ptr <osg::MatrixTransform > draw_shape(std::string shape, float x)
{
/* Geode containing a shape. */
osg::ref_ptr <osg::Geode > geode = new osg::Geode;
osg::ref_ptr <osg::ShapeDrawable > sd;

if(shape == "box") {

osg::ref_ptr <osg::Box > box = new osg::Box(osg::Vec3f(), 5.0);
sd = new osg::ShapeDrawable(box.get());
geode- >addDrawable(sd.get());

} else if(shape == "cylinder") {

osg::ref_ptr <osg::Cylinder > cylinder = new
osg::Cylinder(osg::Vec3f(), 2.0, 5.0);
sd = new osg::ShapeDrawable(cylinder.get());
geode- >addDrawable(sd.get());

} else if(shape == "capsule") {

osg::ref_ptr <osg::Capsule > capsule = new osg::Capsule(osg::Vec3f(), 2.0, 5.0);
sd = new osg::ShapeDrawable(capsule.get());
geode- >addDrawable(sd.get());

} else if(shape == "cone") {

osg::ref_ptr <osg::Cone > cone = new osg::Cone(osg::Vec3f(), 2.0, 5.0);
sd = new osg::ShapeDrawable(cone.get());
geode- >addDrawable(sd.get());

} else if(shape == "sphere") {

osg::ref_ptr <osg::Sphere > sphere = new osg::Sphere(osg::Vec3f(), 2.0);
sd = new osg::ShapeDrawable(sphere.get());
geode- >addDrawable(sd.get());
}

/* Use matrix tranform to place the object at desired position
 * from origin. */
osg::ref_ptr <osg::MatrixTransform > mtleft = new osg::MatrixTransform;
mtleft- >setDataVariance(osg::Object::STATIC);

osg::Matrix m;
m.makeTranslate(x, 0.0, 0.0);
mtleft- >setMatrix(m);

/* Add geode to matrix transform object. */
mtleft- >addChild(geode.get());

return mtleft.get();
}



-- 
Vijay Patil
_______________________________________________
osg-users mailing list
osg-users at lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20080910/6a9b7ac0/attachment-0003.htm>


More information about the osg-users mailing list