三维实体建模计算机科学与技术系计算机图形学信息科学与工程学院计算机科学与技术2三维图形的基本问题三维图形的基本研究内容:三维物体的表示-建模消除隐藏面与隐藏线–消隐绘制真实感图形方法–绘制在二维屏幕上显示三维物体–投影计算机图形学信息科学与工程学院计算机科学与技术3三维物体•三维物体,如加工部件,利用体素几何变换或集合运算•曲面形状的物体,如汽车、飞机,利用曲面造型•自然景物,如树、植物,利用分形技术•场景特殊效果,如烟雾、火焰、云,利用物理模型模拟计算机图形学信息科学与工程学院计算机科学与技术4模型表示•现实世界中的物体都是三维的。三维绘图就是要表现三维物体,主要要表现物体的立体感。•纸张和屏幕都是二维的。用二维图形也能画出三维物体,但只是视觉上的假象,且只能静态地表现三维物体。•三维绘图先要建立三维物体的计算机模型(Model),或称计算机表示(Representation)。依照计算机模型显示物体的三维景象。•建模技术(Modeling)是计算机视觉、计算机动画、计算机虚拟现实等领域中建立3D实体模型的关键技术。计算机图形学信息科学与工程学院计算机科学与技术5实体建模技术•机内表示与显示是两回事。•计算机内部可能只是记下了三个面,它是人通过视觉将显示画面理解为立方体。•由于计算机系统依据三维模型生成画面,因此计算机模型要准确地刻画三维物体,不能存在这种二义性。实体建模技术是指描述几何模型的形状和属性的信息并存于计算机内,由计算机生成具有真实感的可视的三维图形的技术。计算机图形学信息科学与工程学院计算机科学与技术6三维模型分类•线框模型•表面模型•实体模型计算机图形学信息科学与工程学院计算机科学与技术7三维模型分类-线框模型只是用几何体的边线来表示物体的外形,模型中只记录点、边。不能作消除隐藏线(面)处理,表示的模型有二义性,而且不能绘制明暗效果图。计算机图形学信息科学与工程学院计算机科学与技术8三维模型分类-表面模型是利用物体的外表面来构造模型,模型中记录点、线和面的信息。表面模型的优点是可以进行面着色,隐藏面消隐,但物体内部是空的,缺点无法进行实体之间的并、交、差运算。计算机图形学信息科学与工程学院计算机科学与技术9三维模型的类别实体模型模型中记载点、线、面和体的信息,能作消隐处理,也能作体积、重量等物性计算。实体模型与表面模型的不同之处在于确定了表面的哪一侧存在实体。在表面模型的基础上,可以采用有向棱边隐含地表示出表面的外法矢方向。右手螺旋法则:4个手指沿闭合的棱边方向,大拇指方向为表面的外法向方向计算机图形学信息科学与工程学院计算机科学与技术10面号边号11234...边号点号112256...23点号XYZ12132425323645......4....面表边表点表实体模型的基本数据结构三表结构面表和边表中反映的是拓扑信息点表中反映的是几何信息实体建模是基于数据结构的计算机图形学信息科学与工程学院计算机科学与技术11拓扑信息与几何信息拓扑信息:描述几何元素间的连接关系。有人也称之为非度量几何。拓扑同类将拓扑信息和几何信息分开放置,有利于表达形体的变形。计算机图形学信息科学与工程学院计算机科学与技术12关于三表结构的讨论简单的三表结构还不是实体模型,因为不能表达形体的内部。为了表达形体的内部,要引入“环”的概念,来定义面的方向。1234123环具有(从物体外部看)顺时针或逆时针的方向。依据右手法则,确定外环和内环:外环:面的外边界环采用逆时针方向,(也是物体)的外侧。一个面只有一个外环。内环:有孔洞的面,空洞边界采用顺时针方向,一个面可以有多个内环。计算机图形学信息科学与工程学院计算机科学与技术13关于三表结构的讨论加入环的信息面表面号环1点号1-点号2-点号3-点号4……也可表示为面1外环体面2内环1内环2计算机图形学信息科学与工程学院计算机科学与技术14三表结构的实现•三表结构可以用指针、对象等多种方法实现。•例:在绘制立方体线框图时用数组表示立方体面点关系(拓扑关系)facePoint[f][i]=pointNumf:1–6,面号;i:1–4,第m个面的第i个点;pointNum:1–8,点号;点坐标(几何信息)point[p][j]=zzp:1–8,点号;zz:坐标值;j=1/2/3表示x/y/z坐标;01234567计算机图形学信息科学与工程学院计算机科学与技术15staticconstGLfloatvertex_list[][3]={-0.5f,-0.5f,-0.5f,//00.5f,-0.5f,-0.5f,//1-0.5f,0.5f,-0.5f,//20.5f,0.5f,-0.5f,//3-0.5f,-0.5f,0.5f,//40.5f,-0.5f,0.5f,//5-0.5f,0.5f,0.5f,//60.5f,0.5f,0.5f,//7};staticconstGLintindex_list[][4]={0,2,3,1,0,4,6,2,0,1,5,4,4,5,7,6,1,3,7,5,2,6,7,3,};for(inti=0;i6;++i)//{glBegin(GL_LINE_LOOP);for(intj=0;j4;++j)//glVertex3fv(vertex_list[index_list[i][j]]);glEnd();}拓扑信息几何信息计算机图形学信息科学与工程学院计算机科学与技术16正四面体•建立正四面体的伴随立方体可以很容易地确定正四面体的顶点表和面表。xyzV1OV3V2V0正四面体几何模型正四面体的外接球和其伴随立方体的外接球是同一个球;正四面体外接球的直径就是立方体的对角线。假设立方体的半边长为a,令V0点为(a,a,a)。顶点坐标V0(a,a,a)V1(a,-a,-a)V2(-a,-a,a)V3(-a,a,-a)面顶点F01,2,3F10,3,2F20,1,3F30,2,1计算机图形学信息科学与工程学院计算机科学与技术17体素的构造•体素,定义的简单形体•对体素构造三表结构如圆锥,转变为多边形,即网格,共有101个顶点vertex290条边edge100个面face输入底面中心坐标(x,y,z)、半径R、圆锥高h,由程序生成上述面–环–边–点间的关系。其他体素,如长方体、棱柱、棱锥、棱台、圆柱、圆锥、圆台计算机图形学信息科学与工程学院计算机科学与技术18体素的集合运算•构造复杂形体要对体素进行集合运算,集合运算包括并、交、差运算。BAA-BA∪BA∩B计算机图形学信息科学与工程学院计算机科学与技术19集合运算的有效性•集合运算可能引起降维:•产生了无厚度的二维面(悬面),这在实体造型中是不允许的。•三维空间中有效的形体叫正则实体,能产生正则形体的集合运算叫正则集合运算。ABA∩B计算机图形学信息科学与工程学院计算机科学与技术20欧拉检验•一般集合运算要经过检验,去掉悬点、悬边和悬面。检验的方法是通过欧拉(Euler)公式。简单多面体的欧拉公式:V–E+F=2带孔洞多面体的欧拉公式:V–E+F-H=2(C–G)其中V:顶点个数;E:边个数;F:面个数H:多面体表面上孔的个数G:贯穿多面体的孔的个数C:独立的、不相连接的多面体数计算机图形学信息科学与工程学院计算机科学与技术21常用的实体建模方法常用方法:体素定义和描述+集合运算•扫描表示•构造表示-结构实体几何CSG•边界表示R-rep实体(建模)造型技术是指描述几何模型的形状和属性的信息并存于计算机内,由计算机生成具有真实感的可视的三维图形的技术。计算机图形学信息科学与工程学院计算机科学与技术22扫描(Sweep)法-体素的扩展•一些形体还是不能由简单体素+正则集合运算生成。SectionRoute•扫描方法计算机图形学信息科学与工程学院计算机科学与技术23扫描(Sweep)法-体素的扩展计算机图形学信息科学与工程学院计算机科学与技术24扫描(Sweep)法-体素的扩展•记录信息(环、线、点)•物体面的构造(前、后、侧)计算机图形学信息科学与工程学院计算机科学与技术25构造实体几何CSG•构造实体几何:先定义一些形状比较简单的常用体素,然后用集合运算并、交、差把体素修改成复杂形状的形体。体素+集合运算立方体、圆柱、圆锥等,或半空间并、交、差构造实体几何CSG-ConstructiveSolidGeometry计算机图形学信息科学与工程学院计算机科学与技术26构造实体几何差(-)差(-)2p1p2p平移xDxDxDp=体素用有序的二叉树表示,其叶结点或是体素,或是刚体运动的变换参数。中间结点或是正则的集合运算或是刚体的几何变换。计算机图形学信息科学与工程学院计算机科学与技术27边界表示(BRep表示)•按照体-面-环-边-点的层次,详细记录了构成实体的所有几何元素的几何信息及其相互连接的拓扑关系。•边界表示的一个重要特点是在该表示法中,描述形体的信息包括几何信息(Geometry)和拓扑信息(Topology)两个方面。体面面面边边边环环环点点拓扑信息描述形体上的顶点、边、面的连接关系,拓扑信息形成物体边界表示的“骨架”。形体的几何信息犹如附着在“骨架”上的肌肉。计算机图形学信息科学与工程学院计算机科学与技术28边界表示(BRep表示)•Brep表示的优点是:–表示形体的点、边、面等几何元素是显式表示的,使得绘制Brep表示的形体的速度较快,而且比较容易确定几何元素间的连接关系;–容易支持对物体的各种局部操作,比如进行倒角。–便于在数据结构上附加各种非几何信息,如精度、表面粗糙度等。计算机图形学信息科学与工程学院计算机科学与技术29边界表示(BRep表示)•Brep表示的缺点是:–数据结构复杂,需要大量的存储空间,维护内部数据结构的程序比较复杂;–Brep表示不一定对应一个有效形体,通常运用欧拉操作来保证Brep表示形体的有效性、正则性等。•Brep表示覆盖域大,原则上能表示所有的形体,而且易于支持形体的特征表示等,Brep表示已成为当前CAD/CAM系统的主要表示方法。计算机图形学信息科学与工程学院计算机科学与技术30实例计算机图形学信息科学与工程学院计算机科学与技术31实例计算机图形学信息科学与工程学院计算机科学与技术32曲面体建模•曲面体,如球体、圆柱体、圆锥体、圆环体等光滑物体•曲面体由若干个三角平面片或四边形平面片(网格)构成,随着网格数量增多,较好逼近光滑曲面计算机图形学信息科学与工程学院计算机科学与技术33光滑物体•多面体是由平面多边形组成的物体,多面体没有方程表示形式,用顶点表和面表直接给出数据结构定义。•对于球、圆柱、圆锥、圆环等光滑物体,表面有确定的参数方程表示形式。•绘制光滑物体时,需要进行网格划分,即把光滑曲面离散为平面多边形表示,这些多边形一般为平面四边形或三角形网格。•光滑物体的网格顶点表和面表使用物体的参数方程离散计算后得到。计算机图形学信息科学与工程学院计算机科学与技术34球体•球面表示球体,球面是一个二次曲面•球心在原点,半径为r的球面三维坐标系,球面的参数方程表示为)20,0(cossincossinsinpprzryrxV(x,y,z)xyz(x,z)Orαβα为纬度角,从北向南递增,即18003600为经度角,即计算机图形学信息科学与工程学院计算机科学与技术35球体•球面可以使用经纬线划分成若干个小面,称为经纬区域•南北极区域采用三角网格逼近,其他区域采用四边形网格逼近•假定将球面划分为n1=4个纬度区域,n2=8个经度区域。则纬度方向的角度增量和经度方向的角度增量均为α=β=45°,共有(n1-1)n2+2=26个顶点。glutWireSphere(0.8,8,4);glutWireSphere(0.8,20,10);计算机图形学信息科学与工程学院计算机科学与技术36球体网格•球面网格化的方法分为递归划分法P0P1P2P01=(P0+P1)/2P12=(P1+P2)/2P20=(P2+P0)/2P1P2P0计