没有合适的资源?快使用搜索试试~ 我知道了~
OpenSceneGraph详解
需积分: 10 18 下载量 82 浏览量
2010-04-24
23:46:20
上传
评论
收藏 1.06MB DOC 举报
温馨提示
试读
64页
本节涵盖了生成基本几何形状的一些方法。生成几何物体的方法有这么几种:在最底层对OpenGL基本几何进行松散的包装,中级是使用Open Scene Graph的基本形状,以及更高级一些的从文件读取。这篇教程涵盖的是最低层的。这种方法弹性最大但最费力。通常在Scene Graph级别,几何形状是从文件加载的。文件加载器完成了跟踪顶点的大部分工作。
资源推荐
资源详情
资源评论
doing5552 的专栏
登录
注册
空间
博客
好友
相册
留言
OpenSceneGraph 教程收藏
教程
使用
几何
原文出处:http://www.nps.navy.mil/cs/sullivan/osgtutorials/osgGeometry.htm
摘要
本节涵盖了生成基本几何形状的一些方法。生成几何物体的方法有这么
几种:在最底层对 基本几何进行松散的包装,中级是使用
的基本形状,以及更高级一些的从文件读取。这篇教程涵盖的
是最低层的。这种方法弹性最大但最费力。通常在 级别,几何
形状是从文件加载的。文件加载器完成了跟踪顶点的大部分工作。
背景
对一下几个类的简单解释:
类:
类继承自 类。在一个 中,(当然包
含 )可以作为叶子节点。 实例可以有多个相关的 。
类层次
基类 是一个有六个具体子类的抽象类。
类可以直接有 和 数据,或者任意个
实例。
和 属性数据(颜色、法线、纹理坐标)存放在数组中。
既然多个顶点可以共享相同的颜色、法线或纹理坐标,那么数组索引就可以用
来将顶点数组映射到颜色、法线、或纹理坐标数组。
类:
这个类松散的包装了 的基本图形-
,!,!" #,!",$$$,%$
代码
以下这节代码安装了一个 viewer 来观察我们创建的场景,一个‘group’实例作为
scene graph 的根节点,一个几何节点(geode)来收集 drawable,和一个 geometry 实例来关
联顶点和顶点数据。(这个例子中渲染的形状是一个四面体)
...
()
{
...
::;
::* =::();
::* =::();
::* =::();
下一步,需要将锥体 geometry 和锥体 geode 关联起来,并将 pyramid geode 加到 scene
graph 的根节点上。
->();
->();
声明一个顶点数组。每个顶点由一个三元组表示——& 类的实例。
这些三元组用 '(()&* 类的实例存贮。既然 '(()&* 继承自
的 类,那么我们就可以使用 +'", 方法来添加数组成员。
+'", 将元素加到向量的尾端,因此第一个元素的索引是 -,第二个是
,依此类推。
使用‘z’轴向上的右手坐标系系统,下面的 0...4 数组元素代表着产生一个简单锥体
所需的 5 个点。
!"#$%%&'&'&(( ))**
!"#$%%+&'&'&(( ))*
!"#$%%+&'+&'&(( ))$
!"#$%%&'+&'&(( ))$*
!"#$%%,','+&(( ))$
将这个顶点集合和与我们加到场景中的 geode 相关的 geometry 关联起来。
!"-%(
下一步,产生一个基本集合并将其加入到 pyramid geometry 中。使用 pyramid 的前四
个点通过 DrawElementsUint 类的实例来定义基座。这个类也继承自 STL 的 vector,所以
push_back 方法会顺序添加元素。为了保证合适的背面剔除,顶点的顺序应当是逆时针方向
的。构造器的参数是基本的枚举类型(和 opengl 的基本枚举类型一致),和起始的顶点数
组索引。
./01
./0%23/2'&(
1!"#$%(
1!"#$%4(
1!"#$%+(
1!"#$%&(
!"2%1(
对每个面重复相同的动作。顶点仍要按逆时针方向指定。
./056
./0%27809:.2'&(
56!"#$%&(
56!"#$%+(
56!"#$%;(
!"2%56(
<
./057
./0%27809:.2'&(
57!"#$%+(
57!"#$%4(
57!"#$%;(
!"2%57(
<
./057
./0%27809:.2'&(
57!"#$%4(
57!"#$%(
57!"#$%;(
!"2%57(
<
./055
./0%27809:.2'&(
55!"#$%(
55!"#$%&(
55!"#$%;(
!"2%55(
声明并加载一个 vec4 为元素的数组来存储颜色。
;;
!"#$%;%+=&*'&=&*'&=&*'+=&*(( ))-&
!"#$%;%&=&*'+=&*'&=&*'+=&*(( ))-+
!"#$%;%&=&*'&=&*'+=&*'+=&*(( ))-4
!"#$%;%+=&*'+=&*'+=&*'+=&*(( ))-
声明的这个变量可以将顶点数组元素和颜色数组元素匹配起来。这个容器
的元素数应当和顶点数一致。这个容器是顶点数组和颜色数组的连接。这个索
引数组中的条目就对应着顶点数组中的元素。他们的值就是颜色数组中的索引。
顶点数组元素与 和纹理坐标数组的匹配也是遵循这种模式。
注意,这种情况下,我们将 5 个顶点指定 4 种颜色。顶点数组的 0 和 4 元素都被
指定为颜色数组的 0 元素。
70-
>'/07';';"0-
0-
70->'/07';';"
0-!"#$%&( ))-&&
0-!"#$%+( ))-++
0-!"#$%4( ))-44
0-!"#$%( ))-
0-!"#$%&( ))-;&
下一步,将颜色数组和 geometry 关联起来,将上面产生的颜色索引指定给
geometry,设定绑定模式为_PER_VERTEX。
))?*=
7*7@5
7*%(
<
))/AA*
))**
))**=
!"%7@5(
7@5!"%(
<
))?
))*$
7%+,'&'&(
7@5!"%7(
既然我们生成了一个 节点并将它加到了场景中,我们就可
以重用这个 。例如,如果我们想让另一个 在第一个的右侧
. 个单位处,我们就可以在我们的 ' 中将这个 加到
'/ 节点的子节点上。
最后一步,建立并进入一个仿真循环。
=/%2798#2.77092(
=2%(
<
=?%(
<
%B=%((
C
=%(
=%(
=*%(
D
好运气!
教程 0使用 产生有纹理的几何体
原文出处:))===))))
7-=
目标:
为教程 中介绍的由 基本绘制单位定义的几何体添加纹理。
背景:
前一节教程介绍了包含由 OpenGL 基本单位产生的基本形状的视景。本节讲解如
何为这些形状添加纹理。为了使代码更方便使用,我们将 pyramid 的代码放到一个函数中,
产生 geode 并返回它的指针。下面的代码来自教程 1。
%(
C
%(
%(
!"%(
<
))2*
!"#$%%&'&'&(( ))**
!"#$%%4'&'&(( ))*
!"#$%%4'4'&(( ))$
!"#$%%&'4'&(( ))$*
!"#$%%+'+'4(( ))$
<
))*
))=
剩余63页未读,继续阅读
资源评论
zhuwin1109
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功