浅谈计算机图形学的内容和学习
刘利刚
中国科技大学
http://staff.ustc.edu.cn/~lgliu
【注】由于时常有本科学生来向笔者询问计算机图形学是做什么的,为了使得学生能够快速了解计算机图形学,有利于他们在选择研究生方向做出适合自己的选择,特撰写此文。本文仅仅为笔者对计算机图形学浅薄的理解,不涉及对概念的定义,是非学术性的。因此,笔者尽量尝试用通俗的语言介绍一下计算机图形学的内容及其应用,以帮助还未接触计算机图形学领域的学生来了解该学科方向。笔者对其中的有些内容的理解也是很有限的,值得进一步的学习和交流。有不当之处,还请读者谅解指正。
一、
什么是计算机图形学?计算机图形学(Computer Graphics,简称CG)的内容比较丰富,与很多学科都有交叉,因此笔者认为是无法严格定义的。
在“Wiki百科”和“百度百科”上,对“计算机图形学”的解释为:计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。虽然通常认为CG是指三维图形的处理,事实上也包括了二维图形及图像的处理。
狭义地理解,计算机图形学是数字图象处理或计算机视觉的逆过程:计算机图形学是用计算机来画图像的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科,计算机视觉是根据获取的图像来理解和识别其中的物体的三维信息及其他信息。
注意,这些都是不确切的定义,实际上,计算机图形学、数字图象处理和计算机视觉在很多地方的区别不是非常清晰,很多概念是相通的,而且随着研究的深入,这些学科方向不断的交叉融入,形成一个更大的学科方向,可称之为“可视计算”(Visual Computing)。这是后话,此处不详述。
二、
在学科开创之初,计算机图形学要解决的是如何在计算机中表示三维几何图形,以及如何利用计算机进行图形的生成、处理和显示的相关原理与算法,产生令人赏心悦目的真实感图像。这是狭义的计算机图形学的范畴。随着近40年的发展,计算机图形学的内容已经远远不止这些了。广义的计算机图形学的研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
根据笔者的理解,计算机图形学主要包含四大部分的内容:建模(Modeling)、渲染(Rendering)、动画(Animation)和人机交互(Human–computer Interaction, HCI)。
1、建模(Modeling)
要在计算机中表示一个三维物体,首先要有它的几何模型表达。因此,三维模型的建模是计算机图形学的基础,是其他内容的前提。表达一个几何物体可以是用数学上的样条函数或隐式函数来表达;也可以是用光滑曲面上的采样点及其连接关系所表达的三角网格来表达(即连续曲面的分片线性逼近),如下图所示。
三维建模方法主要包含如下的一些方法:
l
l
l
l
l
l
l
l
除了上述的这些建模方法,还有其他的一些建模方法,在此不再一一列举。
在对三维几何模型的构建过程中,还会涉及到很多需要处理的几何问题,比如数据去噪(denoising or smoothing)、补洞(repairing)、简化(simplification)、层次细节(level of detail)、参数化(parameterization)、变形(deformation or editing)、分割(segmentation)、形状分析及检索(shape analysis and retrieval)等。这些问题构成“数字几何处理”的主要研究内容。笔者自2005年起开设了多年的《数字几何处理》的研究生课程:
http://staff.ustc.edu.cn/~lgliu/Courses/DGP_2012_spring-summer/default.htm
虽然有上述所提到的这么多的三维建模方式,但是至今为止,仍没有适合一般家庭用户的轻松简单的建模工具。现有的电子设备(比如相机,手机等)能够帮助人们轻松获得图像和视频,但是,不是人人都有能力来构建三维几何模型。如何让大众能够像获取图像那样能够随时随地地获取或者构建三维模型,仍然是计算机图形学的任重道远的主要任务之一!今天,计算机图形学仍未进入“大数据时代”。只有让大众能够轻松进行三维建模,并上载分享他们所构建的模型数据,计算机图形学才可能进入大数据时代。
另外,随着三维打印(3D printing)的新兴技术的逐渐普及,人们对三维模型的需求也日益增加。笔者个人认为,几何建模和三维打印的未来是共呼吸,同命运的:也只有当人人都能轻松建模时,三维打印才有可能走向千家万户。
三维几何建模的任务仍然任重道远,大家仍需共同努力!
2、渲染(Rendering)
有了三维模型或场景,怎么把这些三维几何模型画出来,产生令人赏心悦目的真实感图像?这就是传统的计算机图形学的核心任务,在计算机辅助设计,影视动漫以及各类可视化应用中都对图形渲染结果的高真实感提出了很高的要求。
上个世纪80-90年代研究的比较多些,包含了大量的渲染模型,包括局部光照模型(Local Illumination Model)、光线跟踪算法(Ray Tracing)、辐射度(Radiosity)等,以及到后面的更为复杂、真实、快速的渲染技术,比如全局光照模型(Global Illumination Model)、Photo mapping、BTF、BRDF、以及基于GPU的渲染技术等。
现在的渲染技术已经能够将各种物体,包括皮肤、树木、花草、水、烟雾、毛发等渲染得非常逼真。一些商业化软件(比如Maya, Blender, Pov Ray等)也提供了强大的真实感渲染功能,在计算机图形学研究论文中作图中要经常用到这些工具来渲染漂亮的展示图或结果图。
然而,已知的渲染实现方法,仍无法实现复杂的视觉特效,离实时的高真实感渲染还有很大差距,比如完整地实现适于电影渲染(高真实感、高分辨率)制作的RenderMan标准,以及其他各类基于物理真实感的实时渲染算法等。因此,如何充分利用GPU的计算特性,结合分布式的集群技术,从而来构造低功耗的渲染服务是发展趋势之一。
3、动画(Animation)
有了模型,并且能够比较真实地渲染出来后,下一步的任务就是如何让模型动起来,即设计模型的动画序列。动画是采用连续播放静止图像的方法产生物体运动的效果。计算机动画借助于编程或动画制作软件生成一系列的景物画面,是计算机图形学的研究热点之一。研究方向包括:人体动画,关节动画,运动动画,脚本动画,具有人的意识的虚拟角色的动画系统等。另外,高度物理真实感的动态模拟,包括对各种形变、水、气、云、烟雾、燃烧、爆炸、撕裂、老化等物理现象的真实模拟,也是动画领域的主要问题。这些技术是各类动态仿真应用的核心技术,可以极大地提高虚拟现实系统的沉浸感。计算机动画的应用领域广泛,比如动画片制作,广告、电影特技,训练模拟,物理仿真,游戏等。
网上的一些3D动画的视频:
Larva虫虫: http://v.youku.com/v_show/id_XMzAzMzkxMTY0.html
The Killer Bean: http://v.youku.com/v_show/id_XMjI5ODE2MTEy.html
爱与孝: http://v.youku.com/v_show/id_XNTU0OTUxNjUy.html
房地产动画广告宣传片: http://v.youku.com/v_show/id_XNTc1OTE4MDMy.html
4、人机交互(Human–Computer Interaction, HCI)
人机交互(Human-Computer Interaction, 简写HCI)是指人与计算机之间以一定的交互方式或交互界面,来完成确定任务的人与计算机之间的信息交换过程。简单来讲,就是人如何通过一定的交互方式告诉计算机来完成他所希望完成的任务。
计算机图形学的顶级会议ACM SIGGRAPH是“ACM Special Interest Group on GRAPHics and InteractiveTechniques”的缩写,缩写中只包含了Graphics,而忽略了Interactive Techniques,在长时间没有得到计算机图形学研究的重视。最近,包括在SIGGRAPH会议上,以及人机交互的顶级会议SIGCHI上,陆续出现了许多新兴的人机交互技术及研究论文。大家逐渐重视起来。
在早期(上个世纪60-70年代),只有以键盘输入的字符界面;到了80年代,以WIMP(窗口、图符、菜单、鼠标)为基础的图形用户界面(GUI)逐渐成为当今计算机用户界面的主流。
近年来,以用户为中心的系统设计思想,增进人机交互的自然性,提高人机交互的效率是用户界面的主要研究方向。陆续提出了多通道用户界面的思想,它包括语言、姿势输入、头部跟踪、视觉跟踪、立体显示、三维交互技术、感觉反馈及自然语言界面等。
事实上,人体的表面本身就是人机界面。人体的任何部分(姿势,手势,语言,眼睛,肌肉电波,脑波等)都可以成为人机对话的通道。比如2010年微软出的Kinect就是一种无需任何操纵杆的基于体感的人机界面,用户本身就是控制器。Kinect在微软的Xbox游戏上取得了极大的成功,之后在其他方面也得到了很多的应用。
特别是到了今年(2013年),人机交互设备有了巨大的发展,各种自然的交互手段层出不穷,极大地丰富了用户与机器交互的体验,方便了用户的操作,轻松表达了用户的交互意图。可以说,
我们正处在图形与交互技术极速发展的浪尖!
以下是最近几年(特别是今年)出现的一些值得关注的新兴的人机交互设备:
l
1)
2)
http://v.youku.com/v_show/id_XNTIyODU0NDky.html
l
Leap Motion为放在键盘和显示器之间的小小金属棒,就能让任何一位用户通过简单的手势完成人机交互。Leap Motion 的响应惊人的准确,对各种自然而简洁的手势都能识别。不必站起来或者摆动手臂,Leap Motion 是简单而毫不费力的交互方式。我们在4月份就预订了一台,到现在还未到货,估计要到下个月到货。到货后我们会对其进行评测。
l
MYO 是一款能在用户挥动并指向屏幕时测量各种肌肉产生的电活动来完成交互的腕带。MYO 超越 Leap Motion 的一点是,MYO 对用户的位置没有限制。尽管MYO只听令于身体的一个部分(手臂),但是其应用的场合还是很多的。期望未来会有更多的听令于身体的其他部分的交互设备。
l
Google Glass为Google公司在2012的I/O开发者大会上正式公布的,在看起来普普通通的眼镜上配置强大的计算机和显示器。这款设备小巧而不显眼,可以在任何时间地点使用,即用户想要专注于周围环境时不会碍事。不过对其未来的发展各有说法,让我们拭目以待。
l
l
3Doodler是玩具和机器人公司Wobble Works开发的全球首款“3D打印笔”,可以帮助人们在半空中创造出三维结构的模型。今后人们可以在三维空间中来“画图”交流和表达想法了。
l
iWatch由苹果公司推出的一款智能手表。现在仍是概念产品,面世时间未定。其界面看看视频就知道有多酷。但是其技术上的实现笔者也没有完全想通,呵呵。
除了上述介绍的外,最近还有其他很多新的人机交互类的电子科技产品,比如透明手机,可折叠的屏幕,具有气味和触感反馈的头盔等,就不一一介绍了。
由此可见,以前在科幻电影里出现的“神器”逐渐被实现,计算机图形学及相关技术在其中发挥了重要的作用。同时,这些设备的出现,也带给了计算机图形学领域更多的探索和机会。
5、其他内容
上述所提到的只是计算机图形学的主要的四块内容。事实上,与计算机图形学相关的学科还有很多,以下仅介绍几个最为相关的研究方向:
l
l
l
l
l
三、
计算机图形学是一门与很多学科都交叉的学科方向。因此,要学好计算机图形学和做好计算机图形学方面的研究,除了计算机图形学的基础知识以外,你还需要有其他方面的一些知识。当然你懂得越多当然会越好。
1、数学
计算机图形学进入我国大概在上个世纪70年代末和80年代初,那时国内还没有计算机学科。于是,开始学习和研究计算机图形学的大部分都是搞数学的一些学者和教授。由此可见,计算机图形学是需要数学知识较多的一门计算机应用技术学科,在我国也是应用数学的一个重要分支(国内的很多高校和科研院所的数学专业都有计算机图形学方向)。
计算机图形学里面用到的数学比较多,列举一些常用的,包括:微积分、线性代数、矩阵计算、微分几何、数值计算和分析、计算方法、偏微分方程、微分方程数值解、最优化、概率、统计、计算几何等。
计算机图形学领域的一位优秀学者Greg Turk教授在1997年曾写过一篇“计算机图形学中的数学”(Mathematics for Computer Graphics)的帖子,详细可见:
http://www.cc.gatech.edu/~turk/math_gr.html
其中文翻译版本可见:
http://staff.ustc.edu.cn/~lgliu/Resources/CG/Math_for_CG_Turk_CN.htm
笔者在多年从事计算机图形学研究中对数学的体会是:“数学不是没有用,而是不够用!”。对数学的学习和应用将是“活到老,学到老”。重要的是,从以前看似枯燥的数学到看到它的实际应用的过程中,你会更容易享受数学的美妙。在你不断进行计算机图形学的研究的过程中,你会感觉到你的数学知识越来越不够用,从而真正理解其中的数学思想和数学方法。
另一方面,想成为一名计算机图形学的研究者也不必精通各门数学!在大学里,你所学的那些数学看起来都很抽象,枯燥无味,这是因为你并不知道它们的用处,甚至连讲课的老师也不知道,而你们的目的只是记住那些定理和公式,考个好分数。与大学学习数学不一样的是,你在计算机图形学的学习和研究过程中会感受到数学的用处和美妙,这时你学习数学的目的将更加明确,兴趣将更加浓厚,学习方法将更加有效。因为你是在使用数学的过程中在学习数学!想想看你是如何学会中文说话的?以上提到的常用的数学课程你不必都要熟悉,许多研究工作者从不需要考虑其中提到的某些数学知识,成功的研究者总是将某一方面的数学知识和数学工具用到极致!
总之,关于计算机图形学与数学的关系,归纳起来就是以下几个原则:
l
l
l
l
2、编程
在计算机图形学中,大部分的想法都要通过实际例子来验证的,再好的理论也要拿实际例子来得到验证和应用。因此,利用编程语言来实现想法或算法是必须要有的能力。C/C++是计算机图形学最常用的编程语言。
笔者要求学生必须掌握C++编程语言和面向对象编程思想,这是大家通用的“语言”。网上的大部分的资源、类库、算法代码基本上都是C++写的,因此,你若需要利用这些资源,必须掌握甚至精通C++语言。
关于计算机图形学所需要的编程能力的几点看法:
l
l
l
3、其他
l
l
l
4、计算机图形学的教材
上面列举的只是在你从事计算机图形学的学习和研究中可能要用到的东西,不必所有的都学会才能开始计算机图形学的学习和研究。一门知识点不懂不要紧,重要的是要能尽快学习新知识的能力和速度!事实上,最好的学习方法就是在使用中学习。因此,计算机图形学的学习和研究提供了你学习其他相关知识的好的过程。
现在市面上的计算机图形学的教材有很多,但是很多教材的内容仅仅是计算机图形学的基本知识,知识点也比较陈旧。不能指望通过一本或几本教材就能学会计算机图形学。计算机图形学的内容远比教材中或你想象中的内容多得多。正如笔者上面所述,计算机图形学作为一门技术科学,特别是在当前的互联网、移动互联网、大数据时代及第三次工业革命的时代背景下,最近几年的发展日新月异!务必要通过跟着老师做相关研究来了解计算机图形学最新的发展和趋势。除了阅读最新的最新的科研论文外,还需要不断关注信息科技及电子科技的一些前沿发展。要相信,计算机图形学是好玩的,是有用的,更是有未来的!充满热情和激情,才能做好计算机图形学方面的研究。
四、
说到计算机图形学,不能不提SIGGRAPH。
ACM SIGGRAPH是“ACM Special Interest Group on GRAPHics and Interactive Techniques”(美国计算机协会计算机图形专业组)的缩写,成立于1967年,致力于推广和发展计算机绘图和动画制作的软硬件技术。从1974年开始,ACM SIGGRAPH每年都会举办一次年会(也称为SIGGRAPH),至今年已经举办了40次。SIGGRAPH是计算机图形学顶级年度会议,代表着世界级水平的研究,能在SIGGRAPH上发表论文是许多从事计算机图形学研究的工作者的梦想。
SIGGRAPH每年7月底或8月初在美国召开(2011年在加拿大温哥华召开,是SIGGRAPH首次在美国以外的城市举行)。事实上,SIGGRAPH是世界上影响最广、规模最大,同时也是最权威的一个集科学、艺术、商业于一身的CG展示、学术研讨会,参会人数众多,一般有2--4万人。绝大部分计算机图技术软硬件厂商每年都会将最新研究成果拿到SIGGRAPH年会上发布,大部分游戏的电脑动画创作者也将他们本年度最杰出的艺术作品集中在SIGGRAPH上展示。因此,SIGGRAPH在图形图像技术,计算机软硬件以及CG等方面都有着相当的影响力。
从2008年开始,Siggraph来到亚洲,每年冬天(11或12月)在亚洲的一个城市(2008,新加坡;2009,日本横滨;2010,韩国首尔;2011,中国香港;2012,新加坡)召开,称为SIGGRAPH Asia。今年的Siggraph Asia将在2013年11月19-22号于中国香港召开。
与SIGGRAPH一样,发表者SIGGRAPH Asia上的研究论文也代表着计算机图形学领域的最前沿和最高水准,所有研究论文都发表在ACM Transactions on Graphics期刊上,这是计算机图形学领域唯一的一个Top (I区)的学术期刊。可以形象地将SIGGRAPH和SIGGRAPH Asia分别比喻为计算机图形学领域的“夏季奥运会”和“冬季奥运会”。
在SIGGRAPH会议上,除了研究论文外,还有很多其他内容,比如课程、短文、海报、CG企业展示、电子剧场、动画节、新型科技展示、艺术画廊、教育等,比你想象得要多得多。很多活动都是并行的,因此你需要每天提前计划好所参加的活动。视觉中国网站的“Siggraph 2007会议报道”有详尽的关于Siggraph 2007年的报道:
http://static.chinavisual.com/storage/topics/39942/index.shtml
虽然这是6年前的Siggraph介绍,但上述链接的内容仍然是对SIGGRAPH比较全面的介绍。其中有很多视频和材料,详细介绍了Siggraph盛会的情况,而且有对计算机图形学的历史发展的介绍。建议详细查看。
五、
1、
A: 就两点:兴趣 + 擅长!
兴趣是第一位的,是否擅长需要尝试和不断学习成长!学会将自己的天赋发挥到极致!
2、
A: 看看自己是否满足以下两个条件:
1)
2)
若上述两个条件都满足(觉得好玩!),则可以尝试选择计算机图形学作为自己的研究方向。
3、
A: 激情、好奇心、努力!
4、
A: http://staff.ustc.edu.cn/~lgliu/Resources/ForMyStudents/GCL-WhyResearch.rar
5、
A: http://staff.ustc.edu.cn/~lgliu/Resources/ForMyStudents/HowToSucceedAtGCL.rar
六、
l
l
l
l
l
l
l
祝您健康、快乐、成功!
刘利刚
中国科技大学,图形与几何计算实验室(http://gcl.ustc.edu.cn)
个人主页:http://staff.ustc.edu.cn/~lgliu
电子邮箱:lgliu@ustc.edu.cn
2013年8月8日