白话说学计算机图形学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
白话说学计算机图形学
[转载]一个图形爱好者的书架/白话说学计算机图形学- 人生和程序 ...
一个很好的学习途径就是国外大学开的CG的课程,standford,unc,unm,waterloo 等等,等等,一堆大学,都可以下到课件,以及相关的论文,standford的“real time graphics architecture”可是kurt Akeley 开的哦。
另外就是source code,包括mesa,standford的glsim,还有人用c sharp做的csgl等,也不少。这些东西很值得细细研究,只是很花时间啊。
我也是才学这方面的,不过我觉得方法上面还是top-down的方法好些,对一些东西,有感性认识了,再钻下去会比较好。
【引言】
什么是计算机图形学?本文尽量避免
给它做严格的定义,但是通常来说,计算机图形学是数字图象处理的逆过程,这只是一个不确切的定义,后面我们会看到,实际上,计算机图形学、数字图象处理和计算机视觉在很多地方的区别不是非常清晰的,很多概
念是相通的。
计算机图形学是用计算机来画东西的
学科,数字图象处理是把外界获得的图象用计算机进行处理的学科。在法国,图形图象是一门课程。
如何学习计算机图形学呢?除了计算机图形学的基础知识以外,你还需要有以下的知识,你懂的越多,当然做的越好。
* 英语,你一定要把英语学好,如果你想学习计算机图形学的话,尽量看英文的书籍和资料
* 数学,计算机图形学里面的数学用的比较多,,我们可以列举一些常用的:
高等数学,数值分析,微分几何,拓扑,概率,插值理论,(偏)微分方程…
* 物理,如果你要进行基于物理的建模,一些物理理论是要学习的:
力学(运动学,动力学,流体力学…),光学,有限元…
* 编程语言: C或C++是计算机图形学最通用的…普通话‟,
* 数据结构:你需要数据结构来描述你
的图形对象,除了通用的链表、树等数据结构外,图形学还有自己特殊的数据结构* 其他类别:有的时候你需要其他学科的知识,根据你的需要去学习吧
上面列举的不是你必须学习的东西,而是计算机图形学可能会用到的东西,一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多。
[图形学的问题】
每个学科都有自己学科的特定问题,图形学要解决的是如何画出图来,得到需要的效果,当然这是图形学最大的一个问题。
在开始学习计算机图形学的时候,找一本简单的书看,对计算机图形学有个大概的认识,你就可以开始图形学之旅了:
OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition
OpenGL SuperBible (3rd Edition)
是比较好的学习计算机图形学的入门教材,在练中去学,一开始就去啃Foley的Computer Graphics: Principles and Practice, Second Edition in C
不是好主意,会看的一头雾水,一本什么都讲的书的结果往往是什么都没讲清楚。
当你把OpenGL的基本内容掌握之后,你对图形学就有了大概的了解了。
那么下面你可以来学习一下计算机图形学的数据结构和算法,下面的书比较适合:Joseph O'Rourke 的Computational Geometry in C,书里面有C的源代码,讲述简单,清晰,适合程序员学习。
总的来说,计算机图形学涉及到2大部分:建模和渲染
(1)建模
你想画一个东西,首先要有它的几何模型,那么这个几何模型从什么地方来呢?下面的书很不错的:
Gerald Farin 的Curves and Surfaces for CAGD: A Practical Guide
这本书就有一点的难度了,呵呵,要努力看啊。这本书算是CAGD (计算机辅助几何设计)的经典图书,CAGD方面的全貌,还有2本很好的讲述曲面的书Bezier和Nurbs的书Les A. Piegl, Wayne Tiller 的The Nurbs Book
书里面有NURBS曲线、曲面的程序伪代码,很容易改成C的,书讲的通俗、易懂,但是你要有耐心看的:)
《曲线与曲面的数学》
这本书是法国人写的中文翻译版,里面还有Bezie本人写的序J,翻译的很不错的,看了你就掌握Bezier曲面技术了。
还有其他的一些造型技术,比如:
隐式曲面(Implicit Surface)的造型:
就是用函数形式为F( x ,y ,z ) = 0的曲面进行造型,这样的造型技术适合描述动物器官一样的肉乎乎的东西,有2本书推荐大家:
Jules Bloomenthal编辑的Introduction to Implicit Surfaces,是一本专著,讲述了Implicit Surface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的问题。
Luiz Velho 的 Implicit Objects Computer Graphics 也是一本专著,讲述更新的一些进展。
细分曲面(Subdivision Surface)造型
当用NURBS做造型的时候,曲面拼接是复杂的问题,在动画的时候,可能产生撕裂或者褶皱,Subdivision Surface用来解决这个问题。
Joe Warren的Subdivision Methods for Geometric Design: A Constructive Approach就是这方面的专著。
从实际物体中得到造型,现在的技术可以用三维扫描仪得到物体表面的点,然后根据这些点把物体的表面计算出来,称为重建