OSG学习之几何图形

本文介绍了在OpenSceneGraph中使用osg::ShapeDrawable构建几何图形,但因其效率不高,进而转向使用osg::Geometry进行高效绘图。通过设置顶点和索引数据,遵循osg坐标系和逆时针方向规则,详细讲解了如何填充正方体的八个顶点坐标,以实现正方体的绘制。最后展示了使用osg::Geometry实现的绘图效果。
摘要由CSDN通过智能技术生成

最近在学习OpenSceneGraph,先从几何图形实现开始入手学习。使用两种方法来构建一个正方体。

首先来介绍osg::ShapeDrawable 类,其中是osg::Drawable的子类。一般使用来快速构建基础的几何图形。

先来看看代码

    osg::ref_ptr<osg::ShapeDrawable> shape_box = new osg::ShapeDrawable;
    shape_box->setShape( new osg::Box(osg::Vec3(0.0f, 0.0f, 0.0f),2.0f, 2.0f, 2.0f) );
    shape_box->setColor( osg::Vec4(3.0f, 1.0f, 1.0f, 1.0f) );

    osg::ref_ptr<osg::Geode> root = new osg::Geode;
    root->addDrawable( shape_box.get() );
    osgViewer::Viewer viewer;
    viewer.setSceneData( root.get() );
    return viewer.run();

osg::ShapeDrawable setShape()方法,这个方法通常就是来设置形状的。

shape_box->setShape( new osg::Box(osg::Vec3(0.0f, 0.0f, 0.0f),2.0f, 2.0f, 2.0f) );

其中osg::Vec3(0.0f, 0.0f, 0.0f)设置的是中心坐标2.0f, 2.0f, 2.0f设置的是宽度、高度、深度

 

shape_box->setColor( osg::Vec4(3.0f, 1.0f, 1.0f, 1.0f) );

其中3.0f, 1.0f, 1.0f 是RGB值 ; 1.0f对应的是alpha值(范围0~1)。

 

osg::ref_ptr<osg::Geode> root = new osg::Geode;
root->addDrawable( shape_box.get() );

Geode存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值