什么是计算机图形学?
一、什么是计算机图形学?
计算机图形学(Computer Graphics,简称 CG)的内容比较丰富,与很多学科都有交叉,因此认为是无法严格定义的。
在 “Wiki百科” 和 “百度百科” 上,对 “计算机图形学” 的解释为:计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。虽然通常认为 CG 是指三维图形的处理,事实上也包括了二维图形及图像的处理。
狭义地理解,计算机图形学是数字图象处理或计算机视觉的逆过程:计算机图形学是用计算机来画图像的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科,计算机视觉是根据获取的图像来理解和识别其中的物体的三维信息及其他信息。
二、计算机图形学的主要内容
计算机图形学主要包含四大部分的内容:建模(Modeling)、渲染(Rendering)、动画(Animation)和人机交互(Human–computer Interaction, HCI)。
2.1 建模(Modeling)
要在计算机中表示一个三维物体,首先要有它的几何模型表达。因此,三维模型的建模是计算机图形学的基础,是其他内容的前提。表达一个几何物体可以是用数学上的样条函数或隐式函数来表达;也可以是用光滑曲面上的采样点及其连接关系所表达的三角网格来表达(即连续曲面的分片线性逼近),如下图所示。
三维建模方法主要包含如下的一些方法:
- 计算机辅助设计(CAD)中的主流方法是采用 NURBS(非均匀有理B-样条、Bezier曲线曲面)方法(已成为 CAD 工业领域的标准),这也是计算机辅助几何设计(CAGD)所研究的主要内容。此类表达方法有一些难点问题仍未解决,比如非正规情况下的曲面光滑拼合,复杂曲面表达等。这部分涉及的数学比较多,国内做这块的学者比较多些。
- 细分曲面(Subdivision surface)造型方法,作为一种离散迭代的曲面构造方法,由于其构造过程朴素简单以及实现容易,是一个方兴未艾的研究热点。经过十多年的研究发展,细分曲面造型取得了较大的进展,包括奇异点处的连续性构造方法以及与 GPU 图形硬件相结合的曲面处理方法。
- 利用软件的直接手工建模。现在主流的商业化的三维建模软件有 Autodesk 3D Max 和 Maya。其他还有面向特定领域的商业化软件,比如面向建筑模型造型的 Google Sketchup,面向 CAD/CAM/CAE 的 CATIA 和 AutoCAD,面向机械设计的 SolidWorks,面向造船行业的 Rhino 等。这些软件需要建模人员有较强的专业知识,而且需要一定时期的培训才能掌握,建模效率低而学习门槛高,不易于普及和让非专业用户使用。
- 基于笔划或草图交互方式的三维建模方法。草图交互方式由于其符合人类原有日常生活中的思考习惯,交互方式直观简单,是最近几年研究的热点建模方法。其难点是根据具体的应用场合,如何正确地理解和识别用户的交互所表达的语义,构造出用户所希望的模型。
- 基于语法及规则的过程式建模方法。特别适合具有重复特征和结构化的几何物体与场景,比如建筑、树木等。最近几年有较多的论文及较大的发展。
- 基于图像或视频的建模方法。这是传统的计算机视觉所要解决的基本问题。在计算机图形学领域,这方面的发展也很迅速。有一些商业化软件或云服务(比如 Autodesk 的 123D),已经能从若干张照片重建出所拍摄物体的三维模型。该方法的问题是需要物体本身已经存在,而且重建的三维模型的精度有限。
- 基于扫描点云(深度图像如 Kinect、结构光扫描、激光扫描、LiDAR 扫描等)的建模(Reconstruction)方法。随着深度相机的出现及扫描仪的价格迅速下降,人们采集三维数据变得容易,从采集到的三维点云来重建三维模型的工作在最近几年的 Siggraph(Asia) 上能常见到。但是,单纯的重建方式存在精度低、稳定性差和运算量大等不足,远未能满足实际的需求。
- 基于现有模型来合成建模的方法。随着三维模型的逐渐增多,可以利用现有的三维模型通过简单的操作,比如 cut and paste,或者分析及变形等手段,来拼接或合成新的三维模型。这种通过“学习”模型数据库的知识来进行建模的手段在近 3-5 年里研究得非常热门。从某方面来讲,就是“大数据时代”背景下计算机图形学领域中的一个具体的表现。
虽然有上述所提到的这么多的三维建模方式,但是至今为止,仍没有适合一般家庭用户的轻松简单的建模工具。现有的电子设备(比如相机,手机等)能够帮助人们轻松获得图像和视频,但是,不是人人都有能力来构建三维几何模型。如何让大众能够像获取图像那样能够随时随地地获取或者构建三维模型,仍然是计算机图形学的任重道远的主要任务之一!
2.2 渲染(Rendering)
有了三维模型或场景,怎么把这些三维几何模型画出来,产生令人赏心悦目的真实感图像?这就是传统的计算机图形学的核心任务,在计算机辅助设计,影视动漫以及各类可视化应用中都对图形渲染结果的高真实感提出了很高的要求。
上个世纪 80-90 年代研究的比较多些,包含了大量的渲染模型,包括局部光照模型(Local Illumination Model)、光线跟踪算法(Ray Tracing)、辐射度(Radiosity)等,以及到后面的更为复杂、真实、快速的渲染技术,比如全局光照模型(Global Illumination Model)、Photo mapping、BTF、BRDF、以及基于 GPU 的渲染技术等。
现在的渲染技术已经能够将各种物体,包括皮肤、树木、花草、水、烟雾、毛发等渲染得非常逼真。一些商业化软件(比如 Maya, Blender, Pov Ray 等)也提供了强大的真实感渲染功能,在计算机图形学研究论文中作图中要经常用到这些工具来渲染漂亮的展示图或结果图。
然而,已知的渲染实现方法,仍无法实现复杂的视觉特效,离实时的高真实感渲染还有很大差距,比如完整地实现适于电影渲染(高真实感、高分辨率)制作的 RenderMan 标准,以及其他各类基于物理真实感的实时渲染算法等。因此,如何充分利用 GPU 的计算特性,结合分布式的集群技术,从而来构造低功耗的渲染服务是发展趋势之一。
2.3 动画(Animation)
动画是采用连续播放静止图像的方法产生物体运动的效果。计算机动画借助于编程或动画制作软件生成一系列的景物画面,是计算机图形学的研究热点之一。
研究方向包括:人体动画,关节动画,运动动画,脚本动画,具有人的意识的虚拟角色的动画系统等。另外,高度物理真实感的动态模拟,包括对各种形变、水、气、云、烟雾、燃烧、爆炸、撕裂、老化等物理现象的真实模拟,也是动画领域的主要问题。
这些技术是各类动态仿真应用的核心技术,可以极大地提高虚拟现实系统的沉浸感。计算机动画的应用领域广泛,比如动画片制作,广告、电影特技,训练模拟,物理仿真,游戏等。
2.4 人机交互(Human–Computer Interaction, HCI)
人机交互(Human-Computer Interaction,简写 HCI)是指人与计算机之间以一定的交互方式或交互界面,来完成确定任务的人与计算机之间的信息交换过程。简单来讲,就是人如何通过一定的交互方式告诉计算机来完成他所希望完成的任务。
在早期(上个世纪 60-70 年代),只有以键盘输入的字符界面;到了 80 年代,以 WIMP(窗口、图符、菜单、鼠标)为基础的图形用户界面(GUI)逐渐成为当今计算机用户界面的主流。
近年来,以用户为中心的系统设计思想,增进人机交互的自然性,提高人机交互的效率是用户界面的主要研究方向。陆续提出了多通道用户界面的思想,它包括语言、姿势输入、头部跟踪、视觉跟踪、立体显示、三维交互技术、感觉反馈及自然语言界面等。
事实上,人体的表面本身就是人机界面。人体的任何部分(姿势,手势,语言,眼睛,肌肉电波,脑波等)都可以成为人机对话的通道。
以下是一些人机交互设备的应用:
- Microsoft Kinect:由微软于 2010 年推出的 XBOX360 体感外设,它不需要使用任何控制器,仅依靠相机捕捉三维空间中玩家的运动,同时它导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。Kinect 彻底颠覆了游戏的单一操作。使人机互动的理念更加彻底的展现出来。之后,基于 Kinect 的各种应用像雨后春笋般的冒出来,包括人机交互,手势识别,几何建模等。
- Google Glass:为 Google 公司在 2012 的 I/O 开发者大会上正式公布的,在看起来普普通通的眼镜上配置强大的计算机和显示器。这款设备小巧而不显眼,可以在任何时间地点使用,即用户想要专注于周围环境时不会碍事。
- Apple Watch:苹果公司推出的一款智能手表,界面极其炫酷。
2.5 其他内容
上述所提到的只是计算机图形学的主要的四个内容。事实上,与计算机图形学相关的学科还有很多,以下仅介绍几个最为相关的研究方向:
-
虚拟现实(Virtual Reality):利用计算机图形产生器,位置跟踪器,多功能传感器和控制器等有效地模拟实际场景和情形,从而能够使观察者产生一种真实的身临其境的感觉。虚拟现实技术主要研究用计算机模拟(构造)三维图形空间,并使用户能够自然地与该空间进行交互。对三维图形处理技术的要求特别高。
-
可视化(Visualization):利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。现已成为研究数据表示、数据处理、决策分析等一系列问题的综合技术。
-
医学图像处理(Medical Imaging):随着医学成像技术的发展与进步,图像处理在医学研究与临床医学中的应用越来越广泛。与一般意义上的图像处理比较,医学图像处理有其特殊性和不同的侧重点。医学图像处理由生物医学成像(X射线、CT、MRI)和生物医学图像处理两部分组成,在生命科学研究、医学诊断、临床治疗等方面起着重要的作用。医学图像分析中涉及的两个最为重要的内容为图像分割与图像配准。
-
计算机艺术(Computational Arts):计算机图形学的发展也提供给了艺术家发挥和实现想象的丰富的技术手段。计算机艺术的发展速度远远超出了人们的想象,在代表计算机图形研究最高水平的历届 SIGGRAPH 年会上,精彩的计算机艺术作品层出不穷。
三、 学习计算机图形学需要哪些基础?
计算机图形学是一门与很多学科都交叉的学科方向。因此,要学好计算机图形学和做好计算机图形学方面的研究,除了计算机图形学的基础知识以外,你还需要有其他方面的一些知识。当然你懂得越多当然会越好。
3.1 数学
计算机图形学进入我国大概在上个世纪 70 年代末和 80 年代初,那时国内还没有计算机学科。于是,开始学习和研究计算机图形学的大部分都是搞数学的一些学者和教授。由此可见,计算机图形学是需要数学知识较多的一门计算机应用技术学科,在我国也是应用数学的一个重要分支(国内的很多高校和科研院所的数学专业都有计算机图形学方向)。
计算机图形学里面用到的数学比较多,列举一些常用的,包括:微积分、线性代数、矩阵计算、微分几何、数值计算和分析、计算方法、偏微分方程、微分方程数值解、最优化、概率、统计、计算几何等。
关于计算机图形学与数学的关系,归纳起来就是以下几个原则:
- 计算机图形学的研究需要用到较多的数学知识,有较好数学功底的学生从事计算机图形学有一定优势;
- 即使没有学太多的数学也不要紧。数学的知识不需要都学会了再去做问题,在解决问题的过程中去学习数学是最快的学习方法。即,研究过程中若遇到什么数学知识再去学相关的知识,学习起来会更有兴趣,掌握起来会更快更扎实;
- 学习数学要结合图形,即“数形结合”,需要有图形的想象能力;数学公式不重要,是“纸老虎”,重要的是背后的思想及其所表达的概念,公式只是它们的一个抽象表达。
3.2 编程
在计算机图形学中,大部分的想法都要通过实际例子来验证的,再好的理论也要拿实际例子来得到验证和应用。因此,利用编程语言来实现想法或算法是必须要有的能力。
C/C++ 是计算机图形学最常用的编程语言。网上的大部分的资源、类库、算法代码基本上都是 C++ 写的,因此,你若需要利用这些资源,必须掌握甚至精通 C++ 语言。
关于计算机图形学所需要的编程能力的几点看法:
- 从事计算机图形学和图像处理的研究需要有较强的编程能力,要对编程有极大的兴趣和热情;
- 如果你对编程比较“感冒”或“厌恶”,则建议你不要选择计算机图形学方向;
3.3 其他
- 英语基础要好,因为需要大量阅读相关的英文文献;
- 计算机图形学中的很多算法是真实物理世界的模拟,因此,如果你要进行基于物理的建模和仿真,一些物理知识和理论也需要的,比如力学(动力学,运动学,流体力学)和光学等;
- 其他学科的知识,根据具体研究的需要去学习即可,不必刻意去提前学多少。
参考: