图形图像学领域学习心得经典帖子.docx

上传人:b****7 文档编号:10547716 上传时间:2023-02-21 格式:DOCX 页数:13 大小:25.31KB
下载 相关 举报
图形图像学领域学习心得经典帖子.docx_第1页
第1页 / 共13页
图形图像学领域学习心得经典帖子.docx_第2页
第2页 / 共13页
图形图像学领域学习心得经典帖子.docx_第3页
第3页 / 共13页
图形图像学领域学习心得经典帖子.docx_第4页
第4页 / 共13页
图形图像学领域学习心得经典帖子.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

图形图像学领域学习心得经典帖子.docx

《图形图像学领域学习心得经典帖子.docx》由会员分享,可在线阅读,更多相关《图形图像学领域学习心得经典帖子.docx(13页珍藏版)》请在冰豆网上搜索。

图形图像学领域学习心得经典帖子.docx

图形图像学领域学习心得经典帖子

数学在计算机图形学中的应用※来源:

同济大学论坛BBS.TONGJI.NET

GregTurk,August1997

“学习计算机图形学需要多少的数学?

”这是初学者最经常问的问题。

答案取决于你想在计算机图形学领域钻研多深。

如果仅仅使用周围唾手可得的图形软件,你不需要知道多少数学知识。

如果想学习计算机图形学的入门知识,我建议你读一读下面所写的前两章(代数,三角学和线性代数)。

如果想成为一名图形学的研究者,那么对数学的学习将是活到老,学到老。

如果你并不特别喜欢数学,是否仍有在计算机图形学领域工作的机会?

是的,计算机图形学的确有一些方面不需要考虑太多的数学问题。

你不应该因为数学成绩不好而放弃它。

不过,如果学习了更多的数学知识,似乎你将在研究课题上有更多的选择余地。

对于在计算机图形学中哪些数学才是重要的还没有明确的答案。

这领域里不同的方面要求掌握不同的数学知识,也许兴趣将会决定了你的方向。

以下介绍我认为对于计算机图形学有用的数学。

别以为想成为一名图形学的研究者就必须精通各门数学!

为了对用于图形学的数学有一个全面的看法,我特地列出了很多方面。

但是许多研究者从不需要考虑下面提到的数学。

最后,虽然读了这篇文章后,你应该会对数学在计算机图形学中的应用有所了解,不过这些观点完全是我自己的。

也许你应该阅读更多的此类文章,或者至少从其他从事计算机图形学工作的人那里了解不同的学习重点。

现在开始切入正题。

代数和三角学

对于计算机图形学的初学者来说,高中的代数和三角学可能是最重要的数学。

日复一日,我从简单的方程解出一个或更多的根。

我时常还要解决类似求一些几何图形边长的简单三角学问题。

代数和三角学是计算机图形学的最基础的知识。

那么高中的几何学怎么样呢?

可能让人惊讶,不过在多数计算机图形学里,高中的几何学并不经常被用到。

原因是许多学校教的几何学实际上是如何建立数学证明的课程。

虽然证明题对提高智力显然是有效的,但对于计算机图形学来说,那些与几何课有关的定理和证明并不常被用到。

如果你毕业于数学相关领域(包括计算机图形学),就会发现虽然你在证明定理,不过这对开始学习图形学不是必要的。

如果精通代数和三角学,就可以开始读一本计算机图形学的入门书了。

下一个重要的用于计算机图形学的数学――线性代数,多数此类书籍至少包含了一个对线性代数的简要介绍。

推荐的参考书:

ComputerGraphics:

PrinciplesandPractice

JamesFoley,AndriesvanDam,StevenFeiner,JohnHughes

Addison-Wesley

[虽然厚重,可是我很喜欢]

线性代数

线性代数的思想贯穿于计算机图形学。

事实上,只要牵涉到几何数值表示法,就常常抽象出例如x,y,z坐标之类的数值,我们称之为矢量。

图形学自始至终离不开矢量和矩阵。

用矢量和矩阵来描述旋转,平移,或者缩放是再好不过了。

高中和大学都有线性代数的课程。

只要想在计算机图形学领域工作,就应该打下坚实的线性代数基础。

我刚才提到,许多图形学的书都有关于线性代数的简要介绍――足够教给你图形学的第一门课。

推荐的参考书:

LinearAlgebraandItsApplications

GilbertStrang

AcademicPress

微积分学

微积分学是高级计算机图形学的重要成分。

如果打算研究图形学,我强烈建议你应该对微积分学有初步认识。

理由不仅仅是微积分学是一种很有用的工具,还有许多研究者用微积分学的术语来描述他们的问题和解决办法。

另外,在许多重要的数学领域,微积分学被作为进一步学习的前提。

学习了基本代数之后,微积分学又是一种能为你打开多数计算机图形学与后继的数学学习之门的课程。

微积分学是我介绍的最后一个中学课程,以下提及的科目几乎全部是大学的课程。

微分几何学

微分几何学研究支配光滑曲线,曲面的方程组。

如果你要计算出经过某个远离曲面的点并垂直于曲面的矢量(法向矢量)就会用到微分几何学。

让一辆汽车以特定速度在曲线上行驶也牵涉到微分几何学。

有一种通用的绘制光滑曲面的图形学技术,叫做“凹凸帖图”,这个技术用到了微分几何学。

如果要着手于用曲线和曲面来创造形体(在图形学里称之为建模)你至少应该学习微分几何学的基础。

推荐的参考书:

ElementaryDifferentialGeometry

BarrettO'Neill

AcademicPress

数值方法

几乎任何时候,我们在计算机里用近似值代替精确值来表示和操作数值,所以计算过程总是会有误差。

而且对于给定的数值问题,常常有多种解决的方法,一些方法会更块,更精确或者对内存的需求更少。

数值方法研究的对象包括“计算方法”和“科学计算”等等。

这是一个很广阔的领域,而且我将提及的其他几门数学其实是数值方法的一些分支。

这些分支包括抽样法理论,矩阵方程组,数值微分方程组和最优化。

推荐的参考书:

NumericalRecipesinC:

TheArtofScientificComputing

WilliamPress,SaulTeukolsky,WilliamVetterlingandBrianFlannery

CambridgeUniversityPress

[这本参考书很有价值可是很少作为教材使用]

抽样法理论和信号处理

在计算机图形学里我们反复使用储存在正规二维数组里的数字集合来表示一些对象,例如图片和曲面。

这时,我们就要用抽样法来表示这些对象。

如果要控制这些对象的品质,抽样法理论就变得尤为重要。

抽样法应用于图形学的常见例子是当物体被绘制在屏幕上时,它的轮廓呈现锯齿状的边缘。

这锯齿状的边缘(被认为是“混淆”现象)是非常让人分散注意力的,用抽样法中著名的技术例如回旋,傅立叶变换,空间和频率的函数表示就能把这个现象减少到最小。

这些思想在图像和音频处理领域是同样重要的。

推荐的参考书:

TheFourierTransformandItsApplications

RonaldN.Bracewell

McGrawHill

矩阵方程组

计算机图形学的许多问题要用到矩阵方程组的数值解法。

一些涉及矩阵的问题包括:

找出最好的位置与方向以使对象们互相匹配(最小二乘法),创建一个覆盖所给点集的曲面,并使皱折程度最小(薄板样条算法),还有材质模拟,例如水和衣服等。

在图形学里矩阵表述相当流行,因此在用于图形学的数学中我对矩阵方程组的评价是很高的。

推荐的参考书:

MatrixComputations

GeneGolubandCharlesVanLoan

JohnsHopkinsUniversityPress

物理学

物理学显然不是数学的分支,它是自成一家的学科。

但是在计算机图形学的某些领域,物理学和数学是紧密联系的。

在图形学里,牵涉物理学的问题包括光与物体的表面是怎样互相影响的,人与动物的移动方式,水与空气的流动。

为了模拟这些自然现象,物理学的知识是必不可少的。

这和解微分方程紧密联系,我将会在下一节提到微分方程。

微分方程的数值解法

我相信对于计算机图形学来说,解微分方程的技巧是非常重要的。

像我们刚才讨论的,计算机图形学致力于模拟源于真实世界的物理系统。

波浪是怎样在水里形成的,动物是怎样在地面上行走的,这就是两个模拟物理系统的例子。

模拟物理系统的问题经常就是怎样解微分方程的数值解。

请注意,微分方程的数值解法与微分方程的符号解法是有很大差异的。

符号解法求出没有误差的解,而且时常只用于一些非常简单的方程。

有时大学课程里的“微分方程”只教符号解法,不过这并不会对多数计算机图形学的问题有帮助。

在对物理系统的模拟中,我们把世界细分为许多表示成矢量的小元素。

然后这些元素之间的关系就可以用矩阵来描述。

虽然要处理的矩阵方程组往往没有很精确的解,但是取而代之的是执行了一系列的计算,这些计算产生一个表示成数列的近似解。

这就是微分方程的数值解法。

请注意,矩阵方程的解法与微分方程数值解法的关系是很密切的。

最优化

在计算机图形学里,我们常常为了期望的目标寻求一种合适的描述对象或者对象集的方法。

例如安排灯的位置使得房间的照明看起来有种特殊的“感觉”,动画里的人物要怎样活动四肢才能实现一个特殊的动作,怎样排版才不会使页面混乱。

以上这些例子可以归结为最优化问题。

十年前的计算机图形学几乎没有最优化技术的文献,不过最近这个领域越来越重视最优化理论。

我认为在计算机图形学里,最优化的重要性将会日益增加。

概率论与统计学

计算机图形学的许多领域都要用到概率论与统计学。

当研究者涉足人类学科时,他们当然需要统计学来分析数据。

图形学相关领域涉及人类学科,例如虚拟现实和人机交互(HCI)。

另外,许多用计算机描绘真实世界的问题牵涉到各种未知事件的概率。

两个例子:

一棵成长期的树,它的树枝分杈的概率;虚拟的动物如何决定它的行走路线。

最后,一些解高难度方程组的技巧用了随机数来估计方程组的解。

重要的例子:

蒙特卡罗方法经常用于光如何传播的问题。

以上仅是一部分在计算机图形学里使用概率论和统计学的方法。

计算几何学

计算几何学研究如何用计算机高效地表示与操作几何体。

典型问题如,碰撞检测,把多边形分解为三角形,找出最靠近某个位置的点,这个学科包括了运算法则,数据结构和数学。

图形学的研究者,只要涉足创建形体(建模),就要大量用到计算几何学。

推荐的参考书:

ComputationalGeometryinC

JosephO'Rourke

CambridgeUniversityPress

[大学教材]

ComputationalGeometry:

AnIntroduction

FrancoPreparataandMichaelShamos

Springer-Verlag

[很经典,不过有点旧了]

总结:

数学应用和数学理论

对于图形学来说,以上提到的许多数学学科都有个共同点:

比起这些数学的理论价值,我们更倾向于发掘它们的应用价值。

不要惊讶。

图形学的许多问题和物理学者与工程师们研究的问题是紧密联系的,并且物理学者与工程师们使用的数学工具正是图形学研究者们使用的。

多数研究纯数学理论的学科从不被用于计算机图形学。

不过这不是绝对的。

请注意这些特例:

分子生物学正利用节理论来研究DNA分子动力学,亚原子物理学用到了抽象群论。

也许有一天,纯数学理论也能推动计算机图形学的发展,谁知道呢?

有些看来重要的数学实际上在计算机图形学里不常被用到。

可能拓扑学是此类数学中最有意思的。

用一句话来形容拓扑学,它研究油炸圈饼与咖啡杯为什么在本质上是相同的。

答案是他们都是只有一个洞的曲面。

我们来讨论一下拓扑学的思想。

虽然曲面是计算机图形学的重要成分,不过微分几何学的课程已经涵盖了多数对图形学有用的拓扑学知识。

微分几何学研究曲面的造型,可是拓扑学研究曲面的相邻关系。

我觉得拓扑学对于图形学来说几乎没用,这是由于拓扑学关心抽象的事物,而且拓扑学远离了多数图形学的核心――三维欧氏空间的概念。

对于图形学来说,拓扑学的形式(符号表示法)是表达思想的简便方法,不过图形学很少用到抽象拓扑学的实际工具。

对图形学来说,拓扑学像一个好看的花瓶,不过别指望它能立即带给你回报。

有人曾经这么问我,计算机图形学是否用到了抽象代数(群论,环,等等….)或者数论。

我没怎么遇到过。

和拓扑学一样,这些学科有很多美好的思想。

可是很不幸,这些思想很少用于计算机图形学。

--TheEnd--

 

关于计算机图形学的学习

注意:

本文尽量避免理论化的描述,试图用最通俗的语言介绍一下计算机图形学的学习,以及一些参考书目和网络资源;

本文不涉及对概念的定义,以免陷入学术讨论之中

本文是作者学习计算机图形学的体会,如果有不同的意见,请不要攻击和漫骂

本文合适的题目应当是:

白话说学计算机图形学?

1.引言

什么是计算机图形学?

本文尽量避免给它做严格的定义,但是通常来说,计算机图形学是数字图象处理的逆过程,这只是一个不确切的定义,后面我们会看到,实际上,计算机图形学、数字图象处理和计算机视觉在很多地方的区别不是非常清晰的,很多概念是相通的。

计算机图形学是用计算机来画东西的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科。

在法国,图形图象是一门课程。

如何学习计算机图形学呢?

除了计算机图形学的基础知识以外,你还需要有以下的知识,你懂的越多,当然做的越好。

*英语,你一定要把英语学好,如果你想学习计算机图形学的话,尽量看英文的书籍和资料

*数学,计算机图形学里面的数学用的比较多,,我们可以列举一些常用的:

高等数学,数值分析,微分几何,拓扑,概率,插值理论,(偏)微分方程…

*物理,如果你要进行基于物理的建模,一些物理理论是要学习的:

力学(运动学,动力学,流体力学…),光学,有限元…

*编程语言:

C或C++是计算机图形学最通用的‘普通话’,

*数据结构:

你需要数据结构来描述你的图形对象,除了通用的链表、树等数据结构外,图形学还有自己特殊的数据结构

*其他类别:

有的时候你需要其他学科的知识,根据你的需要去学习吧

上面列举的不是你必须学习的东西,而是计算机图形学可能会用到的东西,一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多。

图形学的问题

每个学科都有自己学科的特定问题,图形学要解决的是如何画出图来,得到需要的效果,当然这是图形学最大的一个问题。

在开始学习计算机图形学的时候,找一本简单的书看,对计算机图形学有个大概的认识,你就可以开始图形学之旅了:

OpenGLProgrammingGuide:

TheOfficialGuidetoLearningOpenGL,Version1.4,FourthEdition

OpenGLSuperBible(3rdEdition)

是比较好的学习计算机图形学的入门教材,在练中去学,一开始就去啃

Foley的

ComputerGraphics:

PrinciplesandPractice,SecondEditioninC

不是好主意,会看的一头雾水,一本什么都讲的书的结果往往是什么都没讲清楚。

当你把OpenGL的基本内容掌握之后,你对图形学就有了大概的了解了

那么下面你可以来学习一下计算机图形学的数据结构和算法,下面的书比较适合

JosephO'Rourke的ComputationalGeometryinC,书里面有C的源代码,讲述简单,清晰,适合程序员学习

总的来说,计算机图形学涉及到2大部分:

建模和渲染

2.1建模

你想画一个东西,首先要有它的几何模型,那么这个几何模型从什么地方来呢?

下面的书很不错的:

GeraldFarin的CurvesandSurfacesforCAGD:

APracticalGuide

这本书就有一点的难度了,呵呵,要努力看啊

这本书算是CAGD(计算机辅助几何设计)的经典图书,CAGD方面的全貌,还有2本很好的讲述曲面的书Bezier和Nurbs的书

LesA.Piegl,WayneTiller的TheNurbsBook

书里面有NURBS曲线、曲面的程序伪代码,很容易改成C的,书讲的通俗、易懂,但是你要有耐心看的:

曲线与曲面的数学

这本书是法国人写的中文翻译版,里面还有Bezie本人写的序J,翻译的很不错的,看了你就掌握Bezier曲面技术了

//另外一些你想知道的事情:

其他的造型方式-开始

注意:

在后面会有这样的章节,标明

//另外一些你想知道的事情:

其他的造型方式-开始

//另外一些你想知道的事情:

其他的造型方式-结束

里面是我认为的一些高级话题,跳过他们不影响你学习计算机图形学,但是要学好就要注意了,呵呵

还有其他的一些造型技术,比如:

隐式曲面(ImplicitSurface)的造型:

就是用函数形式为F(x,y,z)=0的曲面进行造型,这样的造型技术适合描述动物器官一样的肉乎乎的东西,有2本书推荐大家

JulesBloomenthal编辑的IntroductiontoImplicitSurfaces,是一本专著,讲述了ImplicitSurface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的问题

LuizVelho的ImplicitObjectsComputerGraphics也是一本专著,讲述个更新的一些进展

细分曲面(SubdivisionSurface)造型

当用NURBS做造型的时候,曲面拼接是复杂的问题,在动画的时候,可能产生撕裂或者褶皱,SubdivisionSurface用来解决这个问题

JoeWarren的SubdivisionMethodsforGeometricDesign:

AConstructiveApproach就是这方面的专著

从实际物体中得到造型,现在的技术可以用三维扫描仪得到物体表面的点,然后根据这些点把物体的表面计算出来,称为重建(Reconstruction),因为这些技术之在文章中论述,所以我们省略对它的描述

//另外一些你想知道的事情:

其他的造型方式-结束

下面还是一个高级话题:

//另外一些你想知道的事情:

光有造型是不够的!

-开始

在你的几何模型做好之后,有一些问题需要对这个模型进一步处理,得到适合的模型,当面片很多的时候,或者模型很复杂的时候,需要对几何模型进行简化,才可以满足一些实时绘制的需要,这个技术叫做层次细节(LOD-LevelofDetail)。

下面的书就是讲这个的:

DavidLuebke编著的LevelofDetailfor3DGraphics

//另外一些你想知道的事情:

光有造型是不够的!

2.2渲染

有了模型,怎么把这个几何模型画出来呢?

这个步骤就是渲染啦

如果你看了上面的OpenGL的书,那么你就知道一些渲染的知识了,但是别高兴的太早,OpenGL使用的是局部光照模型(LocalIlluminationModel),不要被这个词吓住了

LocalilluminationModel指的是在做渲染的时候只考虑光源和物体之间的相互作用,不考虑物体和物体之间的影响,所以OpenGL不支持阴影,一个(半)透明物体的效果..,这些需要考虑物体之间的影响才可以实现。

//另外一些你想知道的事情:

OpenGL可以实现阴影-开始

OpenGL本身不支持,但是通过一些方法可以实现的:

),用Google搜索一下

ShadowVolume,OpenGL就找到答案啦

//另外一些你想知道的事情:

OpenGL可以实现阴影-结束

GlobalIlluminationModel这类模型考虑的就比较全啦。

现在关于GlobalIllumination的技术有3大类,具体的技术就不在这里介绍了,如果想了解,可以联系我,大家一起讨论:

光线追踪(RayTracing)

关于RayTracing的好书有2本:

AndrewGlassner的AnIntroductiontoRaytracing

Glasser是图形界的名人,这本书也是RayTracing的经典

R.KeithMorley,PeterShirley的RealisticRayTracing,SecondEdition

这本书第一版是伪代码,第二版是C代码。

它的结构不是很清楚,虎头蛇尾的感觉。

辐射度(Radiosity)

关于Radiosity的好书有4本:

MichaelCohen的RadiosityandRealisticImageSynthesis,Cohen获得SIGGRAPH1998计算机图形学成就奖,他把Radiosity变成实际可用,现在Cohen在MSR图形

FrancoisX.Sillion的RadiosityandGlobalIllumination,Sillion是法国人,他的主要研究方向是Radiosity,这本书写的很不错的,非常清晰

PhilipDutre的新书AdvancedGlobalIllumination,看起来还不错,刚拿到手,还没看,呵呵,所以不好评价

IanAshdown的Radiosity:

AProgrammer'sPerspective

有源代码的书啊!

就凭这个,得给5*****

Photonmapping

这个我也不知道怎么翻译,呵呵。

这个技术出现的比较晚,一本好书!

HenrikWannJensen的RealisticImageSynthesisUsingPhotonMapping

HenrikWannJensen是Photonmapping技术的发明者

3.3这些也是图形学吗?

图形和图象的区别模糊了:

除了上面讲的‘经典’的计算机图形学,还有下面的一些东西,它们也叫计算机图形学吗?

是的!

3.3.1非真实性图形学(Non-PhotorealisticGraphics)

真实性不是计算机图形学的唯一要求,比如:

你给我画一个卡通效果的图出来,或者我要用计算机画水彩画怎么办?

或者:

把图象用文字拼出来怎么做?

,解决这些问题要用到非真实性图形学,好书继续推荐!

BruceGooch,AmyAshurstGooch的Non-PhotorealisticRendering

3.3.2体图形学(VolumeGraphics)

用CT机做很多切片(比如头骨),那么能通过这些切片得到3D的头骨吗?

VolumeGraphics就是解决这样的问题的

MinChen编著的VolumeGraphics

上面的2个图形学技术就和图象的界限不明显了,实际上他们是图形图象的综合

4.还有其他的书吗?

还有一些好书啊,呵呵,好书看不完的:

),继续放送:

GraphicsGemsI~V,一大帮子人写的书,包括研究人员,程序员…

有计算机图形学的各种数据结构,编程技巧

TomasAkenine-Moller等人编著的Real-TimeRendering(2ndEdition)

许多最新的计算机图形学进展

DavidEbert等人的Texturing&Modeling:

AProceduralApproach,ThirdEdition

讲述如何通过程序实现纹理、山、地形等图形学要素

F.KentonMusgrave号称分形狂(FractalMania)

KenPerlin就是Perlin噪声的发明者,用过3d软件的人对PerlinNoise不会陌生的

关于图形学的特定对象,有特定的专题图书,

EvanPiphoFocusOn3DModels,对于图形学的常用模型格式,进行了讲解

TrentPolack的FocusOn3DTerrainProgramming,讲地形的

DonaldH.House的ClothModelingandAnimation,讲布料的

NikLever的Real-time3DCharac

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1