计算机图形

电脑图形（Computer Graphics，缩写：CG）是指用计算机所创造的图形。更具体的说，就是在计算机上用专门的软件和硬件用来表现和控制图像数据。

计算机图形的发展使用户能更容易与计算机互动，更好的明白和解释多种类型的数据。发展计算机图形对多种媒体有深远的影响，并彻底改变了动画、电影和电子游戏行业。

## 概况

计算机图形在学术中的广义被用来描述为“在计算机里除了文字与声音以外的一切”。通常，计算机图形在学术上指以下事情：

- 用计算机表现或处理图像数据
- 用于创建或处理图像的各种技术
- 经过制作的图像
- 计算机科学分领域的数字合成和处理视觉内容的研究，参见计算机图形学

现在，计算机和计算机生成图像接触到日常生活的多个层面。计算机图像出现在电视、报纸等地方，同时在天气预报、医疗调查和手术操作等产生作用。一个精心构筑的图表可以将复杂的统计以更容易理解和解释的方式呈现。在媒体中，“这样的图表可以被用于说明文件、报告、论文”，和用于其它演示材料。

已经开发出许多功能强大的工具将数据可视化。计算机生成图像可以被分成几种类型：二维、三维和动画。随着技术的改进，三维计算机图形变得越来越常见，但二维计算机图形仍然被广泛使用。在过去的十年中，发展出在其它专门领域的应用，如：信息可视化和科学可视化，其中更多涉及到“三维现象的可视化（建筑、气象、医疗、生物等）”，强调的是体积、表面、光源等的真实渲染，可能是动态（时间）的组成部分。

## 历史

计算机图形一词在1960年由波音的设计师威廉·菲特创造。计算机图形领域随着计算机图形硬件的出现而发展。早期的项目，如旋风计算机和半自动地面防空系统引入CRT作为可行的显示器和交互界面，并引入光笔作为输入设备。

<image>

### 1960年代早期发展

计算机的进一步发展导致了交互计算机图形的巨大发展。在1959年，麻省理工学院林肯实验室开发了TX-2计算机，集成了许多新的人机界面。光笔连接计算机，可以用来在伊凡·萨瑟兰革命性的Sketchpad软件绘制草图。使用光笔，Sketchpad让人可以在计算机屏幕上绘制简单图形，保存后还可以再使用它们。光笔尖端有一个微型的光电元件，将此元件置于电脑屏幕前，接收屏幕的电子枪所发射出的光线。通过简单为电子脉冲的定时和电子枪的位置判断，可以简单准确的判断笔任何时刻在屏幕上的位置。当确定位置后，计算机可以在该位置绘制光标。

萨瑟兰面对众多的图形问题，似乎找到了完美的解决方案。即使在今天，许多计算机图形界面的标准，也是以此早期的Sketchpad程序为起点。一个例子，是绘画约束方面，如果有人想绘制一个正方形，他/她不需要为绘制完美的四条直线才能构成方形的外框而担心，只需要简单指定他/她想绘制的方形，并指定方形的位置和大小，然后该软件将构造一个拥有正确面积和合适位置的完美方形。另一个例子，是萨瑟兰的软件建模对象，不仅是一个对象的图片，换句话说，对一个汽车模型，改变轮胎的大小，不需要影响车的其它部分，也可以仅拉伸车身不改变车胎的形状。

这些早期的计算机图形是矢量图形，由细线条构成，而现在大多是基于光栅的像素图形。

### 1960年代后期发展

<image>

在1961年，麻省理工学院学生史蒂夫·拉塞尔（Steve Russell）创造了第一个电子游戏Spacewar!。为DEC PDP-1编写，Spacewar的突然成功，并在其它的PDP-1用户间传播，最终甚至连DEC也得到一份副本。在DEC的工程师在每台新PDP-1付运前，将其作为诊断程序。销售人员在安装新设备时，会快速安装上此程序，为他们的新顾客运行世界上第一个电子游戏。

1963年，贝尔电话实验室（英语：Bell Telephone Laboratory，简称：BLT）的科学家爱德华·E·萨迦克(Edward E.Zajac)，创作了一部名为《双旋翼重力姿态控制系统仿真模拟》（Simulation of a two-giro gravity attitude control system）的影片。在这部计算机生成影片中，显示了卫星姿态在绕地球盘旋时的变化。他在一台IBM 7090大型计算机上创作了动画。同在贝尔电话实验室，肯·诺尔顿、弗兰克·辛顿（Frank Sindon）和迈克尔·诺尔开始在计算机图形领域工作。辛顿创作了一部名为《力量，质量与运动》（Force, Mass and Motion）的影片，说明运作中的牛顿定律活动。大约同时，其他科学家开始创作计算机图形说明他们的研究。在劳伦斯发射实验室（Lawrence Radiation Laboratory），尼尔森·马克思创作了影片《粘稠液体的流动》（Flow of a Viscous Fluid）和《振动波在固体形式中的传播》（Propagation of Shock Waves in a Solid Form）。波音飞机的程序员创作了影片名为《航空器的振动》（Vibration of an Aircraft）。

在此不久以前，大型企业开始对计算机图形感兴趣。天合汽车集团、洛克希德-乔治亚、通用电气和斯佩里·兰德等众多公司在1960年代中期开始使用计算机图形。IBM迅速作出反应，销售首台大量供应的图形计算机——IBM 2250图形终端。

桑德斯联营公司（Sanders Associates）的监理工程师拉尔夫·巴尔，在1966年构思出家庭电子游戏机，后来授权给玛格纳沃克斯（Magnavox），并称其为奥德赛。虽然其非常简单，并使用相当便宜的电子零件，它允许玩家在一个屏幕上移动光点。它是第一台消费计算机图形产品。

同样在1966年，萨瑟兰在麻省理工学院发明了第一台计算机控制头戴式显示器（HMD）。因为过重需要连接天花板的支架所以被戏称为“达摩克利斯之剑”，它分别在每只眼眼睛显示独立的线框图像。这让观众能在计算机场景中看到三维立体。在他获得麻省理工学院的博士学位后，萨瑟兰成为远景研究规划局的信息处理总监，之后成为哈佛大学教授。

大卫·C·埃文斯从1953年到1962年在本迪克斯公司的电脑部门做工程总监，其后5年在伯克利做客座教授。在那里他继续研究他感兴趣的计算机与人交互的界面。犹他州立大学在1968年招募了埃文斯建立电脑科学项目，而电脑图形很快成为他的主要兴趣。这个新部门之后成为世界计算机图形的主要研究中心。

1967年，萨瑟兰被埃文斯招募加入犹他州立大学的计算机科学项目。在那里，他完善了他的头戴式显示器。20年后，美国宇航局（NASA）重新将他的技术运用到他们的虚拟现实研究。在犹他州，萨瑟兰和埃文斯为多间大型公司做顾问后被高度追捧，但他们对当时图形硬件的落后感到沮丧，所以他们开始制定计划成立自己的公司。

1969年，计算机协会（ACM）创立了图形方面的特别兴趣小组（SIGGRAPH），举办会议、制定图形标志和出版计算机图形领域的刊物。1973年举办首届SIGGRAPH会议，并成为该组织的重点项目。随着时间的增长计算机图形领域不断发展，SIGGRAPH的规模和重要性逐渐增强。

### 1970年代

许多在计算机图形研究中最重要的早期突破发生在1970年代的犹他州立大学。始于一位名叫埃德温·卡特穆尔（Edwin Catmull）的学生，在1970年签入萨瑟兰的计算机图形班。卡特莫刚离开波音公司，并忙于他的物理的学位。虽然在迪士尼长大，卡特莫热衷动画，但他很快发现没有绘画方面的天分。卡特莫等人发现计算机将成为动画的自然发展，希望自己成为变革的一部分。卡特莫制作的第一个动画是他自己，他创作了他手部的开合动画。使用计算机图形制作一部达到正片长度的电影成为他的目标。在同一班上，弗雷德·帕克（Fred Parke）创作了他妻子脸部的动画。因为埃文斯和萨瑟兰的存在，犹他州立大学成为计算机图形研究颇负盛名的地方。

犹他州立大学计算机图形实验室吸引来自各地的人，约翰·沃诺克（John Warnock）是早期的开拓者之一，他之后成立了Adobe Systems，并使用他的页面描述语言PostScript在出版界创造了一场革命。汤姆·斯托克曼（Tom Stockham）领导犹他州立大学与计算机图形实验室工作最密切的图像运算组。吉姆·克拉克（Jim Clark）也在那里，他其后成立了Silicon Graphics, Inc。

### 1980年代

在1980年代，个人计算机出现在艺术家和图形设计师的眼前，特别是Commodore Amiga和Macintosh。它们作为最严谨的设计工具，除了可以节省时间外，还能比其它方式更精准的绘画。1980年代中期，皮克斯使用SGI计算机创作了第一条完全用计算机生成的短片。Macintosh在图形设计工作室和商业之间成为最受欢迎的计算机图形工具。自1980年代以来，现在计算机更多的是使用图形用户界面的符号、图标和图片显示数据和信息，而不是使用文本。图形是多媒体技术的五个关键要素之一。

### 1990年代

自1990年代开始，在游戏、多媒体和动画中，三维图形变得很受欢迎。1995年，首部正片长度计算机生成的动画影片《玩具总动员》在全球的电影院上映。1996年，最早的全三维游戏之一的《雷神之锤》发售。自此，由于更强大的计算机硬件和三维建模软件，计算机图形变得拥有更多细节和真实感。

## 图像类型

### 二维图形

二维计算机图形是以计算机为基础的数字图像，大多来自二维模型，例如二维集合模型、文本和数字图像，具体由它们的技术所区分。

二维计算机图形最初主要用于传统的印刷和绘画技术的应用程序，如：排版、地图、工程制图、广告等行业。在这些应用程序中，二维图像不仅是真实世界物体的表现，而是添加了语义值的独立人工制品。所以二维模型是首选，因为它们比三维计算机图形能更直接的控制，三维图形更接近于摄影。

### 三维图形

<image>

三维图形对比二维图形来说，是指使用三维的几何数据描绘的储存在计算机中为了进行计算和渲染为目的的二维图像。这些图像会在之后显示或实时查看。

尽管存在差异，三维计算机图形仍旧依赖于多种二维图形算法，如在图形线框模型中使用二维计算机矢量图形，在最终渲染显示中使用二维计算机光栅图形。在计算机图形软件中，二维和三维之间的区别偶尔会模糊，二维应用程序可能会使用三维技术实现诸如光照等效果，而主要的三维也可使用二维渲染技术。

三维计算机图形通常被称为三维模型。除了渲染图形以外，模型包含在图形数据文件中。然而还是有所差别，一个三维模型是任何三维物体的精确呈现，但一个模型除非被直观地显示出来，否则严格来说还不是图形。由于有三维打印技术，三维模型并不局限于虚拟空间。模型通过一个名为三维渲染的过程，可以用二维图像直观地显示出来，或用于非图形化的计算机模拟和计算。有专门的三维计算机图形软件给用户创建三维图像。

### 像素画

像素画是一种数字艺术形式，通过使用光栅图形软件，以像素级来编辑图片。在很多老（或相对有限）的计算机游戏、电子游戏、图形计算器游戏和许多手机游戏中使用的图形，通常都是像素画。

### 矢量图形与光栅图形

矢量图形格式与光栅图形是互补的，光栅图形由大量像素构成，通常的代表是摄影图像。矢量图形使用形状和颜色的编码数据构成图像，在渲染方面可以更灵活。当使用矢量时，最好使用矢量工具与格式；当使用光栅图形时，最好使用光栅工具与格式。有时两种图形会同时使用。了解每种技术的优点和局限，以及它们之间的关系，可以在使用工具时能更好的使用和有更高的效率。

### 计算机动画

<image>

计算机动画是通过计算机创造的移动图像艺术。它是计算机图形和动画的子域。虽然二维计算机图形因为风格化、低带宽要求、便于高速实时渲染，而被广泛地使用在电脑动画中（如：Flash动画），但越来越多的动画使用三维计算机图形制作。有时动画的播放媒体是计算机本身，但有时则是其它的媒体，如电影。它也被称为计算机生成图像（CGI，Computer-generated imagery或computer-generated imaging），特别是在电影中使用时。

虚拟实体可以自制，并被存储在对象变换矩阵中的变换值（包括：位置、方向和大小）等属性所控制。动画的属性随时间推移而改变。动画有多种实现的方法，基本的方法是基于关键帧的创作和编辑，每个关键帧储存独立赋予的时间值，播放关键帧成为动画。也可以使用二维/三维图形软件在两个关键帧间插值，创建一个映射值随时间推移的可编辑曲线，最终生成动画。其它动画的实现方法，包括程序动画和基于表达式的技术：前者将动画实体的互动元素集中成为属性集，用于创建粒子系统效果和群仿真；后者允许从用户定义的逻辑表达式返回评估结果，再加上数学计算，以可预见的方式（除建立骨骼系统提供的等级外便于控制骨骼行为）自动生成动画。

为了创造运动错觉，显示在计算机显示器上的图像快速的被新的稍微移动的图像所替代。这种技术与电视和电影上使用的运动错觉是相同的。