网站大量收购闲置独家精品文档,联系QQ:2885784924

OpenGL图形编程4网格化曲线曲面与实体造型(陈永强).ppt

OpenGL图形编程4网格化曲线曲面与实体造型(陈永强).ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenGL图形编程4网格化曲线曲面与实体造型(陈永强),opengl曲面,opengl贝塞尔曲面,opengl绘制曲面,opengl网格,solidworks曲面实体化,proe曲面实体化,犀牛网格转曲面,proe曲面切除实体,犀牛网格建立曲面

4.网格化曲线曲面与实体造型 4.1网格化 4.2曲线曲面 4.3实体 4.1网格化 OpenGL只能直接显示简单的凸多边形。简单凸多边形就是多边形的边只在顶点处相交,没有重复的顶点,并且任何顶点都只有两条边相遇。 如果需要显示凹多边形、中间有洞的多边形或者具有相交边的多边形,就必须分解为简单的凸多边形,即网格化。 4.1网格化 复杂多边形网格化步骤: 创建一个网格化对象 注册在网格化期间执行操作的回调函数 指定网格化属性 指定一个或多个封闭多边形组成的轮廓,以创建并渲染分割后的多边形 删除网格化对象 4.1网格化 创建网格化对象 GLUtesselator* gluNewTess(void); 函数创建一个网格化对象,并返回一个指向该对象的指针,如果创建失败则返回NULL指针。 4.1网格化 网格化回调函数 void glTessCallback(GLUtesselator* tessobj,GLenum type,void (* fn)() ); 函数将回调函数fn与网格化对象tessobj关联起来,类型由参数type指定。 4.1网格化 网格化属性 void gluTessProperty(GLUtesselator *tessobj,GLenum property,GLdouble value ); 函数设置网格化对象tessobj的property属性,其值设为value。 最重要最复杂的是环绕规则,决定了多边形的“内部”和“外部”。 4.1网格化 定义多边形 void glTessBeginPolygon(GLUtesselator *tessobj,void *user_data ); void glTessEndPolygon(GLUtesselator *tessobj ); 此对函数将多边形同网格对象tessobj关联起来,参数user_data指向用户定义的数据。可以定义一条或多条轮廓线。 void glTessBeginContour(GLUtesselator *tessobj); void glTessEndContour(GLUtesselator *tessobj ); 此对函数指定一条封闭的轮廓线,默认将轮廓线中最后一个顶点和第一顶点相连。 void gluTessVertex(GLUtesselator *tessobj,GLdouble coords[3],void *vertex_data); 函数指定轮廓线的一个顶点。 4.1网格化 删去网格化对象 void gluDeleteTess(GLUtesselator *tessobj ); 删去网格化对象tessobj,并释放其占用的内存。 4.1网格化 例子 红皮书tess.c 4.2.1Bezier曲线曲面 例子 教材【程序8-2】 红皮书bezcurve.c bezsurf.c bezmesh.c texturesurf.c 4.2.2B样条曲线曲面 5.创建NURBS曲线曲面 曲线 void gluNurbsCurve(GLUnurbsObj *nobj, GLint uknot_count, GLfloat *ukont, GLint u_stride, GLfloat *ctlarray, GLint uorder, GLenum type); 4.2.2B样条曲线曲面 5.创建NURBS曲线曲面 曲面: void gluNurbsSurface (GLUnurbsObj *nobj, GLint uknot_count, GLfloat *ukont, GLint vknot_count, GLfloat *vkont, GLint u_stride, GLint v_stride, GLfloat *ctlarray, GLint uorder, GLint vorder, GLenum type); 4.2.2B样条曲线曲面 例子 教材【程序8-4】 红皮书surface.c 4.3实体 3.GLU二次几何体 通过网格化并用多边形逼近来模拟二维和三维几何体。 4.3实体 3.GLU二次几何体 渲染二次几何体步骤: 1)创建一个二次几何体对象 GLUquadricObj* gluNewQuadric() 2)指定二次对象的渲染属性 绘制模式/法线/法线方向/纹理坐标 3)注册一个错误处理回调函数 gluQuadricCallback() 4)根据二次对象类型调用相应的渲染函数 材质/光照 5)删除二次对象 gluDeleteQuadric() 4.3实体 3.GLU二次几何体 二次对象属性

文档评论(0)

wdhao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档