什么是计算机图形学?计算机图形学(ComputerGraphics,简称CG)的内容比较丰富,与很多学科都有交叉,因此笔者认为是无法严格定义的。
狭义地理解,计算机图形学是数字图象处理或计算机视觉的逆过程:计算机图形学是用计算机来画图像的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科,计算机视觉是根据获取的图像来理解和识别其中的物体的三维信息及其他信息。
注意,这些都是不确切的定义,实际上,计算机图形学、数字图象处理和计算机视觉在很多地方的区别不是非常清晰,很多概念是相通的,而且随着研究的深入,这些学科方向不断的交叉融入,形成一个更大的学科方向,可称之为“可视计算”(VisualComputing)。这是后话,此处不详述。
二、计算机图形学的主要内容
根据笔者的理解,计算机图形学主要包含四大部分的内容:建模(Modeling)、渲染(Rendering)、动画(Animation)和人机交互(Human–computerInteraction,HCI)。
1、建模(Modeling)
要在计算机中表示一个三维物体,首先要有它的几何模型表达。因此,三维模型的建模是计算机图形学的基础,是其他内容的前提。表达一个几何物体可以是用数学上的样条函数或隐式函数来表达;也可以是用光滑曲面上的采样点及其连接关系所表达的三角网格来表达(即连续曲面的分片线性逼近),如下图所示。
三维建模方法主要包含如下的一些方法:
l计算机辅助设计(CAD)中的主流方法是采用NURBS(非均匀有理B-样条、Bezier曲线曲面)方法(已成为CAD工业领域的标准),这也是计算机辅助几何设计(CAGD)所研究的主要内容。此类表达方法有一些难点问题仍未解决,比如非正规情况下的曲面光滑拼合,复杂曲面表达等。这部分涉及的数学比较多,国内做这块的学者比较多些。
l细分曲面(Subdivisionsurface)造型方法,作为一种离散迭代的曲面构造方法,由于其构造过程朴素简单以及实现容易,是一个方兴未艾的研究热点。经过十多年的研究发展,细分曲面造型取得了较大的进展,包括奇异点处的连续性构造方法以及与GPU图形硬件相结合的曲面处理方法。
l利用软件的直接手工建模。现在主流的商业化的三维建模软件有Autodesk3DMax和Maya。其他还有面向特定领域的商业化软件,比如面向建筑模型造型的GoogleSketchup,面向CAD/CAM/CAE的CATIA和AutoCAD,面向机械设计的SolidWorks,面向造船行业的Rhino等。这些软件需要建模人员有较强的专业知识,而且需要一定时期的培训才能掌握,建模效率低而学习门槛高,不易于普及和让非专业用户使用。
l基于笔划或草图交互方式的三维建模方法。草图交互方式由于其符合人类原有日常生活中的思考习惯,交互方式直观简单,是最近几年研究的热点建模方法。其难点是根据具体的应用场合,如何正确地理解和识别用户的交互所表达的语义,构造出用户所希望的模型。
l基于语法及规则的过程式建模方法。特别适合具有重复特征和结构化的几何物体与场景,比如建筑、树木等。最近几年有较多的论文及较大的发展。
l基于图像或视频的建模方法。这是传统的计算机视觉所要解决的基本问题。在计算机图形学领域,这方面的发展也很迅速。有一些商业化软件或云服务(比如Autodesk的123D),已经能从若干张照片重建出所拍摄物体的三维模型。该方法的问题是需要物体本身已经存在,而且重建的三维模型的精度有限。
l基于扫描点云(深度图像如Kinect、结构光扫描、激光扫描、LiDAR扫描等)的建模(Reconstruction)方法。随着深度相机的出现及扫描仪的价格迅速下降,人们采集三维数据变得容易,从采集到的三维点云来重建三维模型的工作在最近几年的Siggraph(Asia)上能常见到。但是,单纯的重建方式存在精度低、稳定性差和运算量大等不足,远未能满足实际的需求。
除了上述的这些建模方法,还有其他的一些建模方法,在此不再一一列举。
在对三维几何模型的构建过程中,还会涉及到很多需要处理的几何问题,比如数据去噪(denoisingorsmoothing)、补洞(repairing)、简化(simplification)、层次细节(levelofdetail)、参数化(parameterization)、变形(deformationorediting)、分割(segmentation)、形状分析及检索(shapeanalysisandretrieval)等。这些问题构成“数字几何处理”的主要研究内容。笔者自2005年起开设了多年的《数字几何处理》的研究生课程:
另外,随着三维打印(3Dprinting)的新兴技术的逐渐普及,人们对三维模型的需求也日益增加。笔者个人认为,几何建模和三维打印的未来是共呼吸,同命运的:也只有当人人都能轻松建模时,三维打印才有可能走向千家万户。
三维几何建模的任务仍然任重道远,大家仍需共同努力!
2、渲染(Rendering)
有了三维模型或场景,怎么把这些三维几何模型画出来,产生令人赏心悦目的真实感图像?这就是传统的计算机图形学的核心任务,在计算机辅助设计,影视动漫以及各类可视化应用中都对图形渲染结果的高真实感提出了很高的要求。
上个世纪80-90年代研究的比较多些,包含了大量的渲染模型,包括局部光照模型(LocalIlluminationModel)、光线跟踪算法(RayTracing)、辐射度(Radiosity)等,以及到后面的更为复杂、真实、快速的渲染技术,比如全局光照模型(GlobalIlluminationModel)、Photomapping、BTF、BRDF、以及基于GPU的渲染技术等。
现在的渲染技术已经能够将各种物体,包括皮肤、树木、花草、水、烟雾、毛发等渲染得非常逼真。一些商业化软件(比如Maya,Blender,PovRay等)也提供了强大的真实感渲染功能,在计算机图形学研究论文中作图中要经常用到这些工具来渲染漂亮的展示图或结果图。
3、动画(Animation)
网上的一些3D动画的视频:
4、人机交互(Human–ComputerInteraction,HCI)
人机交互(Human-ComputerInteraction,简写HCI)是指人与计算机之间以一定的交互方式或交互界面,来完成确定任务的人与计算机之间的信息交换过程。简单来讲,就是人如何通过一定的交互方式告诉计算机来完成他所希望完成的任务。
在早期(上个世纪60-70年代),只有以键盘输入的字符界面;到了80年代,以WIMP(窗口、图符、菜单、鼠标)为基础的图形用户界面(GUI)逐渐成为当今计算机用户界面的主流。
近年来,以用户为中心的系统设计思想,增进人机交互的自然性,提高人机交互的效率是用户界面的主要研究方向。陆续提出了多通道用户界面的思想,它包括语言、姿势输入、头部跟踪、视觉跟踪、立体显示、三维交互技术、感觉反馈及自然语言界面等。
事实上,人体的表面本身就是人机界面。人体的任何部分(姿势,手势,语言,眼睛,肌肉电波,脑波等)都可以成为人机对话的通道。比如2010年微软出的Kinect就是一种无需任何操纵杆的基于体感的人机界面,用户本身就是控制器。Kinect在微软的Xbox游戏上取得了极大的成功,之后在其他方面也得到了很多的应用。
特别是到了今年(2013年),人机交互设备有了巨大的发展,各种自然的交互手段层出不穷,极大地丰富了用户与机器交互的体验,方便了用户的操作,轻松表达了用户的交互意图。可以说,
我们正处在图形与交互技术极速发展的浪尖!
1)Kinect由微软于2010年推出的对XBOX360体感外设,它不需要使用任何控制器,仅依靠相机捕捉三维空间中玩家的运动,同时它导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。Kinect彻底颠覆了游戏的单一操作。使人机互动的理念更加彻底的展现出来。之后,基于Kinect的各种应用像雨后春笋般的冒出来,包括人机交互,手势识别,几何建模等。
2)在2013年5月28日的XboxOne发布会上,微软展示了新一代Kinect2.0,新Kinect能感知的语音、手势和玩家感觉信息,将给玩家带来前所未有的互动性体验:
LeapMotion为放在键盘和显示器之间的小小金属棒,就能让任何一位用户通过简单的手势完成人机交互。LeapMotion的响应惊人的准确,对各种自然而简洁的手势都能识别。不必站起来或者摆动手臂,LeapMotion是简单而毫不费力的交互方式。我们在4月份就预订了一台,到现在还未到货,估计要到下个月到货。到货后我们会对其进行评测。
MYO是一款能在用户挥动并指向屏幕时测量各种肌肉产生的电活动来完成交互的腕带。MYO超越LeapMotion的一点是,MYO对用户的位置没有限制。尽管MYO只听令于身体的一个部分(手臂),但是其应用的场合还是很多的。期望未来会有更多的听令于身体的其他部分的交互设备。
l3DPrinter:这个就不用笔者详细说了,这两年太火了。正如上面所提到的观点,笔者觉得3D打印的出现带给了我们从事计算机图形学研究的工作者许多的机会。挑战和机会并存!我们应该要抓住这次机会!
3Doodler是玩具和机器人公司WobbleWorks开发的全球首款“3D打印笔”,可以帮助人们在半空中创造出三维结构的模型。今后人们可以在三维空间中来“画图”交流和表达想法了。
除了上述介绍的外,最近还有其他很多新的人机交互类的电子科技产品,比如透明手机,可折叠的屏幕,具有气味和触感反馈的头盔等,就不一一介绍了。
5、其他内容
l虚拟现实(VirtualReality):利用计算机图形产生器,位置跟踪器,多功能传感器和控制器等有效地模拟实际场景和情形,从而能够使观察者产生一种真实的身临其境的感觉。虚拟现实技术主要研究用计算机模拟(构造)三维图形空间,并使用户能够自然地与该空间进行交互。对三维图形处理技术的要求特别高。简单的虚拟现实系统早在70年代便被应用于军事领域,训练驾驶员。80年代后随着计算机软硬件技术的提高,它也得到重视并迅速发展。它已在航空航天、医学、教育、艺术、建筑等领域得到初步的应用。
l可视化(Visualization):利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。现已成为研究数据表示、数据处理、决策分析等一系列问题的综合技术。上面提到的虚拟现实技术也是以图形图像的可视化技术为依托的。在现在的大数据时代的背景下,可视化的内容除了传统的科学可视化外,现在还有信息可视化,可视分析等方面。
l可视媒体计算与处理(VisualMediaProcessing):几何数据,被认为是继声音、图像、视频之后的新一代数字媒体,是计算机图形学的研究重点。最近几年,计算机图形学与图像视频处理技术相结合的研究与技术日益增多。正如笔者在上面所提及的,图像和视频的大数据处理能带给计算机图形学很多处理手段上的更新。另一方面,随着而计算机图形学技术,恰可以与这些图像处理,视觉方法相交叉融合,来直接地生成风格化的画面,实现基于图像三维建模,以及直接基于视频和图像数据来生成动画序列。当计算机图形学正向地图像生成方法和计算机视觉中逆向地从图像中恢复各种信息方法相结合,可以带来无可限量的想象空间,构造出很多视觉特效来,最终用于增强现实、数字地图、虚拟博物馆展示等多种应用中去。因此,在很多方面,计算机图形学与图像处理、视频处理、多媒体处理、计算机视觉等学科逐渐融合在一起,有成为一个更大的学科的趋势。
l医学图像处理(MedicalImaging):随着医学成像技术的发展与进步,图像处理在医学研究与临床医学中的应用越来越广泛。与一般意义上的图像处理比较,医学图像处理有其特殊性和不同的侧重点。医学图像处理由生物医学成像(X射线、CT、MRI)和生物医学图像处理两部分组成,在生命科学研究、医学诊断、临床治疗等方面起着重要的作用。医学图像分析中涉及的两个最为重要的内容为图像分割与图像配准。
l计算机艺术(ComputationalArts):计算机图形学的发展也提供给了艺术家发挥和实现想象的丰富的技术手段。计算机艺术的发展速度远远超出了人们的想象,在代表计算机图形研究最高水平的历届SIGGRAPH年会上,精彩的计算机艺术作品层出不穷。在计算机图形学领域,还有几个关于计算艺术方面的会议,包括非真实性图形学(Non-PhotorealisticGraphics)和ComputationalAesthetics(计算美学)等。吸引了计算机工作者、艺术家、建筑师、设计师等方面的人员在一起,通过头脑风暴和交流讨论的方式进行一些有创意的技术研究。
三、学习计算机图形学需要哪些基础?
计算机图形学是一门与很多学科都交叉的学科方向。因此,要学好计算机图形学和做好计算机图形学方面的研究,除了计算机图形学的基础知识以外,你还需要有其他方面的一些知识。当然你懂得越多当然会越好。
1、数学
计算机图形学进入我国大概在上个世纪70年代末和80年代初,那时国内还没有计算机学科。于是,开始学习和研究计算机图形学的大部分都是搞数学的一些学者和教授。由此可见,计算机图形学是需要数学知识较多的一门计算机应用技术学科,在我国也是应用数学的一个重要分支(国内的很多高校和科研院所的数学专业都有计算机图形学方向)。
计算机图形学里面用到的数学比较多,列举一些常用的,包括:微积分、线性代数、矩阵计算、微分几何、数值计算和分析、计算方法、偏微分方程、微分方程数值解、最优化、概率、统计、计算几何等。
计算机图形学领域的一位优秀学者GregTurk教授在1997年曾写过一篇“计算机图形学中的数学”(MathematicsforComputerGraphics)的帖子,详细可见:
其中文翻译版本可见:
笔者在多年从事计算机图形学研究中对数学的体会是:“数学不是没有用,而是不够用!”。对数学的学习和应用将是“活到老,学到老”。重要的是,从以前看似枯燥的数学到看到它的实际应用的过程中,你会更容易享受数学的美妙。在你不断进行计算机图形学的研究的过程中,你会感觉到你的数学知识越来越不够用,从而真正理解其中的数学思想和数学方法。
另一方面,想成为一名计算机图形学的研究者也不必精通各门数学!在大学里,你所学的那些数学看起来都很抽象,枯燥无味,这是因为你并不知道它们的用处,甚至连讲课的老师也不知道,而你们的目的只是记住那些定理和公式,考个好分数。与大学学习数学不一样的是,你在计算机图形学的学习和研究过程中会感受到数学的用处和美妙,这时你学习数学的目的将更加明确,兴趣将更加浓厚,学习方法将更加有效。因为你是在使用数学的过程中在学习数学!想想看你是如何学会中文说话的?以上提到的常用的数学课程你不必都要熟悉,许多研究工作者从不需要考虑其中提到的某些数学知识,成功的研究者总是将某一方面的数学知识和数学工具用到极致!
总之,关于计算机图形学与数学的关系,归纳起来就是以下几个原则:
l计算机图形学的研究需要用到较多的数学知识,有较好数学功底的学生从事计算机图形学有一定优势;
l学习数学要结合图形,即“数形结合”,需要有图形的想象能力;数学公式不重要,是“纸老虎”,重要的是背后的思想及其所表达的概念,公式只是它们的一个抽象表达;
l活到老,学到老。要不断学习新的知识和技术,使自己不断进步和增长功力,才是王道。
2、编程
在计算机图形学中,大部分的想法都要通过实际例子来验证的,再好的理论也要拿实际例子来得到验证和应用。因此,利用编程语言来实现想法或算法是必须要有的能力。C/C++是计算机图形学最常用的编程语言。
笔者要求学生必须掌握C++编程语言和面向对象编程思想,这是大家通用的“语言”。网上的大部分的资源、类库、算法代码基本上都是C++写的,因此,你若需要利用这些资源,必须掌握甚至精通C++语言。
关于计算机图形学所需要的编程能力的几点看法:
l从事计算机图形学和图像处理的研究需要有较强的编程能力,要对编程有极大的兴趣和热情;
l如果你对编程比较“感冒”或“厌恶”,则建议你不要选择计算机图形学方向;
3、其他
l英语基础要好,因为需要大量阅读英文文献和进行英文论文的写作;英文的听说能力也要好些,因为要跟国际学者交流讨论;
l计算机图形学中的很多算法是真实物理世界的模拟,因此,如果你要进行基于物理的建模和仿真,一些物理知识和理论也需要的,比如力学(动力学,运动学,流体力学)和光学等;
l其他学科的知识,根据具体研究的需要去学习即可,不必刻意去提前学多少。
4、计算机图形学的教材
四、SIGGRAPH简介
说到计算机图形学,不能不提SIGGRAPH。
与SIGGRAPH一样,发表者SIGGRAPHAsia上的研究论文也代表着计算机图形学领域的最前沿和最高水准,所有研究论文都发表在ACMTransactionsonGraphics期刊上,这是计算机图形学领域唯一的一个Top(I区)的学术期刊。可以形象地将SIGGRAPH和SIGGRAPHAsia分别比喻为计算机图形学领域的“夏季奥运会”和“冬季奥运会”。
在SIGGRAPH会议上,除了研究论文外,还有很多其他内容,比如课程、短文、海报、CG企业展示、电子剧场、动画节、新型科技展示、艺术画廊、教育等,比你想象得要多得多。很多活动都是并行的,因此你需要每天提前计划好所参加的活动。视觉中国网站的“Siggraph2007会议报道”有详尽的关于Siggraph2007年的报道:
虽然这是6年前的Siggraph介绍,但上述链接的内容仍然是对SIGGRAPH比较全面的介绍。其中有很多视频和材料,详细介绍了Siggraph盛会的情况,而且有对计算机图形学的历史发展的介绍。建议详细查看。
五、其他问题
1、如何选择适合自己的工作(研究方向)?
A:就两点:兴趣+擅长!
兴趣是第一位的,是否擅长需要尝试和不断学习成长!将学会将自己的天赋发挥到极致!
2、自己是否适合学习和从事计算机图形学的研究?
A:看看自己是否满足以下两个条件:
1)对计算机图形学或图像处理具有强烈的兴趣和激情;
2)喜欢算法设计和编程。
若上述两个条件都满足(觉得好玩!),则可以尝试选择计算机图形学作为自己的研究方向。
3、从事研究工作需要哪些品质?
A:激情、好奇心、努力!
4、为何选择从事研究工作?
5、如何在研究生期间取得成功?
六、更多参考材料
l国内外有很多从事计算机图形学研究的教授学者的网站,会列出他们所做的有关计算机图形学方面的研究,可以更为深入了解计算机图形学领域所研究的东西。
l最后,要相信,计算机图形学是很好玩的,是有用的,更是有未来的。“相信是成功的开始”。祝各位能够感受计算机图形的美妙,能够在计算机图形学的海洋中享受快乐和成功!J