计算机图形学与GPU渲染 -- 什么是计算机图形学
一:定义
关于计算机图形学的定义众说纷纭。IEEE 对计算机图形学的定义为:Computer graphics is the art or science of producing graphical images with the aid of computer。
国际标准化组织 ISO 将计算机图形学定义为:计算机图形学是一门研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理方法和技术的学科。它是建立在传统的图学理论、应用数学及计算机科学基础上的一门边缘学科。
总而言之计算机图形学是研究怎样利用计算机来显示、生成和处理图形的原理、方法和技术的一门学科,这里的图形是指三维图形的处理。
二:计算机图形学发展史
20 世纪 50 年代:1950 年,美国 MIT 的旋风一号(whirlwind I)计算机配备了世界上第一台显示器——阴极射线管(CRT)来显示一些简单的图形,使得计算机摆脱了纯数值计算的单一用途,能够进行简单的图形显示,从此计算机具有了图像显示功能,但是还不能对图形进行交互操作,这时的计算机图形学处于准备和酝酿时期,并称之为“被动式”图形学。
50 年代末期,MIT 的林肯实验室在“旋风”计算机上开发 SAGE(Semi-Automatic GroundEnvironment System)空中防御体系。SAGE 于 1957 年投入试运行,已经能够将雷达信号转换为显示器上的图形并具有简单的人机交互功能,操作者使用光笔点击屏幕上的目标即可获得敌机的飞行信息,这是人类第一次使用光笔在屏幕上选取图形。1959 年,麻省理工学院林肯实验室第一次使用了具有指挥和控制功能的 CRT,“被动式”图形学开始迈向交互式计算机图形学。
20 世纪 60 年代:1962 年美国 MIT 林肯实验室的 Ivan E.Sutherland 发表了一篇题为“sketchpad:一个人机交互通信的图形系统”的博士论文,首次使用了“Computer Graphics”这一概念,证明了交互式计算机图形学是一个可行的、有应用价值的研究领域,从而确立了计算机图形学正式成为一个独立学科的分支。1968 年 Ivan E. Sutherland 又发表了《头戴式三维显示器》的论文,在头盔的封闭环境下,利用计算机成像的左右视图匹配,生成立体场景,使人置身于虚拟现实中。Ivan E. Sutherland 为计算机图形学技术做出了巨大的贡献,被称作计算机图形学的开山鼻祖,1988 年 Ivan E. Sutherland 被授予 A.M 图灵奖。并且这一时期,光栅图形学算法开始萌芽。
20 世纪 70 年代:图形学在这一时期进入了兴盛期,光栅图形学算法迅速发展,区域填充、裁剪、消隐等概念及其相应算法纷纷被提出,实用的 CAD 图形系统也开始出现。除此之外,真实感图形学和实体造型技术的产生也是 70 年代计算机图形学的两个重要进展。1970年 J. Bouknight 在 ACM 上发表论文,提出了第一个光反射模型1,指出物体表面朝向是确定物体表面上一点光强的主要因素,并用 Lambert 漫反射定律计算物体表面上各多边形的光强,对光照射不到的地方用环境光代替。1971 年 Henri Gouraud 在 IEEE Trans.Computer 上提出被称为 Gouraud 明暗处理的“漫反射模型+插值”思想,对多面体模型,用漫反射模型计算多边形顶点的光亮度,再用增量法插值计算多边形的其他内部点2。1975 年 Phong 在ACM 上发表论文提出了著名的简单光照模型“Phong 模型”,Phone 模型虽然只是一个经验模型,但其真实度已经达到了较好的显示效果。这些都是真实感图形学最早的开创性工作。从 1973 年开始,相继出现了英国剑桥大学 CAD 小组的 Build 系统、美国罗彻斯特大学的PADL-1 系统等实体造型系统,这些都为 CAD 领域的发展做出了重要贡献。
70 年代图形软件标准化程度提高,1974 年,ACM SIGGRAPH“与机器无关的图形技术”的工作会议的召开,提出了图形软件标准化问题,ACM 成立图形标准化委员会,制定“核心图形系统”(core graphics system),ISO 发布 CGI、CGM、GKS、PHIGS 一系列的图形标准,其中 19777 年的 CKS 是 ISO 批准的第一个图形软件标准软件,是一个二维图形软件标准,1986 年,ISO 公布了程序员级的分层结构交互图形系统 PHIGS,这是一些非官方的图形软件,广泛应用于工业界并成为事实上的标准,PHIGS 是对 CKS 的扩充,增加的功能有对象建模、彩色设定、表面绘制和图形管理等。伺候 PHIGS 的扩充成为 PHIGS+;1988年的 CKS3D,是 ISO 批准的第二个图形软件标准软件,是一个三维图形软件标准。
20 世纪 80 年代以后:出现了带有光栅扫描显示器的微型计算机和图形工作站,极大的推动了计算机图形学的发展,如 Machintosh、IBM 公司的 PC 及其兼容机,Apollp、Sun 工作站等。随着奔腾 III 和奔腾 IV 系列 CPU 的出现,计算机图形软件功能一开始部分地由硬件实现。高性能显卡和液晶显示屏的使用,高传输率大容量硬盘的出现,特别是 Internet 的普及使得微型计算机和图形工作站在运算速度、图形显示细节上的差距越来越小,这些都为图形学的飞速发展奠定了物质基础。1980 年 Turner Whitted 提出了光透视模型,并第一次给出光线跟踪算法的范例4,实现了 Whitted 模型;1984 年美国 Cornell 大学和日本广岛大学的学者分别将热辐射工程中的辐射度算法引入到计算机图形学中,用辐射度的方法成功地模拟了理想漫反射表面间的多重漫反射效果。以上二者的提出,标志着真实感图形的显示算法已逐渐成熟。80 年代中期以后,超大规模集成电路的发展,计算机运算能力的提高,图形处理速度的加快,促使了图形学各个研究方向都得到了充分发展和广泛的应用。
20 世纪 90 年代以后:微机和软件系统的普及使得图形学的应用领域日益广泛,计算机图形学朝着标准化、集成化和智能化的方向发展,多媒体、人工智能、计算机可视化、虚拟现实等分支蓬勃发展,三维造型也获得了长足发展。ISO 公布的图形标准越来越精细,更加成熟。这是存在着一些事实上的标准,如 SGI 公司开发的 OpenGL 开放式三维图形标准,微软公司为 PC 游戏开发的应用程序接口标准 DirectX 等,Adobe 公司 Postscript 等,均朝着开放式、高效率的方向发展。
时间 | 计算机图形学发展的重要成就 |
---|---|
1944 年 | MIT 开展的“Whirlwind”项目首次系统化研究实时计算机图形显示 |
1960 年 | “计算机图形学”术语出现 |
1962 年 | 第一个多玩家计算机游戏 Spacewar |
1963 年 | Ivan Sutherland 发明 Sketchpad |
1965 年 | 首次计算机艺术展在斯图加特和纽约举办 |
1967 年 | ● Coons Patch 复杂曲面建模算法提出 |
● NASA 设计了第一个全彩色实时飞行模拟器 | |
1968 年 | 第一家计算机图形技术公司 Evans & Sutherland 成立 |
1968 年 | 首届计算机图形学会议(SIGGRAPH)召开 |
1970 年 | 随机访问存储器和光栅化显示器诞生 |
1973 年 | 多维可视化,Phong 渲染算法提出 |
1974 年 | Z-Buffer 算法,纹理映射算法提出 |
1980 年 | ● 首届欧洲图形学(Eurographics)会议召开 |
● 光线追踪算法提出 | |
● 迪斯尼制作第一部大量使用计算机合成图像(超过 20 分钟)的电影《TRON 》 | |
1982 年 | ● Silicon Graphics 公司设计硬件图形引擎(Geometry Engine) |
● 工业光魔(Industrial Light and Magic)公司制作第一部计算机动画电影《Startrek 》 | |
● 3D 计算机辅助设计软件公司 Autodesk 成立 | |
1984 年 | ● 第一家专攻计算机动画电影的公司 Pixar 成立 |
● Apple 公司发布第一台拥有图形界面的个人计算机 | |
1985 年 | ● 2D 图形标准 GKS(graphical kernel system)发布 |
● ATI 公司(后来被 AMD 公司收购)成立 | |
1987 年 | ● 美国自然科学基金开始专门资助图形学研究 |
● Marching Cubes 可视化算法提出 | |
1988 年 | ● 2D 图形标准 PHIGS 发布 |
● 3D 图形标准 ISO GKS-3D 发布 | |
1989 年 | ● 第一部真实 3D 角色电影《Abyss》 |
● 3D 渲染软件 Renderman 公开发布 | |
1991 年 | 数据可视化工具 OpenDX 推出 |
1992 年 | Silicon Graphics 公司推出 OpenGL 标准、图形流水线标准化 |
1993 年 | NVIDIA 公司成立 |
1994 年 | Sony 公司的 Playstation 游戏机和任天堂的 N64 游戏机问世 |
1995 年 | ● Microsoft 公司定义 Direct3D 图形接口 |
● 3D 第一人称设计游戏 Quake 发布 | |
1996 年 | 3DFX Voodoo 图形加速器获得巨大成功 |
1997 年 | Titanic 获得奥斯卡特效奖,其中大量使用了人群仿真和流体力学仿真 |
2000 年 | Sony 公司的 Playstation 2 问世 |
2001 年 | Imagination 公司设计 PowerVR MBX GPU 内核,并在移动 GPU 市场取得成功 |
2002 年 | ● Microsoft Xbox 游戏机出现 |
● 奥斯卡首次颁发最佳动画形象奖并由 Shrek 获得 | |
2009 年 | 第一部大量使用面部表情捕捉动画技术的电影《Avatar》 |
2012 年 | Disney提出用于实时渲染的PBR方法 |
2018 年 | NVIDIA推出Turing架构,RT Core硬件支持光线追踪 |
三:计算机图形学技术范畴
3.1 总体框架
数学基础:主要包括一些基本的算法,例如向量与几何的变换,如几何建模时的三维空间变换、绘制时的三维到二维的投影变换和二维空间的窗口和视图变换等。
建模:三维和二维空间的各种几何模型,有解析式表达的简单形体,也有隐函数表达的复杂曲线等。建模的主要工作是几何计算。
渲染:或者叫做绘制,指的是模型的视觉实现过程,计算机图形学的光照、纹理等理论和算法都需要对模型进行处理,其中也要用到大量的几何计算。
交互技术:如今的交互式图形学已经可以提供图形通讯手段,成为图形交互的主要工具。
3.2 主要领域
经过这么多年的发展,计算机图形学其实包含了很多内容,网络上形形色色的分类也特别多,这里我们采用《fundamentals of computer graphics》第五版中的分类,主要分为三类:
模型(Modeling)
渲染(Rendering)
动画(Animation)
同时还有很多其他细碎一些的方向:用户交互、虚拟现实、可视化、图形处理、etc.
3.2.1 模型
没有模型,图形就无从谈起,建模是计算机图形学各项工作的基础和前提,建模技术的核心是根据研究对象的三维空间信息构造其立体模型,尤其是几何模型,并利用相关建模软件或编程语言生成该模型的图形显示,然后对其进行处理。目前,物体的三维几何模型就其复杂程度来说可以分为三类:线模型、面模型和体模型。对三维建模技术的研究基本上都是针对三维面元模型和体元模型来展开的。
下表对三维空间模型及构模方法进行一比较:
3.2.2 动画
- 什么是计算机动画?
计算机动画(Computer Animation),是借助计算机来制作动画的技术。计算机的普及和强大的功能革新了动画的制作和表现方式。由于计算机动画可以完成一些简单的中间帧,使得动画的制作得到了简化,这种只需要制作关键帧( key frame)的制作方式被称为 Pose to pose”。 - 计算机动画如何分类?
计算机动画也有非常多的形式,但大致可以分为二维动画和三维动画两种。
二维动画也称为2D动画, 借助计算机 2D位图 或者是矢量图形来创建修改或者编辑动画。制作上和传统动画比较类似,许多传统动画的制作技术被移植到计算机上。二维电影动画在视频效果上有非常巨大的改进,制作时间上却相对以前有所缩短。
三维动画也称为3D动画, 是 基于 3D计算机图形 的动画 表现 形式 。 有别于二维动画,三维动画利用 三维 数字模型来制作动画, 这个技术 给予动画者更大的创作空间。 精细的 模型和 高 质量的渲染使动画的各方面水平都有了新的提高,也使其被大量的用于电影之中。 - 计算机动画制作流程
计算机动画可以分为辅助动画和造型动画两种。计算机辅助动画属于二维动画,其重要用途是辅助动画师制作传统动画,造型动画属于三维动画 。制作流程主要分以下几步:
关键帧的产生:关键帧及背景画面可以用摄像机、扫描仪、数字化仪器进行数字化输入。
中间帧的生成:利用计算机对两幅关键帧进行插值计算,自动生成中间 帧 ,这是计算机辅助动画的主要优点之一。
分层制作合成:传统动画的一帧画面,是由多层透明胶片上的画面 叠加而成的,这是保证质量、提高效率的一种方法,但制作中需要精确对齐 ,而且受透光率的影响,所以透明胶片最多不超过 4张。在动画软件中,也同样使用了分层的方法,但对齐非常简单,层数从理论上没有限制,对层的各种控制如移动、旋转等也非常容易。
着色:动画着色是非常重要的一个环节。计算机动画辅助着色可以代替乏味、冗长 的手工着色过程 。 - 计算机 动画技术有哪些?
计算机动画制作技术不仅用在动画制作上,还用在电视、电影的制作上。这些技术包括卡通渲染动画( Cartoon Shading Animation)、动作捕捉 Motion capture)、色键 Chroma key)、非真实渲染( Non-photorealistic rendering)、骨骼动画 Skeletal animation)、目标变形动画Morph target animation)、模拟 Simulation,模拟风、雨、雷、电等)。另外亦有使用位图或矢量图形制成的小动画,互联网上主流的格式是位图 GIF。
3.2.3 渲染
计算机图形学的一项主要工作是将计算机中抽象的模型转换为人们直观可见、可以形象理解的图形。 它综合利用数学、物理学、计算机等知识将模型的形状、物理特性如材料的折射率、反射率、物体发光温度等 机械强度、材料密度等对运动模拟的影响等以及物体间的相对位置、遮挡关系等性质在计算机屏幕上模拟出来 是一个将“几何”演绎到画面上的再创造过程 ,这就是渲染,也叫绘制。
- 什么是渲染?
当需要把模型或者场景输出成图像文件、视频信号或者电影胶片时就需要用到渲染Render 。渲染 是指软件由模型生成图像的过程 。模型是用语言或者数据结构进行严格定义的三维物体或虚拟场景 ,它包括几何、视点、纹 理、照明等信息。图像是数字图像或者位图图像。 除去后期制作,渲染是计算机图形处理的最后一道工序 通过它得到模型与动画 的最终显示效果 。 实现 渲染依靠 多种软件,如 各种 CG软件自带渲染引擎、 RenderMan等。随着计算机图形学的不断深入发展,渲染的应用领域 越来越广泛 :计算机与视频游戏、模拟、电影或者电视特效以及可视化设计 。作为产品来看,现在已经有各种不同的渲染工具产品,有些集成到更大的建模或者动画工具 中,有些是独立产品,有些是开放源代码的产品。从内部来看, 渲染工具都经过了仔细的设计 ,其理论基础是光学、视觉感知、数学以及软件开发等各种科学理论。 - 渲染技术有哪些?
研究人员已经研究出了许多渲染算法,用于 生成最终图像。在应用中 对场景中的每束光线进行跟踪 的耗时较高; 如果没有 对 采样进行很好的约束,即使是 只进行 一部分光线的跟踪也需要非常大量的时间。 基本的渲染技术大致可以分为四类。 大多数高级 的方法 都是使用多种技术的组合,以在合理的开销范围内,实现足够好的结果。
扫描线渲染与栅格化扫描线渲染是一行一行 进行的一项技术和算法集。栅格化又叫光栅化是将几何数据经过一系列变换后最终转换为像素,从而 呈现在显示设备上的过程 。
光线投射:从不同视角观察场景,并根据几何与反射强度的基本光学原理计算观察到的图像,这就是光线投射。
辐射着色:辐射着色是模拟反射光线如何反射到它表面以及如何照亮周围环境的方法。这种方法可以生成较为真实的浓淡效果,并且更加易于捕捉室内场景的环境光。
光线跟踪类似于光线投射,但是光线跟踪 使用了更加先进的光学模拟方法,并且通常使用蒙特 ·卡罗方法以 实现更加真实的结果,不过这样做的代价通常是速度的大幅度降低。
3.3.4 图形交互
- 二维图形交互技术有哪些?
几何约束: 几何约束可以用于对图形的方向、对齐方式等进行规定和标准。
引力场: 引力场可以看作是一种定位约束,通过在特定点周围假想有一个区域,当光标中心落在这个区域内时,会自动地被直线上最近的一个点代替。
拖动: 要把一个对象移动到一个新的位置时,如果不是简单地用光标指定新位置的一个点,而是用光标移动时拖动着被移动的对象,会使用户感到更直观,并且可以使对象放置的位置更恰当。
橡皮筋技术: 被拖动对象的形状和位置随着光标位置的不同而变化,是一个不断地进行画图擦除画图的过程。
操作柄技术: 可以用来对图形图像进行缩放、旋转、错切等几何变换。先选择要处理的图形对象,该图形对象的周围会出现操作柄,移动或者旋转操作柄就可以实现相应的变换。 - 三维图形交互技术相关概念
三维交互技术面临问题:
①三维交互技术采用六自由度输入设备,即沿三维空间X、 Y、 X轴平移和绕 X、 Y、 Z轴旋转,而现在流行的用于桌面型图形界面的交互设备,如鼠标、轨迹球、触摸屏等只有两个自由度(沿平面 X、 Y轴平移)。
②窗口、菜单和传统的二维光标在三维交互环境中会破坏空间感,用户难以区分屏幕上光标选择到对象的深度值和其他显示对象的深度值,使交互过程非常不自然。
三维图形交互技术有哪些:
①直接操作:直接操作要求三维光标必须有深度感,即必须考虑光标与观察者的距离,离观察者近的时候比较大,离观察者远的时候比较小。
②三维控件 1992年美国布朗大学计算机系提出三维 控件设计原则 。
a.三维控件 的几何形状应能表示其用途 。 例如,一个用来扭曲物体的 控件 最好本身就是一个扭曲的物体 。
b.适当选择 控件 控制的自由度 。由于三维空间有六个自由度,有时会使三维交互操作变得过于复杂,因此用户 在 使用某种 控件 时,可以固定或者自动计算某些自由度的值。
c.根据三维用户界面的用途确定 控件 的功能。例如,用于艺术和娱乐的三维用户界面的控件 ,只要能够完成使画面看起来像的操作即可,但是用于工业设计和制造的用户界面,则必须保证交互操作参数的精确性。
③视图输入:用二维输入设备在一定程度上实现三维的输入。如果输入一个三维点,只要在两个视图上把点的对应位置指定后 便唯一确定了三维空间中的一个点 ;把直线端上两端点在三视图上输入后便可决定三维空间的一条直线;把一个面上的各顶点在三视图上输入端点在三视图上输入后便可决定三维空间的一条直线;把一个面上的各顶点在三视图上输入后,也唯一确定了三维空间中的一个面;如果把一个多面体上的各面均用上述方法输入,也后,也唯一确定了三维空间中的一个面;如果把一个多面体上的各面均用上述方法输入,也就在三维空间中输入了一个多面体。就在三维空间中输入了一个多面体。
3.3 应用方向
从计算机图形学开始发展到现在,其实我们生活中处处都可以看到他的应用,从游戏到影视,从远程医疗到航天模拟等等,在发展史中的重要成就也可见一斑,按大体应用行业我们也可以简单分一下:
游戏
卡通动画
视觉特效(电影/短视频)
CAD/CAM
仿真模拟
医学影像
信息可视化
etc.
参考:
https://broadgeek.com/2021/12/09/a42f/
http://staff.ustc.edu.cn/~lgliu/Resources/CG/download/201808_Aminer-CGSurvey.pdf