计算机图形学_华中科技大学_中国大学MOOC(慕课)


5.1_初识造型技术

提纲

现实生活中有很多不同类型的物体,比如树、华、烟云、飞机、沙发等等,那么在计算机内对这些对象图形化也就会遇到不同的问题。

没有一个普适的方法能够描述具有各种不同特征的物体,所以,必须涉及图形对象在计算机内的多种表示方法。

一般把研究如何在计算机中建立恰当的模型,表示不同图形对象的技术称为造型技术。

不规则对象是指不能用欧式几何加以描述的对象,比如山水树、草,云烟等等。

在不规则对象的造型系统中,大多采用过程是模拟。也就是说,用一个简单的模型以及少量的易于调节的参数来表示一大类对象。

分数维造型、粒子系统都属于过程式模拟。图形对象的描述离不开大量的图形信息和非图形信息。 比如表示这些对象图形的线型、颜色、亮度以及供模拟分析用的质量、比重、体积,这些数据,是有关对象的非图形信息。而对象以及构成它的点、线、面的位置,相互间的关系和几何尺寸就是图形信息。图形信息, 又分为几何信息和拓扑信息两个方面。

几何信息一般指形体在欧氏空间中的位置和大小。

而拓扑信息,就是形体各分量,比如点、边、面的数目,以及相互间的连接关系。

构成图形的基本元素,就包括体、面、环、边、顶点这样的层次结构。

其中顶点,是一个0维的几何元素,它可以存在在一维、二维和三维空间中。

边,是一个一维几何元素。对于一个正则形体来说,压边是两个零面的交集,对于非正则形体,边有可能是多个零面的交集。边的形状,可以是直线,也可以是曲线。对于正则形体,我们后续会介绍它的概念。

环,是一个二维的几何元素,是由有序有向边组成的面的一个封闭边界。

外环的边通常是按逆时针方向排序。内环的边,通常按顺时针方向排序,大家可以看这幅图。

这样一来,大家想一想,在面上如果沿一个还前进,左侧总是面对着内测。而右侧,就总是面对着外侧。

面也是一个二维几何元素,它可以没有内环,但是必须有且只有一个外环。面是有方向性的。一般,用其外法线的方向作为这个面的正向。面的正反很重要的,因为之后我们可能会给面正反用不同的材质和贴图。面的形状,可以是平面,也可以是曲面。

体则是三维几何元素了,由封闭的表面围成空间。那么它的边界是有限面的并集。

基于这些基本元素,几何造型,就可以看作是通过对点、线面体这些几何元素,经过平移、放缩、旋转等几何变换和并,交,叉这样的集合运算,产生实际的或者是想象的物体模型。

首先要明白什么是实体的有效性。我们来看看数学中的点、线、面、视,其所代表的真实世界中对象的一种抽象。因此,他们之间存在着一定的差距。比如数学中的平面是二维的,它没有厚度,体积为零。  可是在真实的世界中,一张纸无论多么薄,它也是一个三维形体,具有一定的体积。这种差距造成了在计算机中以数学方式描述的形体可能是无效的,也就是说在真实世界中不可能存在。

比如这里的一个形体。一个三维形体,却悬挂着一个二维的面,显然这样的形体是不存在的。

那么,客观存在的三维群体究竟应该具有怎样的性质?

第一,刚性,一个物体必须有一定的形状。

第二,维数的一致性。三维空间中,一个物体的各个部分都应该是三维的,也就是说必须有联通的内部,而不能有悬挂的或孤立的边界。

第三,他需要占据有限的空间,也就是体积是有限的。

第四是边界的确定性。也就是说,根据物体的边界,能区别出物体的内部和外部。

第五个是封闭性。它经过一系列的刚体运动以及任意序列的集合运算之后,仍然是有效的物体。

依据这种观点,三维空间中的物体可以看做是一个内部连通的三维点集。形象的说,是由其内部的典籍以及紧紧包着这些点的表皮组成的。

而物体的表面,也必须具有以下的性质。

第一,就是连通性。位于物体表面上任意两个点,都可以用实体表面上的一条路径连接起来。

第二,有界性。物体的表面可以把空间分为互不连通的两个部分,其中有一个部分是有界的。

第三,非自相交性。也就是说物体的表面不能自相交。

第四,可定向性,表面的两侧可以明确地定义出属于物体的内侧或者是外侧。

就定向性,我们可以给出两个著名的反例,一个是克莱因瓶。它存在着自相交而且不可定向的封闭曲面。

而我们小学数学中就接触过的莫比乌斯带,则具有单边不可定向性。它的造型,也是挺奇特的。因此,它们都不符合定向性的要求。

第五,闭合性,物体表面的闭合性事由表面上多边形网格各元素的拓扑关系决定的。比如每一条边具有两个顶点,而且仅有两个顶点。围绕任意一个面的,还具有相同数目的顶点及边等等。

那么为了定义一个有效的实体,这里给出了正则形体的定义。我们从点集拓补的角度给出它的定义。一个形体,可以看做内点和紧挨内点的表皮。如果说a是一个点集,那么定义点a的正则运算,R运算这样的。r*A=c*i*A

那么其中,i是取内点运算。而C,是取闭包的运算。

那么i*a也就是a的全体内点组成的集合。它是一个开集,就好像是物体的内部点。c*i*A,就是a的内点的B包,它是一个B级,就好像在内部点的基础上加上了表皮。

在这幅图里,我们就可以看到。A是一个带有孤立边的二维点集。可以分为内点和边界。B表示a的内点的集合,大家看,这时孤立边去掉了。C就表示是内点集的闭包,这就是一个正则集。我们就用这种方法来定义一个实体。那么实体的并交叉运算也可以基于正则运算来完成。

尽管正则形体可以描述一个三维的有效形体,但不是所有的正则形体都是实体模型的描述对象,比如这里的形体。他的两个立方体仅以一条棱相连接,这里,我们就会引入一个二维流形的概念,对其加以约束。所谓二维流形,指的是对于实体表面的任意一点,都可以找到一个围绕着它的任意小的领域,这个领域与平面上的一个圆盘式拓补等价的。

这意味着在这个领域与圆盘之间存在着连续的一一对应关系,比如这里的a和b所表示的。与此不同,如果实体表面上的一条边所连接的面多余两个,那么这条边上的任意一个点的小的领域都会包含着来自这些面上的点,因此与圆盘就不是拓补等价的,这就是非二维流形。比如这里的C,也就是两个立方体一条棱连接的情况。就会发现它并不符合二维流形。那么有了二维流形的概念之后,我们就可以这样来定义实体。

对于一个占据有限空间的正则形体,如果它的表面,是二维流形的,那么这个正则形体,就是实体。这个定义的条件是可以检测的,因此,可以由计算机来衡量一个形体是否为实体。

我们终于完整的定义实体了。当然,对于一些特殊的实体,比如平面、多面体,我们还有别的检测手段。比如欧拉公式就可以辅助我们对于多面体的有效性进行检测。

首先讨论简单多面体的情况。简单多面体,指的是那些经过连续的几何形变可以变化为一个球的多面体,也就是说与球拓补等价的那些多面体。欧拉公式证明,简单多面体的顶点数V,边数E,和面数F满足如下关系,V-E+F=2

再来看看非简单多面体的情况,也就是存在着孔的情况,比如这幅图就表示出了一个立方体具有一个贯穿的方孔和一个没有贯穿的方孔。这个时候大家看点数V是24,边数E是36,而面数F是15,显然这时候V-E+F不等于2。因此,需要对欧拉公式加以扩展,如果让H表示多面体表面上的孔的个数,G表示贯穿多面体的孔的个数儿,C表示独立的不相互连接的多面体数,

就是这样的V-E+F-H等于C和G的X的两倍。

显然,对于刚才这个形体,大家可以计算一下,扩展后的欧拉公式是适用的。

由于现在的曲面也经常用多面体来逼近。比如说求就是用多面体逼近的典型,因此,多面体的使用是很广泛的,那么欧拉公式的检测方法,也就很有价值。可是同时大家也需要注意,不管是简单的还是非简单的多面体,欧拉公式都只是检查实体有效性的必要条件,而不是充分条件。比如这里满足了欧拉公式,但是它并不是一个合格的形体。因此还要加上其余的检测方式。


5.2.1_样条的魔力_上_基本概念

提纲

在造型技术中,曲线和曲面的问题,是用样条来解决的。

首先,什么是样条?在绘图术语中,样条是通过一组指定点集而生成平滑曲线的柔性带。在计算机图形学中,样条曲线是指由多项式曲线段连接而成的曲线,在每段的边界处,满足特定的连续性条件。而样条曲面,可以使用两组样条曲线来进行描述。

在明白了样条的基本概念之后,我们来了解一下插值和逼近样条的概念。通常,会给定一组称为控制点的坐标点。那么这样就可以得到一条样条曲线。这些点,给出了曲线的大致形状。根据这些坐标的位置,可以使用以下的两种方式之一来选取分段连续性参数,多项式函数。当选取的多项式使得曲线通过每个控制点,那么所得的曲线,称为这组控制点的插值样条曲线。另一种情况,就是选取的多项式,使部分或全部控制点都不再生成的曲线上。这时候所得的曲线,称为这组控制点的逼近样条曲线。而构造插值和逼近样条曲面的方法,与曲线类似。

其实,一条样条曲线由控制点进行定义、建模和控制。通过交互选择控制点的空间位置,设计者可以建立一条初始的曲线。在对一组给定的控制点显示多项式拟合之后?设计者就可以重定位部分或全部的控制点,以重建曲线的形状。那么也可以插入额外的控制点来帮助设计者调整曲线的形状。另外,也可以通过对控制点进行变换来实现曲线对象的变换,比如平移,旋转,缩放等等。

那么就是包括了这组控制点的凸多边形边界就叫做凸壳。可以将一个二维曲线的凸壳形状设想成一个围绕控制点位置的拉紧的橡皮筋,使得每个控制点,或者在凸壳的边界上,或者,在凸壳的内部。因此,一个二维样条曲线的凸壳是一个凸多边形。凸壳提供了曲线或曲面与围绕控制点区域间的偏差的测量。多数情况下,样条以凸壳为界,这样,就保证了对象形态平滑的而不是不稳定的摆动着。

那么对于逼近样条?

连接控制点序列的折线通常会显示出来,以提醒设计者控制点的顺序。这一组连线,就称为曲线的控制图。这个控制图,还可以称为控制多边形,或者是特征多边形。而其实,控制图可以是一条折线。而不一定要是一个多边形。

有了这样的基础,我们再看看曲线的连续性。我们将样条的每一部分以参数坐标函数形式进行描述,也就是X等于XU,Y等于YU。Z等于ZU,其中参数U在U1和U2之间。为了保证分段参数曲线从一段到另一段平滑过渡。就可以在连接点的这个地方要求各种连续性条件。这里就有参数连续性和几何连续性两种。

其中参数连续性,就包括零阶,一阶和二阶参数连续性。连接参数连续性的极为C0连续性,可以简单地表示曲线相连,也就是。第一条曲线段在U2处的XYZ的值与第二条曲线段在U1处的XYZ的值相等。

而最左边的这幅图,就是这样的。仅仅在这里连接而已。一阶参数连续性,就系为C1连续性,说明,代表两条相邻曲线段的方程再相交处有相同的一阶导数,也就是切线斜率相同。

不但两端连接,而且切线的方向也是一致的。那么二阶参数连续性,就记为C2连续性,是指两条曲线段在交点处,有相同的一阶和二阶导数。再看看右边这幅图。不但两端连接切线的方向是一致的,而且切线的变化率也相同。当然,高阶参数连续性,也可以类似的定义。

而在参数连续性的这几种情况下,几何连续性,只要求两条曲线段在相交处的参数导数成正比。而不是必须相等。0阶几何连续性即为G0连续性,它与0阶参数连续性是相同的,也就是两条曲线段必定在公共点处有相同的坐标位置。

一阶几何连续性极为G1连续性,表示一阶导数,在两条相邻曲线段,这个交点的地方成比例。

如果曲线上的参数的位置即为Pu,切向量为Pu1,那么在G1连续性下,相邻曲线段在交点处的切线量的大小不一定相等。二阶几何连续性即为G2连续性,表示两条曲线段在相交处的一阶和二阶导数均成比例。也就是说,在G2连续性下,两条曲线段在交点处的曲率是相等的。

生成带有几何连续性条件的曲线与生成带有参数连续性条件的曲线有一些类似,但二者的曲线形状还是有些差别的。下面,我们做一下比较。对于几何连续性,曲线将向具有较大切向量的部分弯曲。比如这里的曲线C3上这个P1点出的切线量的值,就比曲线C1上P1点出的切线量要大。所以这个曲线就像具有较大切向量的C3部分弯曲了。


5.2.2_样条的魔力_下_样条表示

提纲

首先,看曲线。在给定了多项式的阶和控制点的位置后。给出一条具体的样条,表达是有三个等价的方法。

第一个方法,是列出一组加在样条上的边界条件。

第二个,是列出描述样条特征的行列式。

第三个是列出一组混合函数或者是奇函数。

确定如何组合指定的曲线的几何约束,以计算曲线路径上的位置。

看第一种形式。假设沿样条路径,有下列关于坐标的三次参数多项式表达式。

这个曲线的边界条件,一个是端点的坐标。X0和X1。以及还有端点处的一次导数,也就是在X0和X1的这个地方,求一阶导。那么这四个是确定ABCD值的充分条件。

那么第二种形式是什么?从边界条件中,通过将方程重写为矩阵乘积的形式,可以得到描述这个样条曲线的矩阵。

我们就可以记为u乘上一个C。其中u是参数u的幂次行矩阵。而C,是系数列矩阵。运用方程,就可以写出矩阵形式的边界条件。并且求得系数矩阵。那么C,就等于这样的两个矩阵相乘,其中这第一个矩阵,是一个四元素列矩阵。包含了控制点的坐标值和其他已经指定的几何约束。也就是边界条件。而这个Mspline,是一个四乘以四的矩阵,这个矩阵,将几何约束值转换成为多项式的系数,并且提供了样条曲线的特征。这样,我们就可以使用矩阵来代替C。

第三种形式,我们对刚才的这个矩阵的表达进行扩展。我们就可以。这里的K就从零到三,这样的一个求和了。这里的gk是约束参数。类似控制点坐标和控制点处的曲线斜率。而多项式BFk(u)就是混合函数或者是奇函数。

那么总结一下这三种形式

第一种,列出了一组加在样条上的边界条件。

第二种,是用矩阵形式给出的边界条件。

而第三种,就列出了一种混合函数或者是奇函数来进行约束。

看看曲面。通过使用某个空间区域中的一个控制点网格就可以来指定两组样条曲线了。这样,也就可以定义一个样条曲面。

可以看一下这里的曲面参数就两个了,一个u一个V,那么它的变化,一般来讲是零到一之间进行变化的。

一个经典的实例,那就是贝赛尔曲线和曲面。

那么贝赛尔曲线和曲面的发明人是皮埃尔_贝赛尔

那么他是法国机械和电气工程师,计算机几何建模的创始人。

他先后于1930和1931年毕业于法国国立高等工程技术学院。

并且,七七年获得了巴黎大学的博士学位,他因为发明了以其名字命名的贝塞尔曲线而闻名。这种样条逼近的方法,是他为雷诺汽车公司设计汽车车身而开发的。

贝塞尔曲线公式

这个贝赛尔的这个奇函数,实际上是一个伯恩斯坦多项式

贝塞尔曲线的特性了

第一个曲线,总是通过第一个和最后一个控制点。

第二个,曲线十点处的切线落在头两个控制点的连线上,而曲线中点处的切线,落在后两个控制点的连线上。

第三个, 这个曲线,落在控制点的凸壳内。

那么这种贝赛尔曲线,用于设计也有一些技术

第一,封闭曲线只需要让第一个和最后一个点重合就可以了。

第二个,如果说我们让两个控制点位于同一个位置,很显然,这个位置就会加更多的权值,从而影响这个曲线的形状了

第三个,有时我们需要把两段贝塞尔曲线拼接起来。

三次贝塞尔曲线

贝塞尔曲面

我们可以利用两组正交的贝塞尔曲线生成贝塞尔曲面。那么贝赛尔曲面的数学描述, 可以由贝塞尔奇函数做笛卡尔集来得到。我们看看这个公式十分复杂。其中,P,i,j是M加一乘以N加一个控制顶点的位置矢量。而所有的控制顶点构成的空间的一张网格,就称为控制网格,或者叫贝赛尔网格。而这里的。这样的计算公式。也是伯恩斯坦基函数。

很显然,其实这里的MN,不一定是相等的。可以取不同的值。但是,我们这里还是给出了一个非常经典的这个就是M等于三,N也等于三的时候构造的贝塞尔曲面,这个贝赛尔曲面,又叫做双三次贝塞尔曲面。它是由四乘以四个控制顶点形成的控制网格。最后逼近的这样的一个局面。

在曲线中可以通过在边界线上建立邻接和一阶连续性,确保从一个部分平滑的转换到另一个部分。

那么对于曲面,只要在边界上匹配控制点,就可以获得临街连续性 控制点一样。而1阶连续性的获得,就需要选取穿过边界的直线上的控制点,并且,对穿过边界的一组指定的控制点的形成贡献线段保持常数比例。这样才可以让我们获得一阶连续性。比如看这幅图,其中虚线呢就连接着控制点。1阶连续性就要根据在两曲面间穿过边界的贡献控制点所形成线段长度L1和L2的比,这时候这个比,我们要让它是常数。这样就可以保证它具有一阶连续性。

华科_图形学笔记_05_初探造型技术_01相关推荐

  1. 华科_图形学笔记_05_初探造型技术_02

    计算机图形学_华中科技大学_中国大学MOOC(慕课) 5.3.1_规则形体_01_边界表示 对于规则形体,我们有三类表示方法. 一个是边界表示,也就是用一组曲面或者是平面来描述物体的,这些面,将物体就 ...

  2. 华科_图形学笔记_0402_图形思维的起点_朴素的软光栅(二)_03

    计算机图形学_华中科技大学_中国大学MOOC(慕课) 4.5_巧妙的区域填充 提纲 区域的定义: 指已经表示成点阵形式的填充图形,它是像素集合 一个点P的4-邻接点指的是它上下左右四个相邻的接点 一个 ...

  3. 华科_图形学笔记_09_奇妙的真实感_片元着色01_02

    计算机图形学_华中科技大学_中国大学MOOC(慕课) 9.3_光照明模型_上_Phong模型初步 首先,我们来看看光照模型发展的历史. 在1967年,Wylie等人,第一次在显示物体时加进了光照的效果 ...

  4. 华科_图形学笔记_09_奇妙的真实感_片元着色02

    计算机图形学_华中科技大学_中国大学MOOC(慕课) 9.4_让人头疼的纹理_上_颜色纹理 在之前的光照模型中,我们看到在给物体加上了光照之后,物体获得了一定的真实感. 可是大家也会发现一个现象,那就 ...

  5. 华科_图形学笔记_0201_认识图形系统

    计算机图形学_华中科技大学_中国大学MOOC(慕课) 提纲 计算机一个十分重要的功能"交互" 对于这个球,用户可以很方便的对其进行修改,这一侧增加一个凸起,另一侧也增加一个,总之最 ...

  6. 华科_图形学笔记_07_投影变换

    计算机图形学_华中科技大学_中国大学MOOC(慕课) 7.1_有趣的投影 由于我们的观察设备是二维的,因此,最终都存在一个三维向二维的映射过程.这个映射过程,按照几何意义来说就是投影. 而在我们之前讲 ...

  7. 计算机图形学中向量点乘和叉乘的用途_图形学笔记(一):基础知识

    从这便文章开始整理学习到的计算机图像学相关知识,原则是只写我没在网上找到清楚解释的内容,如果有很好的文章介绍相关内容,我会直接把链接贴上. 首先弄清 Computer Graphics和 Comput ...

  8. java bresenham画直线_图形学笔记: Bresenham画线算法

    图形学课本, 按规矩介绍完矩阵行列式, 第一个算法肯定就是Bresenham画线算法了. 來我们來看看算法 Bresenham是用来画一些不反走样的线段的. 都说了线段肯定有起点和终点, 假设我们: ...

  9. 计算机图形学 | 探秘造型技术

    计算机图形学 | 探秘造型技术 计算机图形学 | 计算机图形学 | 探秘造型技术 5.1 初识造型技术 什么是造型技术? 图形的构成 实体的定义 5.2 样条的魔力 样条的概念 插值与逼近样条 连续性 ...

最新文章

  1. python中平均值函数_python自定义函数ma(x,y)求简单平均值输出结果到列表
  2. Visual C++语言编程开发详解(孙鑫老师)
  3. 跨境出海,Tik Tok商业化营销推广分享
  4. 云炬Android开发笔记 7登陆注册功能开发
  5. The Unique MST
  6. CSS揭秘(四)视觉效果
  7. Reader 与 Guava MultiReader
  8. SVN报错之Failed to run the WC DB work queue associated with...的处理方法
  9. Oracle11g在Windows和Linux下imp导入表,exp导出表,sqluldr2导出表,sqlldr导入表
  10. ASP + SQL Server聊天室设计实例
  11. 一个在线QQ客服代码分析
  12. mysql 保存富文本的类型_富文本编辑器内容在mysql数据库以什么类型保..._网络编辑_帮考网...
  13. spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)
  14. 将两个字符串连接起来,不要用strcat函数。
  15. 使用squid内网代理百度地图
  16. Java8 CompletableFuture(2)回调函数 thenApply thenAccept thenRun
  17. 数据库的实例化操作——员工信息的查询——简单表查询(二)
  18. 美国征信巨头Equifax遭黑客入侵,1.43亿公民身份数据泄漏
  19. 《我是一只IT小小鸟》推荐序
  20. 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码

热门文章

  1. 金三银四已消失?如何快速斩获春招offer
  2. 做个小人没人跟,做个君子被人坑,管理者该怎么办?
  3. Attribute基本介绍
  4. 4.1输出“王者荣耀”的游戏角色
  5. 产品市场管理与产品规划
  6. Vue 使用v-html 动态加载代码 点击事件不管用 解决办法
  7. android8快图浏览,快图浏览 QuickPic Gallery v8.0.2
  8. dede织梦友情链接分类调用代码
  9. 2093: 奋斗的小蜗牛
  10. 密码学 - 加解密算法 - 填充规则