您的位置:首页 > 其它

美国海军研究生学校(NPS)OSG教程学习笔记——第三课

2010-01-25 23:12 281 查看
通过前两课的学习,我们可以感觉到即使自己创建一个简单的四面体,都需要进行大量的编码,更别说一些更复杂的几何体,比如球体,立方体,柱体,圆锥体等。难道没有更好的方法么?答案是Absolutely YES!

osg内置十种常用的几何体,分别是Sphere,Box,Cylinder,Cone,Capsule,HeightField,InfinitePlane,TriangleMesh(派生出ConvexHull),KdTree和CompositeShape,所有这些类都是派生自osg::Shape。

如同绘制自定义几何体一样,我们需要将创建出来的内嵌几何体通过Drawable加载到Geode上,ShapeDrawable就是完成这个功能的,他和Geometry都是派生自osg::Drawable。好了,把内置几何体加载到场景图中的流程就非常清晰了:

第一步:创建内嵌几何体对象

osg::ref_ptr<osg::Box*> box = new osg::Box(osg::Vec3(0.0, 0.0, 0.0), 1.0)); //在原点创建一个边长为1的立方体

第二步:将几何体和ShapeDrawable关联起来

osg::ref_ptr<osg::ShapeDrawable*> shape_drawable = new osg::ShapeDrawable(box.get());

第三步:将ShapeDrawable加到Geode节点上

geode->addDrawable(shape_drawable.get());

至此,我们就完成了向场景图中加载简单的内置几何体,如何让这些几何体更加漂亮呢?请继续关注下一课的学习。

欢迎大家来信和我交流,我的邮箱是batonyh@163.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐