曲面细分技术在数字造型艺术领域的应用
2014-04-29杨飞
杨飞
【摘 要】曲面细分技术在数字造型艺术领域主要体现在电影工业或动画设计的预渲染系统和虚拟现实及3D游戏的实时系统。随着DirectX和OpenGL两大3D API的诞生和发展,今天的图形硬件已经能够提供惊人的计算能力,实时系统对于光影计算、纹理贴图的处理都已经达到了非常精细的地步,各种新兴的光照算法和贴图技术层出不穷,对于数字造型表面细节及光影效果的刻画也已经达到一个新高度。运用曲面细分技术的基本原理及相关算法,根据数字造型艺术领域的特性,选用适当的引擎技术和开发思路,重点研究曲面细分的几何失真与抗失真方面的问题和基于DirectX11的Tessellation曲面细分的工程实验应用。通过本论文的研究实践,解决了几何失真与抗失真方面的问题,让数字造型艺术作品有了新的技术表现形式,同时为曲面细分技术拓展新的应用领域提供了可能性。最后,本论文得到了曲面细分技术在虚幻引擎UE中的实际工程应用的可行性结论,解决了曲面细分技术在数字造型艺术领域的实际终端应用。
【关键词】曲面细分;数字造型艺术;虚幻引擎UE;几何失真
一、理论意义及实用价值
数字艺术(也称为计算机图形图像艺术)经过了三十多年的发展,从最早期的字符显示到简单的二维图形显示再到后来的三维图形图像的视觉呈现,CG艺术所依托的视觉计算也同样经历了一个漫长的过程,对真实世界的虚拟化视觉呈现是其不变的使命和追寻的目标,数字化的艺术呈现已然成为一种被广泛使用和传播的艺术手法。还有一个重要的研究方向一直未有大的突破,成为阻碍数字艺术发展的一个瓶颈,这就是作为三维图像最基础最重要的一部分——三维模型本身,以往受限于硬件,而无法实时得到真实可信的模型细节,而今天通过GPU的曲面细分模块能够即时得到创作者想要的结果,从而使创作者在数字造型艺术领域不再受限于硬件,这是具有里程碑意义的突破,对于整个数字艺术的发展都会产生极为深远的影响,意义重大。
曲面细分技术本身历史久远,但以往采用CPU实现的方式效率过于低下,导致无法应用于对实时性要求较高的游戏/VR(虚拟现实)领域,基于GPU的曲面细分技术很好的解决了这一问题,但是由于工作流程与之前的实现方式有较大差异,因此现阶段对于如何在实时系统实现该技术还没有一个完全标准化的流程,目前一些新版本的3D实时引擎都已集成了该技术,但过于繁琐的操作以及代码的编写,使得很多艺术创作者望而却步,对于艺术创作者来说迫切需要一个标准化的流程以及选用合适的实时3D引擎来进行创作。
二、国内外研究现状
国际方面:基于GPU实现的曲面细分技术依托于DirectX。这是由微软公司开发的一个API(应用程序接口),其开发的初衷旨在为了解决2D/3D图形的快速绘制问题,因此DirectX中有两个重要的组件DirectDraw(负责2D图形渲染)和Direct3D(负责3D图形渲染),GPU实现的曲面细分技术转变为一种切实可行的技术实现并开始为世人所知是在DirectX 8.0推出之际,这种技术最初由ATI公司提出,被微软看重后集成于DirectX 8.0当中,并被命名为N-Patch(ATI称之为TruForm),当N-Patch技术并没有得以推广,原因便在于其本身存在一个重大缺陷——几何失真。
国内方面:国内对于曲面细分技术的研究起步较晚,直至2000年才有相关文献出版,而在近几年,曲面细分的相关研究逐渐多了起来,研究领域主要集中在基础算法、工程VR(虚拟现实)等方面。
综上所述,总体来讲国内在曲面细分技术领域的研究还是比较少,主要集中在CAD/CAM等工程研究領域。而基于GPU实现的曲面细分技术在基础算法方面与之前的CPU实现方式没有太大差异,在轮廓失真、细节控制和反走样等方面还是做出了较大改进,但由于这种实现方式才出现不久,加上与之相配套的硬件、API等也都是新鲜事物,因此基于GPU实现的曲面细分技术在国内的相关研究和应用还不多见,所以论文研究应用方向均有一定的经济效应和社会效益。
(一) 曲面镶嵌技术相关理论
所谓曲面细分是指以一定的规则对多边形网格进行逐层精化,形成一个收敛的网格序列,取序列极限的曲面造型方式,称这个序列的极限为细分曲面[1]。通常,在实际应用中我们常以某个层次的细分网格来代替细分曲面,细分模式就是对网格进行精细化的规则,细分模式也称为细分方法。它包括拓扑规则和几何规则2个部分,细分方法作为曲线曲面的离散造型方法,其特点是:处理过程简单,对数据的计算、生成和显示的速度快,因而在几何造型中有广泛的应用。
(二)基于DircetX 11的Tessellation技术简介
上文中简单叙述了曲面细分技术理论,新一代基于DircetX 11的Tessellation技术虽然在基础概念和算法方面并无大的突破,但其在GPU硬件构架上以及API(DircetX 11)上做出改进都是巨大的,新一代符合DirectX 11标准的GPU都集成了被称之为PolyMorph Engine(多形体引擎)的专用硬件单元来负责处理和曲面细分相关的工作,例如:顶点拾取(Vertex Fetch)、细分曲面(Tessellation)、视口转换(Viewport Transform)、属性设定(Attribute Setup)、流输出(Stream Output)等五个方面的处理工作,它与DircetX 11中的Tessellator(镶嵌器)功能遥相呼应,多形体引擎融合了之前的固定功能硬件单元,使之成为一个有机整体。
(三)曲面细分的技术实现
在上面的叙述中我们已经提到了DirectX 11曲面细分的专用模块称之为Tessellator单元,Tessellator单元本身是不具备可编程性的,因此DirectX11向Tessellator单元输入或者从其中输出的过程是通过两个之前提到过的管线阶段完成的:Hull Shader (轮廓着色器)和Domain Shader (域着色器)。
Domain Shader将会接收由Tessellator产生出的点,并依照终点控制(control points)置换贴图将这些点形成一个合适的几何图形。Domain Shader通过运行开发者设计的Domain Shader (域着色器)程序来执行这些操作,这些Domain Shader程序控制这些新产生的点如何转移或者如何按照终点控制以及纹理渲染取代这些数据。处理完毕这些点之后,Domain Shader将会输出一个个顶点。我们就会看到大量Domain Shader输出并直接进行光栅化,以便几何图形可以分散到屏幕上进行像素处理,具体工作流程见图。(作者单位:重庆工程学院传媒艺术学院)
参考文献:
[1]廖文和,刘浩.细分曲面的研究现状及应用展望[C]//第三届中国几何设计与计算大会论文集,北京:电子工业出版社,2007:115-125.
[2]王建卫,张泽银,黄达人.四边形网格的削角细分[J].浙江大学学报:理学版,2004,31(2):151-155.
[3]谢伟红,叶亮荣.曲面细分方法及其应用[J].电脑知识与技术,2007,26(17):1425-1427.
[4]朱巍;细分曲面理论及其应用问题的研究[D];中国科学技术大学;2011年