1.用三维引擎创建一个球(代码+解析)
【摘要】 1.源码#include <osgViewer/Viewer>#include <osg/Geode>#include <osg/ShapeDrawable>int main(){ // 创建一个Viewer对象,这是OSG的主要接口 osgViewer::Viewer viewer; // 创建一个用于绘制形状的Geode节点 osg::ref_ptr<osg::Geode> geode...
1.源码
#include <osgViewer/Viewer>
#include <osg/Geode>
#include <osg/ShapeDrawable>
int main()
{
// 创建一个Viewer对象,这是OSG的主要接口
osgViewer::Viewer viewer;
// 创建一个用于绘制形状的Geode节点
osg::ref_ptr<osg::Geode> geode = new osg::Geode();
// 创建一个球体,设置其半径为1.0,然后添加到Geode节点
geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(), 1.0)));
// 将Geode节点添加到场景图中
viewer.setSceneData(geode.get());
// 开始渲染循环
return viewer.run();
}
2.说明
其中比较难理解的是
// 创建一个球体,设置其半径为1.0,然后添加到Geode节点
geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(), 1.0)));
这行代码的目的是在场景中添加一个可以绘制的形状。让我们一步步来看:
new osg::Sphere(osg::Vec3(), 1.0)
:这部分代码创建了一个新的球体对象。osg::Sphere
是一个类,它的构造函数接受两个参数:球心的位置和半径。在这里,我们使用osg::Vec3()
创建了一个新的向量,它的所有分量(x,y,z)都被初始化为0,所以球心位于原点。球体的半径被设置为1.0。new osg::ShapeDrawable(...)
:这部分代码创建了一个新的ShapeDrawable对象。ShapeDrawable是一个可以绘制形状的类,它的构造函数接受一个形状对象作为参数。在这里,我们传入了我们刚刚创建的球体对象。geode->addDrawable(...)
:最后,我们调用了Geode对象的addDrawable
方法,将我们刚刚创建的ShapeDrawable对象添加到Geode中。这样,当OSG渲染这个Geode时,它就会绘制我们的球体。
总的来说这行代码创建了一个位于原点、半径为1.0的球体,并将其添加到了我们的场景中
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)