3.2.3 计算机图形学
计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简而言之,计算机图形学的主要研究内容就是如何在计算机中表示图形以及如何利用计算机进行图形的计算、处理和显示的相关原理与算法。虚拟现实被称为“下一代互联网”以及“下一代移动计算平台”,而计算机图形学是实现虚拟现实最重要的技术保证。
有别于数据可视化,计算机图形学主要处理三维物体的建模、绘制、渲染等。当然,数据可视化和图形学也存在很多联系,有些子领域交叉比较多,如科学可视化和图形学。目前该科学广泛应用于计算机辅助设计与制造(CAD/CAM)、科学计算可视化、计算机游戏和虚拟现实等领域。计算机图形学主要包括建模、渲染、动画和人机交互技术,以下将介绍这四个方面。
1.建模
要在计算机中表示一个三维物体,首先要有它的几何模型表达。建模是一种通过计算机表示、控制、分析和输出几何实体的技术,即基于几何信息和拓扑信息对形体描述的技术,如图3.16所示。在虚拟世界中,几何建模可以反映出一个虚拟对象的静态特性。几何建模的范围很广,这里介绍几何建模中的几个概念,其中包括三角形集合、网格重建、平滑和细分。
●三角形集合:用三角形的集合作为对几何体的表达。
●网格重建:生成网格去处理由三维扫描仪获得的离散顶点的三维坐标。
●平滑:通过增加顶点,使得三角网格看起来更平滑。
●细分:渲染出平滑表面,另外可以使网格显示出一个层次的结构。
图3.16 几何建模概念图
图片来源:Cornell CIS: Program of Computer Graphics
2.渲染
渲染是绘制三维几何模型的技术,利用计算机辅助提高建模的真实感,目前的渲染技术已经能够将各种物体,包括皮肤、树木、花草、水、烟雾、毛发等渲染得非常逼真,主要的技术有局部光照模型(local illumination model)、光线跟踪(ray tracing)、辐射度(radiometric)、全局光照模型(global illumination model)、Photo Mapping、BTF、BRDF以及基于GPU的渲染等。
建模和渲染是提升元宇宙中沉浸感与真实感的两个技术核心,目前基于GPU的图像成像就是结合几何建模和渲染,首先需要使用几何建模技术对顶点数据进行几何处理,然后使用光栅图形学技术对几何处理后的数据进行光栅化,最后导出图像。如图3.17所示,建模与渲染是具有连贯性的,这也是使图像成像的基本步骤。
图3.17 渲染效果对比图
图片来源:Z COOL
计算机图形学中的图像渲染工作流程如图3.18所示,详细介绍如下。
(1)GPU应用阶段
●准备场景数据(模型、光照等)。
●清除视野外数据。
●设置模型渲染信息(纹理、材质等)。
●输出渲染图元(点、线、三角面等数据)。
(2)GPU渲染阶段
●几何处理:操作渲染图元,变换坐标(如变换顶点坐标为屏幕坐标),顶点信息配置(如每个顶点的深度值、着色),然后输出屏幕空间的二维顶点的坐标、深度值、着色等数据。
●光栅化:将顶点数据转换为片元。片元中的每一个元素对应于帧缓冲区中的一个像素。其本质就是将几何图元变为二维图像。
图3.18 计算机图形学中的图像渲染工作流程图(橙色底纹表示可编程,无底纹表示不可编程但可配置,绿色底纹表示不可编程且不可配置。顶点着色器必须由开发者编译,其余着色器则可选)
3.动画
动画是使用连续播放静止图像的方法产生物体运动的效果的技术,主要包括人体动画、关节动画、物理仿真、运动动画、脚本动画等还可以进行环境渲染。
在计算机图形学里,动画分为两类:实时动画和逐帧动画。实时动画通过修改一帧画面上的像素点来实现动画效果,但是前提条件是实时动画的生成频率与设备的帧刷新频率要完成匹配。逐帧动画类似于电影放映机,每个画面和之前的画面都会有重叠的部分,每个画面(帧)都是一个完整的图片,通过快速播放画面,实现连贯动作效果。
从维度上看,如图3.19所示,动画又可分为二维动画和三维动画。传统的二维动画需要画师一张一张画出来,再由摄像机逐张拍摄从而连贯起来形成画面。在计算机出现之后,二维动画的制作时间得以缩短,过程得以简化。三维动画在数字化时代可以全方位展现物体的特性,相比二维动画,它可以重复利用素材,减少成本,利用计算机技术模拟真实物体的运动,将其清晰地展示在人们眼前。常用的动画制作工具有3DMAX、AutoCAD、MAYA、OpenToonz等,图3.20给出了一些演示案例。在元宇宙中,三维动画极大地满足了消费者对于虚拟世界的想象。
图3.19 哆啦A梦2D与3D的对比
图片来源:unwire.hk
图3.20 制作动画的常用软件演示案例
4.人机交互
人机交互(Human-Computer Interaction,HCI)是图形学中很关键的一门技术,在数据可视化领域也常用到。它主要是指人与计算机之间通过有效的交互方式传递任务和信息的技术。目前主流的交互界面是以WIMP(窗口、图符、菜单、鼠标)为基础的图形用户界面(GUI),而近年来语言、三维交互技术、姿势输入、头部跟踪、视觉跟踪、立体显示、感觉反馈及自然语言界面等新的交互想法和领域也在不断产生。
比如微软在2010年推出的XBOX360体感外设Kinect,它不需要使用任何控制器,仅依靠相机捕捉三维空间中玩家的运动,同时能导入即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。Kinect不仅在游戏领域发挥作用,在医疗康复领域也能辅助进行肢体康复训练,在航天领域,美国航空航天局使用它协助空间站人员操纵机器臂,在科研领域,它也大大加快了硬件应用的发展速度。Kinect的演示效果如图3.21所示。
图3.21 Kinect演示效果图
图片来源:gamerhub.tv
还有像Leap Motion这样的手势交互设备、只听令于身体的一部分(如手臂、腿)的MYO腕带等,它们能够精确地识别手的各个关节的活动,灵巧地抓取虚拟场景中的物体。与其他体感设备不同的是,得益于轻巧且体积小的特点,这些设备对手的识别度很高。