图形对象与场景图.ppt

上传人:本田雅阁 文档编号:3195486 上传时间:2019-07-29 格式:PPT 页数:22 大小:527.01KB
返回 下载 相关 举报
图形对象与场景图.ppt_第1页
第1页 / 共22页
图形对象与场景图.ppt_第2页
第2页 / 共22页
图形对象与场景图.ppt_第3页
第3页 / 共22页
图形对象与场景图.ppt_第4页
第4页 / 共22页
图形对象与场景图.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《图形对象与场景图.ppt》由会员分享,可在线阅读,更多相关《图形对象与场景图.ppt(22页珍藏版)》请在三一文库上搜索。

1、,计算机图形学,杨 武 影像科学与技术实验室 东南大学计算机学院 ,2,第九章 层次建模,3,第九章之第三节 图形对象与场景图,4,基本内容,介绍图形对象 推广对象的思想,使之包含光源、照相机和属性 介绍场景图(scene graphs),5,直接模型图形的局限,当在应用程序中定义一个几何对象时,在代码被执行后,对象就进入流水线过程 然后它就会从图形系统中消失了 为了重新绘制同样的或者改变了的对象,那么就需要重新执行代码 显示列表功能只是对这个问题进行了部分解决,6,OpenGL 与对象,OpenGL缺少面向对象的功能 例如,考虑一个绿球 可以用多边形建立它的模型,也可以用OpenGL提供的二

2、次曲面功能建模 它的颜色是由OpenGL状态确定的,这不是对象的一种属性 这不符合物理对象的观念 可以利用面向对象语言和技术建立起更好的对象代码,7,强制程序模式,例:旋转立方体 旋转函数必须知道立方体的表示方式 顶点列表 边表,应用程序,函数,数据,结果,8,在这种模式中,表示是与对象存贮在一起的 应用程序发送消息给对象 对象中包含函数(也称为方法)可以自己变换对象,面向对象的程序模式,应用程序,对象与方法,消息,9,C/C+,可以利用C的struct类型建立对象 C+提供了更好的功能支持 可以应用class结构 可以利用类中的public, private和protected对实现进行必要

3、的隐藏 也可以利用友元标识使得类可以彼此访问,10,立方体对象,假设我们要创建一个简单的立方体对象,可以对它进行放缩、定向、定位,并直接利用代码设置它的颜色,例如 cube mycube; mycube.color0=1.0; mycube.color1=mycube.color2=0.0; mycube.matrix00=,11,立方体对象的函数,我们也希望具有作用在立方体上面的函数,例如 mycube.translate(1.0, 0.0,0.0); mycube.rotate(theta, 1.0, 0.0, 0.0); setcolor(mycube, 1.0, 0.0, 0.0);

4、也有方法显示立方体 mycube.render();,12,建立立方体对象,class cube public: float color3; float matrix44; / public 方法 private: / 实现 ,13,实现,可以在private部分进行任何实现,例如应用顶点列表 private部分可以访问public成员,类方法的实现可以应用任何实现,而不需要把它们变为可见的 显示方法需要一些技巧,但它会调用标准OpenGL的绘图函数,例如glVertex,14,其它对象,其它对象具有几何特征 照相机 光源 但我们也应当能够包含非几何对象 材料 颜色 变换(矩阵),15,应用程

5、序代码,cube mycube; material plastic; mycube.setMaterial(plastic); camera frontView; frontView.position(x ,y, z);,16,光源对象,class light / 与Phong模型匹配 public: boolean type; /正交或透视 boolean near; float position3; float orientation3; float specular3; float diffuse3; float ambient3; ,17,场景描述,重新考虑示意图模型,可见 可以用树结

6、构或者等价的代码描述模型 可以编写出一般的遍历代码从而用于显示 如果可以用C+对象表示场景中所有的成员(照相机、光源、材料、几何体),我们应当能够在一个树结构中列出它们 从而可以应用遍历算法显示场景,18,场景图,19,遍历,glPushAttrib glPushMatrix glColor glTranslate glRotate 对象1 glTranslate 对象2 glPopMatrix glPopAttrib ,20,分隔节点,需要用它隔离状态改变 等价于OpenGL中的Push/Pop 注意,与示意图模型中一样 可以编写一个适用范围广泛的遍历算法 遍历的顺序是相当重要的 如果不应用分隔节点,状态改变会扩散,21,Inventor 与 Java3D,Inventor和Java3D提供了场景图API 场景图可以用文本文件或者二进制文件进行描述 实现与场景的交换方式是独立的 场景图API支持这种功能 然而,所支持的基本元素应当与图形系统的功能匹配 因此大多数场景图API是建立在OpenGL或者DirectX上的,22,VRML,希望有一种场景图可以在WWW网上应用 需要可以连接到其它地方,从而支持分布式数据库 虚拟现实包装语言(Virtual Reality Markup Language) 基于Inventor数据库 应用OpenGL实现,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1