动画  - 讨论区

标题:和大家分享一篇计算机图形学的学习笔记:)

2010年06月04日 星期五 21:40

  计算机图形学的学习
摘自: Chinapub

 

注意:

  • 本文是作者学习计算机图形学的体会,不代表本站观点,但很多东西还是值得参考;

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

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


本文合适的题目应当是: 白话说学计算机图形学?


1
.引言

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

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

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

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

  •   数学, 计算机图形学里面的数学用的比较多,,我们可以列举一些常用的:高等数学,数值分析,微分几何,拓扑,概率, 插值理论,(偏)微分方程

  •   物理, 如果你要进行基于物理的建模,一些物理理论是要学习的:力学(运动学,动力学,流体力学 ),光学,有限元

  •   编程语言: C C++ 是计算机图形学最通用的 普通话

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

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

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

 

 

2 . 图形学的问题

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

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

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 大部分:建模和渲染


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 就是这方面的专著

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

在你的几何模型做好之后,有一些问题需要对这个模型进一步处理,得到适合的模型,当面片很多的时候,或者模型很复杂的时候,需要对几何模型进行简化,才可以满足一些实时绘制的需要,这个技术叫做层次细节( LOD-Level of Detail )。下面的书就是讲这个的:
David Luebke
编著的 Level of Detail for 3D Graphics
 

2.2 渲染


有了模型,怎么把这个几何模型画出来呢?这个步骤就是渲染啦
如果你看了上面的 OpenGL 的书,那么你就知道一些渲染的知识了,但是别高兴的太早, OpenGL 使用的是局部光照模型( Local Illumination Model ),不要被这个词吓住了

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

另外, OpenGL 可以实现阴影 - 开始
OpenGL
本身不支持,但是通过一些方法可以实现的:),用 Google 搜索一下
Shadow Volume, OpenGL
就找到答案啦

Global Illumination Model
这类模型考虑的就比较全啦。现在关于 Global Illumination 的技术有 3 大类,具体的技术就不在这里介绍了,如果想了解,可以联系我,大家一起讨论:

光线追踪 (Ray Tracing)
关于 Ray Tracing 的好书有 2 本:

Andrew Glassner
An Introduction to Ray tracing
Glasser
是图形界的名人,这本书也是 Ray Tracing 的经典

R. Keith Morley, Peter Shirley
Realistic Ray Tracing, Second Edition
这本书第一版是伪代码,第二版是 C 代码。它的结构不是很清楚,虎头蛇尾的感觉。

辐射度 (Radiosity)


关于 Radiosity 的好书有 4 本:
Michael Cohen
Radiosity and Realistic Image Synthesis Cohen 获得 SIGGRAPH 1998 计算机图形学成就奖,他把 Radiosity 变成实际可用,现在 Cohen MSR 图形 http://research.microsoft.com/~cohen/CohenSmallBW2.jpg

Francois X. Sillion
Radiosity and Global Illumination Sillion 是法国人,他的主要研究方向是 Radiosity ,这本书写的很不错的,非常清晰

Philip Dutre
的新书 Advanced Global Illumination ,看起来还不错,刚拿到手,还没看,呵呵,所以不好评价

Ian Ashdown
Radiosity: A Programmer's Perspective
有源代码的书啊!! 就凭这个,得给 5*****

Photon mapping


这个我也不知道怎么翻译,呵呵。这个技术出现的比较晚,一本好书!
Henrik Wann Jensen
Realistic Image Synthesis Using Photon Mapping
Henrik Wann Jensen
Photon mapping 技术的发明者

 

 

2.3   这些也是图形学吗?

 

图形和图象的区别模糊了:(
除了上面讲的 经典 的计算机图形学,还有下面的一些东西,它们也叫计算机图形学吗?是的!


2.3.1
非真实性图形学( Non-Photorealistic Graphics
真实性不是计算机图形学的唯一要求,比如:你给我画一个卡通效果的图出来,或者我要用计算机画水彩画怎么办?或者:把图象用文字拼出来怎么做?,解决这些问题要用到非真实性图形学,好书继续推荐!
Bruce Gooch, Amy Ashurst Gooch
Non-Photorealistic Rendering

2.3.2
体图形学 (Volume Graphics)
CT 机做很多切片(比如头骨),那么能通过这些切片得到 3D 的头骨吗? Volume Graphics 就是解决这样的问题的
Min Chen
编著的 Volume Graphics

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


3 . 还有其他的书吗?

还有一些好书啊,呵呵,好书看不完的:),继续放送:

Graphics Gems I ~ V
,一大帮子人写的书,包括研究人员,程序员
有计算机图形学的各种数据结构,编程技巧

Tomas Akenine-Moller
等人编著的 Real-Time Rendering (2nd Edition)
许多最新的计算机图形学进展

David Ebert
等人的 Texturing & Modeling: A Procedural Approach, Third Edition
讲述如何通过程序实现纹理、山、地形等图形学要素
F. Kenton Musgrave
号称分形狂 (Fractal Mania)
Ken Perlin
就是 Perlin 噪声的发明者,用过 3d 软件的人对 Perlin Noise 不会陌生的

关于图形学的特定对象,有特定的专题图书,
Evan Pipho Focus On 3D Models,
对于图形学的常用模型格式,进行了讲解
Trent Polack
Focus On 3D Terrain Programming ,讲地形的
Donald H. House
Cloth Modeling and Animation ,讲布料的
Nik Lever
Real-time 3D Character Animation with Visual C++ ,讲角色动画的
……

还有:)
Richard Parent
Computer Animation: Algorithms and Techniques ,当然是讲动画的啦,呵呵。
David H. Eberly
3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics ,有代码的啊!呵呵:)

最后,没事情的时候,看看下面的书吧
Alan H. Watt
3D Computer Graphics (3rd Edition)

James D. Foley
等人的 Computer Graphics: Principles and Practice in C (2nd Edition) ,这本圣经没事的时候再看吧,呵呵

累了:( 不说了,上面的书差不多了,还有一些 shader 的书,我不了解,以后会补上的:)

4.   资源

 

从哪里找到这些书啊?还有什么资源啊?


我保证,上面的书在 www.amazon.com 都可以买到:) 别打我

那好,大部分的书在国家图书馆可以复印到,北京的兄弟有福啦, 3 年前的书借出来复印, 1 / 页,但是新书要早图书馆里复印, 5~6 / 页,还是比 Amazon 便宜啊,呵呵。

不行大家就到国外买,合买吧,还负担的起。
我对 DirectX 不了解,所以没有涉及关于 DirectX 的内容:)

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号