- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.图元属性及图形处理ppt
OpenGL中的裁剪 由窗口自动完成 包容盒的设置,每个OpenGL元实体可获得其包容盒,自定义实体需要指定其包容盒,否则影响实体的选择和ZoomAll操作 glClipPlane()用于三维裁剪,被裁剪掉的部分不显示,如剖视图 在光栅显示器上显示图形时,直线段或图形边界或多或少会呈锯齿状。原因是图形信号是连续的,而在光栅显示系统中,用来表示图形的却是一个个离散的象素。这种用离散量表示连续量引起的失真现象称之为走样(aliasing);用于减少或消除这种效果的技术称为反走样(antialiasing)。 图(a) 图(b) 图(c) 图形的走样 6.5 图形的反走样 狭小图形遗失( 如图(c),在动画序列中将时隐时现,产生闪烁)。 图形细节失真(比象素更窄的细节变宽,如图(b) ); 阶梯状边界,如图(a)所示,画出的直线边界实际上是阶梯状; 图形反走样 图形走样的原因 因为计算机屏幕是不连续的离散象素组成,每个象素覆盖一定面积,而每个象素只能显示一种颜色。也就是说,该象素只能显示该覆盖区域某一点处的颜色,不可能反映整个区域颜色,于是出现失真或图形丢失。 常用的反走样方法主要有:提高分辨率、区域采样、加权区域采样等。 1)提高分辨率的反走样方法 方法简单,代价大。如显示器水平与竖直分辩率提高1倍,则显示器点距减1倍,帧缓存容量则增加到原来的4倍,扫描转换同样大小的图元却要花4倍时间。 2)区域采样反走样方法 1)将直线段看作具有一定宽度的狭长矩形; 2)直线段矩形与某象素正方形有交(或覆盖)时,求相交(或覆盖)区域面积; 3)根据相交区域面积,确定该象素的亮度值 直线段对一个像素亮度的贡献与相交区域面积成正比; 当直线段和某个像素不相交时,它对该像素的亮度无影响; 相同面积的相交区域对像素亮度贡献相同,与相交区域在像素内位置无关。 区域采样方法特点: 关键:如何快速计算这个面积? 方法 1:多边形精确求相交区域面积,效率低; 方法 2:面积离散近似计算,将象素细化子分为多象素,子象素相交(或覆盖)的数目即为面积。 OpenGL反走样函数 glEnable (GL_LINE_SMOOTH); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); GL_POINT_SMOOTH GL_LINE_SMOOTH GL_POLYGON_SMOOTH 实例:图案填充 fillPattern.cpp 上机 考虑扫描线填充算法实现:考虑封闭的首尾相连的直线段集合,凸多边形 考虑剖面线填充算法实现:同 计算机图形学第6讲 图元属性及图形处理 华中科技大学 吴义忠cad.wyz@hust.edu.cn 主要内容 图元属性:关键数据;颜色、点属性、线属性、曲线属性、填充属性、字符属性 图元的一般处理 填充算法 裁剪算法 反走样 6.1 图元属性——颜色 颜色与灰度 RGB模式与索引模式Index RGBA模式(alfa) OpenGL颜色函数 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB) or GLUT_INDEX RGBA模式 Index模式: void glClearColor*(); void glClearIndex(GLfloat cindex); void glSecondaryColor*(); void glEnable (GL_BLEND) 6.1 图元属性——点属性 关键数据:点坐标 颜色和大小 样式(OpenGL不支持,可以自定义) void glPointSize (GLint size); 6.1 图元属性——线属性 关键数据:起点、终点坐标 颜色 glColor*(…) 线宽 glLineWidth(wid) 线型 glEnable(GL_LINE_STIPPLE) glLineStipple(…); 画笔和画刷:使用矩形笔画线,则画刷起作用(OpenGL未提供) 6.1 图元属性——曲线属性 关键数据 颜色 线宽 线型 精度(显示曲线的段数) Bezier曲线/NURBS曲线(后) 6.1 图元属性——填充属性 关键数据:实体集合 填充颜色 填充样式 glPolygonStipple(pattern) 填充区域 glBegin/glEnd glEnable(GL_POLYGON_STIPPLE) 6.1 图元属性——字符属性 颜色 字体 大小 位置、方向 glTranslate glRotate 6.2 图元的一般处理 属性改变:颜色、线型、宽度等; 关键数据改变: 图形变换:移动、旋转、放缩 复制操作:拷贝粘贴、镜像、阵列 关键点
文档评论(0)