数学计算机图形学曲线和曲面造型课件

上传人:无*** 文档编号:241430065 上传时间:2024-06-25 格式:PPTX 页数:43 大小:1.67MB
返回 下载 相关 举报
数学计算机图形学曲线和曲面造型课件_第1页
第1页 / 共43页
数学计算机图形学曲线和曲面造型课件_第2页
第2页 / 共43页
数学计算机图形学曲线和曲面造型课件_第3页
第3页 / 共43页
点击查看更多>>
资源描述
曲线和曲面造型第三专题计算机图形学n n曲曲面面造造型型(Surface(Surface Modeling)Modeling)是是计计算算机机辅辅助助几几何何设设计计 (Computer(Computer Aided Aided Geometric Geometric Design,CAGD)Design,CAGD)和和计计算算机机图图形形学学(Computer(Computer Graphics)Graphics)的的一一项项重重要要内内容容,主主要要研研究究在在计计算算机机图图形形系系统统中中对对曲曲面面的的表表示、设计、显示和分析。示、设计、显示和分析。n n曲曲面面造造型型起起源源于于汽汽车车、飞飞机机、船船舶舶、叶叶轮轮等等的的外外形形放放样样工工艺艺,由由CoonsCoons、BezierBezier等等大大师师奠奠定定其其理理论论基基础础。如如今今已已形形成成了了以以有有理理B B样样条条曲曲面面(Rational(Rational B-spline B-spline Surface)Surface)参参数数化化特特征征设设计计和和隐隐式式代代数数曲曲面面(Implicit(Implicit Algebraic Algebraic Surface)Surface)表表示示这这两两类类方方法法 为为 主主 体体,以以 插插 值值(Interpolation)(Interpolation)、拟拟 合合(Fitting)(Fitting)、逼逼近近(Approximation)(Approximation)这这三三种种手手段段为为骨架的几何理论体系。骨架的几何理论体系。一一.曲面造型的发展曲面造型的发展n n19641964年美国麻省理工学院的年美国麻省理工学院的CoonsCoons提出给定封闭曲提出给定封闭曲线的四条边界定义一块曲面的的曲面描述方法。这线的四条边界定义一块曲面的的曲面描述方法。这种方法存在形状控制与连接问题。种方法存在形状控制与连接问题。n n19711971年法国雷诺汽车公司的年法国雷诺汽车公司的BezierBezier提出一种由控制提出一种由控制多边形设计曲线的新方法。该方法简单易用,而且多边形设计曲线的新方法。该方法简单易用,而且解决了整体形状控制问题,为曲面造型的进一步发解决了整体形状控制问题,为曲面造型的进一步发展奠定了坚实的基础。展奠定了坚实的基础。BezierBezier方法仍存在连接问题方法仍存在连接问题和局部修改问题。和局部修改问题。n n19741974年提出了年提出了B B样条方法,该方法继承了样条方法,该方法继承了BezierBezier方方法的一切优点,克服了法的一切优点,克服了BezierBezier方法存在的缺点,较方法存在的缺点,较成功地解决了局部控制问题和连接问题,从而使自成功地解决了局部控制问题和连接问题,从而使自由型曲线曲面形状的描述问题得到较好解决。不能由型曲线曲面形状的描述问题得到较好解决。不能精确表示圆锥曲线及初等解析曲面,造成了产品几精确表示圆锥曲线及初等解析曲面,造成了产品几何定义的不唯一。曲线曲面没有统一的数学描述形何定义的不唯一。曲线曲面没有统一的数学描述形式,容易造成生产管理混乱。式,容易造成生产管理混乱。n n19751975年年以以来来美美国国SyracuseSyracuse大大学学的的VersprilleVersprille首首次次提提出出有有理理B B样样条条(NURBS)(NURBS)方方法法。后后来来PieglPiegl和和TillerTiller等等人人的的功功绩绩,使使NURBS NURBS 方方法法成成为为现现代代曲曲面面造造型型中中最为广泛流行的技术。最为广泛流行的技术。n nNURBS NURBS 方方法法可可以以精精确确地地表表示示二二次次规规则则曲曲线线曲曲面面,实实现现了了用用统统一一的的数数学学形形式式表表示示规规则则曲曲面面与与自自由由曲曲面面。具具有有可可影影响响曲曲线线曲曲面面形形状状的的权权因因子子,使使形形状状更更宜宜于于控控制制和和实实现现;NURBSNURBS方方法法是是非非有有理理B B样样条条方方法法在在四四维维空空间间的的直直接接推推广广,多多数数非非有有理理B B样样条条曲曲线线曲面的性质及其相应算法也适用于曲面的性质及其相应算法也适用于NURBSNURBS曲线曲面。曲线曲面。n n国国际际标标准准化化组组织织(ISO)(ISO)于于19911991年年颁颁布布了了关关于于工工业业产产品品数数据据交交换换的的STEPSTEP国国际际标标准准,将将NURBSNURBS方方法法作作为为定定义义工工业业产产品品几几何何形形状状的的唯唯一一数数学学描描述述方方法法,从从而而使使NURBSNURBS方方法法成成为为曲曲面面造造型型技技术术发发展展趋趋势势中中最最重重要要的基础。的基础。计算机图形显示计算机图形显示计算机图形显示计算机图形显示真实性真实性实时性实时性交互性交互性几何设计对象几何设计对象多样性多样性特殊性特殊性拓扑结构复杂性拓扑结构复杂性制造工业制造工业一体化一体化集成化集成化网络化网络化激光测距扫描激光测距扫描三维数据采样技术三维数据采样技术及硬件设备完善及硬件设备完善曲曲曲曲面面面面造造造造型型型型研研研研究究究究的的的的开开开开拓拓拓拓创创创创新新新新曲面变形曲面变形曲面重建曲面重建曲面简化曲面简化曲面转换曲面转换曲面等距性曲面等距性基于网格细分基于网格细分的离散造型的离散造型 曲面造型的发展趋势曲面造型的发展趋势 二.曲线和曲面的理论基础 2.1 曲线的参数表示曲线的参数表示 曲线的参数方程 给定一个t值,就得到曲线上一点的坐标。当t在参数域a,b内连续变化时,就得到了曲线。为了方便起见,可以将a,b区间规范化成0,1。曲线参数表示矢量方程式 给定一个t值,就得到曲线上一点的坐标。当t在参数域a,b内连续变化时,就得到了曲线。为了方便起见,可以将a,b区间规范化成0,1。螺旋线的参数方程可以写为螺旋线的参数方程可以写为螺旋线的重要性质:螺旋线的重要性质:上升的高度与转过的角度成正比即上升的高度与转过的角度成正比即上升的高度上升的高度螺距螺距或曲线参数方程实例曲线参数方程实例2.2 曲面的参数表示曲面的参数表示 双参数描述表达式 曲面的范围通常用两个参数u和v的变化区间的矩形区域给出。这种曲面通常叫做矩形域曲面。参数u和v的变化区间一般规范为0,1,矢量方程式为 当参数u,v在参数域0,1中连续变化时,其对应点就形成一张曲面。向线称为曲面的参数曲线(等参数线)。u,v 分别等于0,1时的参数曲线。当u=u0时,表示曲面上一条沿V方向的空间曲线,称为向线,向线和曲面的边界曲线曲面的四个角点向线。当v=v0时,类似地,可以定义2.3 曲线曲面的参数连续曲线曲面的参数连续n n在在几几何何造造型型设设计计中中,单单一一的的曲曲线线往往往往难难以以描描述述复复杂杂的的形形状状,形形状状复复杂杂的的曲曲线线常常采采用用若若干干段段曲曲线线组组合合而而成成,相相邻邻的的曲曲线线段段间的连接则满足某种连续性条件。间的连接则满足某种连续性条件。n n如如果果参参数数曲曲线线有有n n阶阶连连续续的的导导矢矢,则则称称该该曲曲线线为为CnCn或或n n阶阶连连续续。一一般般来来说说,如如果果曲曲线线连连续续的的阶阶数数越越高高,那那么么曲曲线线就就越越光光滑滑。在在几几何何上上,C0C0,C1C1,C2C2依依次次表表示示曲曲线线的的位位置置、切切线线方方向向,曲曲率连续。率连续。n n对对于于组组合合曲曲线线,整整条条曲曲线线的的参参数数连连续续性性取取决决于于公公共共连连接接点点的的连连续续性性。如如果果在在公公共共连连接接点点达达到到k k阶阶参参数数连连续续,则则称称该该曲曲线线具有具有CkCk或或k k阶参数连续性。阶参数连续性。2.4 曲线曲面的几何连续曲线曲面的几何连续n n曲线具有切向连续但不一定具有曲线具有切向连续但不一定具有C1C1连续,具有曲率连续但不连续,具有曲率连续但不必一定具有必一定具有C2C2连续。参数连续是对参数曲线连接光滑程度的连续。参数连续是对参数曲线连接光滑程度的过分限制,不能准确客观地反映参数曲线连续的光滑程度。过分限制,不能准确客观地反映参数曲线连续的光滑程度。引入了称为视觉连续性的几何连续性,引入了称为视觉连续性的几何连续性,K K阶几何连续用阶几何连续用GKGK表示。表示。n n若两曲线段在公共连接点处具有公共的单位切矢(即关于弧若两曲线段在公共连接点处具有公共的单位切矢(即关于弧长的一阶导矢),则称它们在该点处具有一阶几何连续或长的一阶导矢),则称它们在该点处具有一阶几何连续或G1G1连续性。若在该点处又具有公共的曲率矢(即关于弧长的二连续性。若在该点处又具有公共的曲率矢(即关于弧长的二阶导矢),则称它们在该点处具有二阶几何连续性式阶导矢),则称它们在该点处具有二阶几何连续性式G2G2连续连续 。2.5 Bezier曲线曲线n n次次BezierBezier曲线用给定曲线用给定n+1n+1个控制顶点个控制顶点D0D0,D1D1,DnDn的表达式:的表达式:其中被称为Bernstein基函数。由控制顶点由控制顶点D0D0,D1D1,DnDn构成的多边形称为构成的多边形称为BezierBezier曲线的控曲线的控制多边形,又称为特征多边形。制多边形,又称为特征多边形。2.6 Bezier曲面曲面 给定给定 个空间上顶点个空间上顶点 ,次次BezierBezier曲面定义为:曲面定义为:。为u向Bernstein基函数,为v向Bernstein基函数,。2.7 B样条曲线样条曲线 给定给定n+1n+1个控制顶点个控制顶点 ,k k次次B B样条曲线表示为样条曲线表示为称为B样条基函数,是由节点矢量U:所决定的k次分段多项式。顺序连接控制顶点所形成的多边形成为控制多边形。移动定点对B样条曲线的影响 k次B样条曲线与k+1个顶点有关 2.8 B样条曲面样条曲面 可以利用可以利用u u、v v两个不同参数方向上的两个不同参数方向上的B B样条曲线构成张量积样条曲线构成张量积B B样样条曲面,一张条曲面,一张B B样条曲面由一组特征多边形网格或特征网格定义。样条曲面由一组特征多边形网格或特征网格定义。给定了给定了个控制顶点个控制顶点,又分别给定参数,又分别给定参数u u与与v v的次数的次数k k与与l l,和两个节点矢量,和两个节点矢量和和则则klkl次张量积次张量积B B样条曲面表示为:样条曲面表示为:其中其中分别为分别为n n次和次和m m次次B B样条曲线的基函数,样条曲线的基函数,构成的控制网格称为构成的控制网格称为B B样条曲面的特征多边形网格。样条曲面的特征多边形网格。可以用可以用B B样条的递推公式决定。由样条的递推公式决定。由2.9 非均匀有理非均匀有理B样条(样条(NURBS)曲线和曲面)曲线和曲面 n n非均匀有理非均匀有理B B样条(样条(Non-Uniform Rational B-Non-Uniform Rational B-SplineSpline)简称为)简称为NURBSNURBS。n nNURBSNURBS方法在方法在CAGDCAGD领域获得了广泛的应用,在国际标领域获得了广泛的应用,在国际标准组织(准组织(ISOISO)颁布的工业产品几何标准)颁布的工业产品几何标准STEPSTEP,规定,规定自由曲线、曲面用自由曲线、曲面用NURBSNURBS表示。表示。n n在在CAD/CAMCAD/CAM领域,领域,NURBSNURBS方法最重要的优点是其统一方法最重要的优点是其统一描述自由曲线、曲面和初等曲线、曲面的能力,因描述自由曲线、曲面和初等曲线、曲面的能力,因而,当几何形体同时存在自由曲线曲面和解析曲线而,当几何形体同时存在自由曲线曲面和解析曲线曲面时,应用曲面时,应用NURBSNURBS方法最为有效。方法最为有效。2.9.1 NURBS曲线曲线 k k次次NURBSNURBS曲线方程用分段的有理多项式函数表示:曲线方程用分段的有理多项式函数表示:k k次次NURBSNURBS曲线方程用有理基函数表示:曲线方程用有理基函数表示:式中称为k次有理基函数,具有和k次B样条基函数相同的性质 式中:分别与首、末权因子。为由节点矢量节点矢量中的节点数为m=n+k+1,n为控制点数,k为B样条基函数的次数。决定的k次B样条基函数。控制顶点相联系。权因子2.9.2 NURBS曲面曲面式中:控制顶点网权因子:v向节点矢量:沿v向的l次B样条基函数:沿u向的k次B样条基函数:u向节点矢量uvNurbsNurbs曲线数据结构图曲线数据结构图 NurbsNurbs曲面数据结构图曲面数据结构图 2.9.3 NURBS曲面的数据结构曲面的数据结构曲线、曲面数据结构的编程实现曲线、曲面数据结构的编程实现曲线、曲面数据结构的编程实现曲线、曲面数据结构的编程实现 该该曲曲线线、曲曲面面数数据据结结构构均均为为双双链链表表结结构构,并并且且链链表表内内还还包包括括若若干干个个双双链链表表(控控制制点点链链表表、节节点点链链表表等等)。采采用用VCVC指指针针类类型型的的集集合合样样板板类类实实现现这这种种双双链链表表结结构构,使使得得对对链链表表中中节节点点的的插插入入、删除和修改非常直观。删除和修改非常直观。classCurve public:intCurveNo;*曲线号*intk;*曲线次数*ControlPointCP;*控制点指针*KnotVectorKV;*节点矢量指针*classControlPointpublic:intVertexNo;*控制点序号*doubleVertex3;*控制点坐标*doubleWeight;*控制点权因子*public:voidFormatControl(CStringstr);classKnotVectorpublic:intKnotNo;*节点序号*intMultiplicity;*节点重复度*doubleKnotValue;*节点值*public:voidFormatKnot(CStringstr);VCVC写的写的NURBSNURBS曲线数据结构曲线数据结构classSurfaceControlPoint*Up;ControlPoint*Vp;KnotVector*KU;KnotVector*KV;VCVC写的写的NURBSNURBS曲面的数据结构曲面的数据结构控制点、节点的可视化实现控制点、节点的可视化实现 为实现对控制点、节点链表实时进行插入、删除和修改等操作,可将这些操作同对话框联系起来。并通过操作对话框上的控件,实现对控制点、节点链表实时插入、删除和修改等操作过程的可视化。利用VC实现控制点链表的插入、删除和修改等操作过程的可视化的过程如下:(2)建立与对话框相联系的类CmodifierVertex,同时编写与按钮 相 关 的 成 员 函 数 OnAdd()、OnInsert()、OnUpdate()、OnRemoveAt()和OnRemoveAll();(1)建立如图1所示的对话框,对话框中有按钮Add、Insert、Update、RemoveAt、RemoveAll,可对控制点链进行操作;有组合框可显示控制点链表中的数据;(3)将控制点链表中的数据在组合框中显示出来。voidCModifierVertext:OnAdd()TODO:Addyourcontrolnotificationhandlercodehereif(UpdateData()!TRUE)return;ControlPoint*pControlnewControlPoint;pControlVertexNom_VertexNo;pControlVertex0m_Vertexx;pControlVertex1m_Vertexy;pControlVertex2m_Vertexz;pControlWeightm_Weight;ControlPoint_ListAddTail(pControl);AddToListBox(pControl);*将数据添加到组合框*添加操作的程序设计实例三.OpenGL基本程序框架 n nOpenGLOpenGL三维图形标准是由三维图形标准是由ATATT T、IBMIBM、DECDEC、SUNSUN、HPHP、MicrosoftMicrosoft和和SGISGI等多家公司在等多家公司在GLGL图形库标准的基础上联合图形库标准的基础上联合推出的开放式标准,它的出现彻底改变过去只能依赖于价推出的开放式标准,它的出现彻底改变过去只能依赖于价格昂贵的图形工作站及复杂的三维图形软件从事三维图形格昂贵的图形工作站及复杂的三维图形软件从事三维图形计算机应用的历史,使广大程序员能够在计算机应用的历史,使广大程序员能够在PCPC机上用机上用C C语言语言开发出复杂的三维图形。开发出复杂的三维图形。n n由于由于OpenGLOpenGL具有跨平台性、简便、高效、功能完善,目前具有跨平台性、简便、高效、功能完善,目前已经成为三维图形制作中事实上的工业标准。它不仅提供已经成为三维图形制作中事实上的工业标准。它不仅提供了绘制点、线、多边形等基本形体的函数,还提供了绘制了绘制点、线、多边形等基本形体的函数,还提供了绘制复杂三维曲线曲面和三维形体的函数。由于复杂三维曲线曲面和三维形体的函数。由于OpenGLOpenGL在进行在进行几何建模时是以顶点为图元,由点构成线,再由线及其拓几何建模时是以顶点为图元,由点构成线,再由线及其拓扑结构组成多边形曲面,因此应用扑结构组成多边形曲面,因此应用OpenGLOpenGL提供的建模函数提供的建模函数可构造出几乎所有的三维模型。可构造出几乎所有的三维模型。OpenGL的作用机制n nOpenGLOpenGL的的作作用用机机制制是是客客户户(ClientClient)服服务务器器(ServerServer)机机制制,客客户户(用用OpenGLOpenGL绘绘制制图图形形的的应应用用程程序序)向向服服务务器器(OpenGLOpenGL内内核)发送核)发送OpenGLOpenGL指令,由服务器负责解释执行这些命令。指令,由服务器负责解释执行这些命令。n nOpenGLOpenGL图图形形库库被被封封装装在在动动态态连连接接库库opengl32.dllopengl32.dll内内,在在使使用用时时从从客客户户应应用用程程序序发发出出的的对对OpenGLOpenGL接接口口函函数数的的调调用用首首先先被被opengl32.dllopengl32.dll处处理理,然然后后传传送送给给服服务务器器并并由由Winsrv.dllWinsrv.dll做做进进一一步步处处理理后后传传给给Win32 Win32 DDIDDI(Device Device Drivers Drivers Interface,Interface,设设备备驱驱动动接接口口),最最后后把把处处理理过过的的图图形形命命令令送送给给视视频频显显示示驱驱动动程序完成最终的显示。程序完成最终的显示。n n由由于于OpenGLOpenGL的的辅辅助助库库函函数数对对于于自自由由曲曲线线曲曲面面的的绘绘制制提提供供有有NURBSNURBS编程接口,因此使用起来比较简单。编程接口,因此使用起来比较简单。n n使用使用OpenGLOpenGL之前,必须通过初始化代码对其进行初始化,并之前,必须通过初始化代码对其进行初始化,并定义像素的存储格式等信息。定义像素的存储格式等信息。客户(客户(ClientClient)(用(用OpenGLOpenGL绘制图形的应用程序绘制图形的应用程序)服务器(服务器(ServerServer)(OpenGLOpenGL内核)内核)发送发送OpenGLOpenGL指令指令解释执行命令解释执行命令OpenGLOpenGL图形库图形库动态连接库动态连接库opengl32.dllopengl32.dll对对OpenGLOpenGL接口函数的接口函数的调用调用设备驱动接口设备驱动接口 (Device Drivers Interface)Device Drivers Interface)图形命令图形命令显示显示NURBSNURBS编程接口编程接口NURBSNURBSNURBSNURBS程序程序程序程序OpenGL的作用机制PIXELFORMATDESCRIPTOR pixelDesc;/像素存储格式化,对结构变量进行了填充;pixelDesc.nSize=sizeof(PIXELFORMATDESCRIPTOR);/pfd的大小pixelDesc.nVersion=1;/版本号pixelDesc.dwFlags=PFD_DRAW_TO_WINDOW|/支持窗口PFD_SUPPORT_OPENGL|/支持OpenGLPFD_DOUBLEBUFFER;/支持双缓存pixelDesc.iPixelType=PFD_TYPE_RGBA;/RGBA类型pixelDesc.cColorBits=32;/32位色深度pixelDesc.cRedBits=8;/各颜色位pixelDesc.cRedShift=16;pixelDesc.cGreenBits=8;pixelDesc.cGreenShift=8;pixelDesc.cBlueBits=8;pixelDesc.cBlueShift=0;pixelDesc.cAlphaBits=0;/无alpha缓存pixelDesc.cAlphaShift=0;/忽略转换位pixelDesc.cAccumBits=64;/各累计位pixelDesc.cAccumRedBits=16;pixelDesc.cAccumGreenBits=16;pixelDesc.cAccumBlueBits=16;pixelDesc.cAccumAlphaBits=0;pixelDesc.cDepthBits=32;/32位深度缓存pixelDesc.cStencilBits=0;/无模版缓存pixelDesc.cAuxBuffers=0;/无辅助缓存pixelDesc.iLayerType=PFD_MAIN_PLANE;/主层pixelDesc.bReserved=0;/保留pixelDesc.dwLayerMask=0;pixelDesc.dwVisibleMask=0;pixelDesc.dwDamageMask=0;/设置一个线程的当前绘图描述表wglMakeCurrent(hDC,m_hGLContext);/对自由曲线曲面的绘制DoNURBS();/释放绘图描述表wglMakeCurrent(hDC,NULL);/释放RC(一般在WM_DESTORY消息响应函数OnDestory()中进行)wglDeleteContext(m_hGLContext);至此,一个基于OpenGL的基本程序框架构造完毕,具体对自由型曲线曲面的构造工作在DoNURBS()中完成。在绘制自由曲线曲面之前用wglCreateContext()创建一个渲染上下文RC并将其作为参数,通过wglMakeCurrent()来建立一个当前的绘图描述表,并在绘制完毕后将其释放。OpenGL绘制自由曲线曲面绘制自由曲线曲面 OpenGL的一个很大的优点就是在构造光滑曲线和曲面时只需少量控制点就完成精确描述,而不必靠大量的基本图元去拟合。NURBS是B样条的扩展,用OpenGL的NURBS编程接口绘制自由曲线曲面只需预先对节点序列和控制点进行定义即可完成对NURBS样条的精确描述。/节点序列GLfloat Notes8=0.0f,0.0f,0.0f,0.0f,1.0f,1.0f,1.0f,1.0f;/定义控制点for(int i=0;i4;i+)for(int j=0;j4;j+)LinchpinPtij0=(GLfloat)(3.0f*(i-0.5f);LinchpinPtij1=(GLfloat)(3.0f*(j-0.5f);if(0i&i3&0j&j3)LinchpinPtij2=4.0f;elseLinchpinPtij2=-4.0f;n n使用OpenGL提供的NURBS编程接口进行编程比较简洁:首先创建一个NURBS曲面对象并根据需要对其属性进行设置,在调用了gluBeginSurface()或是gluBeginCurve()后就可以根据前面定义的控制点对其曲线曲面进行绘制了,绘制完毕后以gluEndSurface()或gluEndCurve()结束:/创建NURBS曲面对象Nurb=gluNewNurbsRenderer();/设置NURBS曲面对象属性gluNurbsProperty(Nurb,GLU_SAMPLING_TOLERANCE,30.0f);gluNurbsProperty(Nurb,GLU_DISPLAY_MODE,GLU_FILL);/开始NURB区间绘制gluBeginSurface(Nurb);/定义NURBS曲面的形状gluNurbsSurface(Nurb,8,Notes,8,Notes,4*3,3,&LinchpinPt000,4,4,GL_MAP2_VERTEX_3);/结束曲面绘制gluEndSurface(Nurb);glPopMatrix();/强制绘图,不驻留缓存glFlush();其中其中gluNurbsSurfacegluNurbsSurface()是定义()是定义NURBSNURBS曲线曲面曲线曲面的关键函数,其函数原型定义如下:的关键函数,其函数原型定义如下:void gluNurbsSurface(GLUnurbsObj*nobj,/NURBS曲面对象GLint sknot_count,/u方向节点数目GLfloat*sknot,/u方向节点数组指针GLint tknot_count,/v方向节点数目GLfloat*tknot,/v方向节点数组指针GLint s_stride,/u方向控制点数据跨度GLint t_stride,/v方向控制点数据跨度GLfloat*ctlarray,/控制点数组指针GLint sorder,/u方向上多项式阶数GLint torder,/v方向上多项式阶数GLenum type/确定求值器类型);另有gluNurbsCurve()函数也可用于NURBS曲线曲面的定义,使用方法与之类似。光照和材质的渲染 为更真实地对实体进行三维建模,需要对已构造成型的自由型曲线曲面进行光照和材质上的渲染。OpenGL对此提供有一系列的用于建立光照模型的库函数,使用户可以很方便地在三维场景中建立所需的光照模型。OpenGL中的光照模型由环境光(Ambient Light)、漫射光(Diffuse Light)、镜面反射光(Specular Light)等组成,同时还可设置光线衰减因子来模拟真实的光源效果。GLfloat Light_position=1.0f,1.0f,1.0f,0.0f,;GLfloat Light_diffuse=1.0f,1.0f,0.0f,1.0f,;glLightfv(GL_LIGHT0,GL_POSITION,Light_position);/定义光源位置glLightfv(GL_LIGHT0,GL_DIFFUSE,Light_diffuse);/定义光源漫射光glEnable(GL_AUTO_NORMAL);/自动生成曲面法向量glEnable(GL_LIGHTING);/启动光照模型;glEnable(GL_LIGHT0);/使光源GL_LIGHT0有效 OpenGL中所指的材质均指构成三维实体的材料在光照模型中对于R、G、B三原色的反射率。与光源的定义类似,材质的定义分环境、漫射、镜面反射等成分,另外还有镜面高光指数、辐射成分等等:定义了一个黄色光源的代码:定义了一个黄色光源的代码:/设置材质的反射成分GLfloat mat_ambient=0.8f,0.8f,0.8f,1.0f;GLfloat mat_diffuse=0.8f,0.0f,0.0f,1.0f;/紫色GLfloat mat_specular=1.0f,0.0f,1.0f,1.0f;/镜面高光亮紫色 GLfloat mat_shininess=100.0f;/高光指数glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);/定义环境光反射率glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);/定义漫射光反射率glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);/定义镜面光反射率glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);/定义高光指数 OpenGL中材质的颜色与光照模型中光源的颜色含义是不同的。对于在光源中的定义,R、G、B分别表示三原色在光源中所占的比率;而对于材质的定义,R、G、B则表示具有这种材质属性的物体对于三原色的反射率,场景中物体所呈现的颜色是光照模型、材质定义共同作用的结果。计算机辅助设计曲面造型的应用1 1)对没有的产品及零部件建立)对没有的产品及零部件建立3D3D模型(正向设计)模型(正向设计)3D CAD3D CAD3D CAD3D CAD系统(系统(系统(系统(Pro/EPro/EPro/EPro/E、UGUGUGUG、MDT)MDT)MDT)MDT)建模建模建模建模2 2)对已有的实物样件进行数字化(逆向设计)对已有的实物样件进行数字化(逆向设计)3D3D3D3D扫描仪、三坐标测量机扫描仪、三坐标测量机扫描仪、三坐标测量机扫描仪、三坐标测量机点云点云点云点云反求反求反求反求3D3D3D3D模型模型模型模型3D3D3D3D模型模型模型模型 逆向工程 Reverse Engineering产品创意设计产品创意设计制作油泥模型制作油泥模型三维扫描三维扫描三维点云三维点云反求反求三维模型三维模型CADCAD制作制作p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后Thank You在别人的演说中思考,在自己的故事里成长Thinking In Other PeopleS Speeches,Growing Up In Your Own Story讲师:XXXXXX XX年XX月XX日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!