王继州,夏辉丽
自然现象在计算机中的模拟,一直是计算机图形学界的学者们所极大关注的兴趣焦点所在。在现实的自然世界中,燃烧必须依托于一定的物质或过程才会发生,比如可燃气体的燃烧、可燃液体的燃烧、可燃固体的燃烧、化学反应、爆炸等。对于固体如木材、纸张等的燃烧过程,当火焰发生和进行以及在熄灭以后,燃物的几何结构和外观都有巨大的差异。在这些过程中,固体燃烧会伴随一系列的物理化学变化,如燃料分解、燃气释放、物质碳化变黑、体积变化、破碎分离、形态变化、物质转换等。
自然界中固体的燃烧现象极其普遍,燃烧的种类也很丰富,燃烧的过程大不相同。基本上都包括了化学反应的过程、物体形态的分解和变化、物质性质的改变、物质颜色的变化、火焰的生成和变化,所伴随的燃烧烟雾的生成与变化等很多物理化学过程。蚊香和香烟的燃烧过程比较接近,都会有一定长度的灰烬在燃点的附近,到了一定的程度由于受到重力作用而散落下来,散落的过程类似于沙子的坠落。其中,灰烬的体积是守恒的,但会牵涉到复杂的动力学运算,相关的模拟方法可以参看文献[1-2]。还有一些物体燃烧的过程,如塑料物体,在燃烧的过程中,塑料高温融化并发生坠落;坠落时处于粘稠的液体也在燃烧;可以类似的用粘稠液体的坠落算法加上燃烧效果的模拟来实现。
本文着眼于木材、纸张、火柴等物体(以下简称的固体专指此类物体)的燃烧过程,从以下几个方面加以考虑:燃烧时的火焰和烟雾的问题、燃烧时物体形态的变化(主要是几何形态上的变化过程的分析和解决的途径)、物体性质的变化、颜色、材质变化等、物体的破碎、卷曲、燃烧灰烬的分离、坠落等。
由固体真实的燃烧情况来看,需要重点处理几个过程和几类物体:火焰的燃烧和蔓延、烟雾的生成变化、物态变化、形态变化;燃烧灰烬的处理和表现等。
用计算机模拟物体燃烧的时候,要考虑火焰在燃烧物体上的分布、变化、蔓延、变化等很多情况和诸多因素。近年来的一些文献对此作了有益的尝试,取得了一定的模拟效果。Tomokazu Ishikawa等人2005年在文献[3]中提出火焰在燃烧时蔓延的情景,其核心思想是利用4个方程来描述和控制燃烧的发生、传播和熄灭的过程。包括:燃料的热传导方程、着火的判别条件、燃料浓度减少的方程和化学反应的产热方程等。对于火焰燃烧传播的渲染:场景中燃烧点的发光强度由其对应的温度分布值来计算;点光源的颜色由普朗克公式决定。在观察和渲染燃烧发光和吸收的时候,还考虑到了火焰的大小、形状和温度等因素,该算法通过控制燃料的类型和燃料的分布来实现对于燃烧时“火苗走向”的控制。其缺点主要是燃烧细节的缺失,模拟的结果只是整体上的一个“形”,没有考虑燃烧时丰富的自然形态和烟雾等现象。
洪义等在2010年在文献[4]中提出了采用Level-Set方法为主要核心的火焰燃烧及蔓延的有效算法,取得了较好的模拟效果。基本思路是:以Level-Set曲面变形为基础,将目标形态、路径约束和燃烧传播相结合的火焰蓝芯曲面演化模型,用以模拟沿路径的火焰蔓延、移动燃烧物等现象。在火焰细节方面引入修正的MacCormack高阶对流求解器,采用烟密度演化曲线模拟燃烧过程中的烟雾生成,进一步提高火焰真实感。算法把火焰内部物理特性与外在视觉效果结合起来进行建模。具体来说就是:火焰内部物理特性可以理解为,燃烧不仅是一种化学现象、气体动力学现象,而且是可以根据具体的模拟需要进行适当简化的过程。对于火焰的化学属性、如影视和动漫制作,一般适合采用简单曲线来逼近燃烧过程中火焰温度的变化过程,从而避开求解复杂的化学反应方程式以简化计算。火焰外在视觉效果主要是蓝芯曲面的运动和热气体产物的膨胀,火焰蓝芯曲面是燃料气体和产物的交界面,运用Level—Set隐式曲面跟踪方法,能较好地处理蓝芯的分离、融合及自交等问题。
2011年洪义等人在文献[5]中提出了火焰模拟的框架,分为前处理、火焰模拟和后处理三个阶段,较好地模拟了基本火焰现象和在复杂曲线、曲面和蔓延规则约束下的火焰燃烧的场景。采用一个通用的火焰模拟框架,可以自动化地生成真实可控的火焰动画,该框架的使用,在不改变火焰宏观运动的基础上,丰富火焰细节、提高火焰真实感。前处理阶段将用户的各类显式输入信息转化为隐式约束条件,用以控制火焰的宏观运动。火焰模拟阶段结合隐式约束下的宏观运动与火焰模拟方法生成的微观细节,得到火焰在粗网格下的运动。后处理阶段利用火焰模拟阶段生成的各种数据,保障火焰模拟时的高精度细节的处理和再现。
烟雾模拟的方法主要有几大类:以粒子系统思想为主的烟雾模拟、进行数学建模和分析、运用流体力学等物理规律的烟雾模拟、基于视觉效果的纹理技术的烟雾模拟等。具体的方法和模型主要包括:粒子系统方法的烟雾模拟、传统的数学物理模型、基于纹理技术的模拟(如文献[6]等)、无量纲处理的烟雾模型、基于形状控制的烟雾模拟、Lattice-Boltzmann方法的烟雾模拟、基于GPU(图形处理器)加速的烟雾模拟、外力作用下的烟雾模拟、还有基于“细丝”或“薄片”的烟雾模拟方法、自适应的动态网格划分的方法求解和简化 Navier-Stokes流体方程等;关于烟雾的模拟,本文作者在文献[7、8]中有详细的论述和分析比较,不作为本文的研究重点,此处不再列举。比较分析?
物体在燃烧过程中,由于剧烈、快速的化学变化使其形态发生了本质的改变:体积的变化、颜色和材质的变化、物体结构的内在变化、温度分布的不均匀变化、质量的变化等等。固体在燃烧过程中,自身物质会发生分解或整个物体会解体为几个部分,但这个现象并不同于单纯的刚体破碎。因为刚体破碎以后,不考虑其各部分的燃烧效应,体积不会再发生变化。而燃烧的物体分解成多个子物体以后,各部分都会成为独立的燃烧主体,物质和形态会发生相应的变化,因而不能用刚体破碎的相关模型来实现。同样的,对于纸张的燃烧而言也不同于单纯的曲面的弯曲的问题,如文献[8]等。由此可以看到,物体燃烧的模拟其实是极其复杂的过程,牵涉到很多的技术前沿、需要综合考虑的处理手段。
Zeki Melek从2003年到2007年连续发表系列文章,对固体燃烧进行了深入的研究。他在2007年的博士论文[9]中,对其模拟方法进行了详细的阐述和总结,以下进行简要的分析。
其算法核心主要包括几个部分:火焰燃烧的处理、固体分解时边界的变化、固体燃烧的体态分解、弯曲和褶皱的处理等。算法在模拟燃烧火焰的时候运用粗网格的流体动力学方程,在一个统一的系统中求解和模拟燃料的运动。在燃烧区,燃烧产生的热量影响空气的运动,从而影响火焰的形态和运动,同时,这些热量的传输不受火苗传播蔓延的影响。在燃烧过程中,通过控制网格中的氧气、废气和燃料等来控制燃烧的过程和火焰的熄灭。热量的传播分为3个阶段:热量传播到空气中(用半拉格朗日平流法的隐式积分来计算)、热量传播到空气和固体之间、固体内部的热传导。
边界的移动定义为固体燃料消耗基础上的燃料消耗的速度梯度方向。固体的距离场隐式表示法能处理复杂的边界和拓扑的变化,也能将交互的可视化进行多边形化。固体距离场运用Level-Set方法来追踪移动的边界,采用半拉格朗日时间步的方案很有效。通过对Level-Set方法进行简化,从而跳过更新初始化的过程而无需任何人为的效果。
燃烧化学反应中的小变化就会引起给定物体形态上的较大的变形,FFD(自由形式的变形)是一个较好的处理方法。算法用一个替代物(作为弹簧模型)的边缘来映射物体的相应变化,该替代物充当了一个空间控制结构,从而对其所代替的物体发生作用,如图1所示:
图1 Zeki Melek算法中物体燃烧变形的FFD过程
另外,物体一个属性的变化也会引起其他属性的变化,包括几何和拓扑方面的变化。算法定义了一个多属性模型,包括物体的各种属性(物体拓扑结构的变化、燃烧灰烬、热量的传播和热燃料的消耗等)及其相互作用。定义性能操纵函数(PMFS),把作用在物体的量分为两组(内部和外部),外部作用量如碰撞、风力、磁场和物体间的相互作用等;内部的作用量如物体内部的热量传播、力的传播、由于化学反应引起的物体成分的变化等。
物体的分解过程包括物体属性及其表示(主要处理3个方面:物体边界和体积的变化、物体内部热量的传播和物体的热分解过程)、模拟的具体过程。模拟的具体过程主要有7个方面:外部热量的交换、内部人类的交换、热分解的引发、固体释放燃料引发边界属性表示的变化与更新、产生温度多边形的表示、物体的碰撞、引发物体拓扑结构的变化、分裂等。其中最后一个方面主要功能是检测到燃烧中所形成的碎块,从隐式表示中产生的多边形用于检测这种分离物。与快速的多边形-汤算法相比,这里需要一个完整的固体目标表示(包括拓扑关系),如果检测到固体有碎片被分离出来,就相应地为各个碎片部分产生对应的体积和距离场,从而实现2个或多个分离的碎片物体能够单独进行再处理。
对于燃烧物体的形变和燃烧破洞,采用 FFD(类似于3D Max中的FFD物体变形功能)来实现。如图1所示,把物体将要发生的形态变化参数先运用到该替代物上,在模拟结果的基础上修改替代物,由修改后的替代物生成物体的形变。为了保证物体形态变化的有效性,要求替代物具有良好的形变结构,而且操作简单、变形的相似程度较高。对于火柴的模拟,应用简单的边界盒,沿着弯曲轴分成若干段(1*1*N,称为一维网格包裹)。对于纸张的模拟,采用两个轴向上的二维网格包裹(N*M*1),具体过程可以参看文献[9]。
在2009年的Yi Hong等人在文献[10]中提出了基于几何约束控制的火焰燃烧蔓延的模拟算法,能够实现燃烧在静态和动态物体上的传播:如燃烧的花朵和稻草人、破碎的燃烧球、燃烧的奔马、燃烧变形的绳索等,可以较好地处理和模拟燃烧在三维运动物体上生成和蔓延的过程。算法解决了燃烧蔓延过程中的3个关键问题:用通用的几何约束方法来描述和捕捉火焰燃烧的蔓延、将几何约束和火焰的蔓延转化为隐式控制条件、改进在隐式控制条件下的基于物理的火焰生成模型。
算法实现火焰燃烧蔓延的过程如下:在预处理阶段,将用户所指定的火焰的几何约束(如曲线路径、由最近点方程所描述的运动网格模型等)转化为统一化的表示。在完成初始化和设定了时间步长以后,在设定的燃烧蔓延的规则下,由其所产生的静态的或动态的几何约束来捕捉对应的火焰投射,从而自动地生成CBC(虚拟的控制蓝芯的技术)。CBC的形变信息由L-Speed方程来处理,由此实现火焰在燃烧物体上的移动;在此过程中,基于物理的模型负责表现火焰燃烧的细节部分。更新完CBC的形变信息后,气体燃料的移动速度、火焰温度的变化等相关信息会进入到下一个时间步长进行后续处理。火焰燃烧的温度信息用于最终的渲染,生成物体的颜色和亮度。算法的具体实现只要用到4个核心处理算法:火焰自身的模拟、路径或曲面的统一化处理、CBC的生成算法和火焰最终的生成算法。该算法没有模拟燃烧过程中物态的变化以及物体燃烧时的物质的分解及变化过程,比较适合于模拟影视、广告特技中动态物体的燃烧场景。
在模拟静态物体燃烧方面,有一些较为典型的算法,如朱鉴等人2011年在文献[11]中提出一种新的燃烧模型,用以模拟固体燃烧过程中产生的火焰及其伴随的物质分解过程,并采用一系列的加速技术取得了实时模拟效果。模型包含一套混合的网格系统:一个是覆盖整个模拟区域的全局网格,用于存储温度场、模拟动态的火焰;一个局部网格存储燃料、氧化剂、符号距离等信息模拟物质的燃烧分解;一个动态的移动网格用以求解流体运动的控制方程,实现火焰传播的跟踪。热量在空气和物质内部的传导过程用一个统一的公式表达出来,能够很好地将火焰与燃烧的固体耦合在一起。燃面的推进和更新采用基于 Level-Set的方法,可视化燃面采用的是新的纹理映射算法,从而模拟出物质的分解过程。
2012年Shiguang Liu等人在文献[12]中,实现了火焰在静物上的燃烧和蔓延。静物在燃烧的过程中,物体体积会减小、固有的几何拓扑结构会发生相应的变化。其具体做法是,在燃烧理论的基础上建立一个温度场的动力交互模型(TFMI)来模拟燃烧的火焰和物体的相互作用。在该模型中,物体的分解用改进的Level-Set方法和每个时间步长所更新的温度场所导致的火焰蔓延进行模拟;火焰采用稳流方法来计算和模拟并融合到整个燃烧的场景中。利用温度场的信息,将物体的顶点划分为外部(包括边界)顶点和内部顶点(即该点不在物体的表面,而是在物体内部)。由于物体到达自热解温度时会分解、释放热量而影响温度场,同时物质转化为热气产物也为燃烧增加燃料了来源。算法的关键是判断动态的界面,进而将物体上的燃点划分为3类:燃点、未燃点和已燃点。该模型可以用相对较为简单的几何模型来控制物体在燃烧过程中的形变和火焰的推进蔓延效果;局限性在于它不能很好的模拟动态的燃烧物体,物体的分解效果并不是很明显和很自然。
Dhanyu在2011[13]和2012年[14]提出了新的模拟方法,该模型主要实现的是在燃烧的固体上“挖掉”火焰燃烧的部分,同时还要处理好物体表面纹理的相应变化,并且能够在GPU上加以实现(通过通用的自适应网格重构—GAMeR技术,在CUDA硬件上实现),不涉及物体整体的燃烧变化。该算法能够较好地模拟燃烧在物体的局部所发生的完全燃烧的情况,即不留下燃烧的痕迹和灰烬,可以有效地挖除燃烧物质,并使物体的体积发生较快的变化,算法比较适合于对模拟精度要求不高的场景环境。
以上固体燃烧的模拟方法,大多是针对木棒或木材、火柴燃烧。一些文献对于纸张等比较薄的物体的燃烧进行了相关的研究,如Frank Losasso于2006年[15]提出的算法实现纸张的燃烧效果。
算法采用四面体和三角网格,用四叉树的数据结构存放格点物质的相关信息(对应于模拟结果的格点网格信息,简称四叉树网格),使用标准的基于元素的力来进行计算和碰撞算法正确地进行调整。由于在燃烧过程中,固体会不断地消失,要采用动态侵蚀网格作为物质的消失,还要为碰撞和渲染而保持光滑的表面。因此,在模拟的过程中,自适应地提取模拟网格的边界元素来提高精确度,有效地保存较大的元素。对于纸张、布料等薄壳物体,每个元素都在表面。而对于体物质,其内部结构不可见,因而变得极其复杂,需要二维的的薄壳物质结构进行模拟。类似于三维的模拟算法,为了支持动态网格自适应性,采用统一的体心正方形(BCS)三角格,每个正方形划分为4个三角形,如图2所示:
图2 文献[15]的BCS三角片的红绿划分方式及其演化过程
该算法不同于Level-Set的地方在于:用红-绿重构法,并抛弃那些完全处于物体以外的三角面。模拟在红-绿的父网格上进行,Level-Set的操作是运用覆盖一个红-绿结构顶点上的四叉树网格,每一个网格结点对应四叉树网格的一个结点。这种方法的只要优点是前面的演化过程在一个四叉树的网格上,能再二维物质空间中实现,其效果和和物质在三维中的变形一样。
2009年 Shiguang等人在文献[16]中提出了基于梯度的传播模型,可以模拟薄壳物体上的火焰燃烧和所伴随的弯曲与变形的过程。对于燃烧时物体的变形,采用的也是基于FFD的变形方法,不同的是,其考虑了真实的燃烧现象的相关理论。其算法思路大致是采用一个统一的框架来模拟薄壳物体的燃烧现象,主要包括:3个模块:基于梯度的火焰传播的模拟、基于 FFD的物体燃烧过程的形变、处理燃烧和变形的燃烧框架的设计。该系统易于实现,在输入不同的参数的时候,能自动生成不同的燃烧场景。
各种方法中也普遍存在很多不尽人意的地方,在处理具体问题的时候都还有很多关键的问题没有搞清楚,也没有进行合理的对待,大致有以下几个方面:
人们在用计算机图形技术模拟固体燃烧的时候,所考虑的情况还不够全面、细致,对于物体在燃烧过程中所发生的一系列巨大的变化考虑不全面,如变形和分离、动力学系统等都存在一定的缺失,特别是对燃烧后物质的遗留物也没有加以认真、合理的考虑和对待。
火焰和烟雾模拟的数理方法过于依赖NS方程的求解和简化。实际生活中我们发现,火焰和烟雾现象并非是流体现象,而是燃烧所导致的气体和固体微粒运动。特别是油料等的不完全燃烧、木材、纸张等点燃时的情况等,都是内在的化学反应机制在起作用。火焰是物质化学反应所引起的发光,主要是气体成分;烟雾是从高温燃烧的气体中脱离出来的固体颗粒,由于其自身不发光、不透明而为人们所能看见。燃烧时的烟雾大多数情况下与燃烧物质和燃烧的环境息息相关。
当前通用的流体模拟算法大多数是在“封闭”区域内进行计算,为了能够正确“求解”而设定了诸多特定的“边界条件”。然而日常经验告诉我们:火焰和烟雾的发生、扩展、运动变化、消逝等自然过程,大多是在开放的场景中进行的,并没有固定的“体积”和“边界”。
人们往往希望表现出完美而细致的细节,并且该细节往往还要进行诸如与实体碰撞、分解、光照、散落等其他特殊处理和效果。物体燃烧的细节,一方面表现在物体燃烧的所有的物理化学过程要分析清楚和表现得更加全面一些;另外,燃烧时其他物体的参与或与实体交互要有其应有的动力学属性。
好的火焰烟雾模拟方法,要体现在好的表现形态上。如火焰烟雾的发生、扩散、合理消散、颜色变换、体积变化等效果。比较而言,油料物品的燃烧会产生旺盛的火焰和滚滚浓烟,涡流十分丰富,燃烧运动极其剧烈。木材等固体燃烧的烟雾,相对而言就比较稀疏,浓度很小、似隐似现、随风飘散。点燃的香烟几乎没有明显的火苗,烟雾呈现出丝状和细缕状,很快消失在空间中。还有近年来的一些影视效果、广告效果、艺术效果等都有很丰富多样的火焰和烟雾的表现形态。
算法的运行速度一般取决于机器硬件和算法本身的复杂度。现今,图形技术所涉及的算法越来越复杂,对硬件条件的要求也越来越高。算法设计方面,诸如网格的划分、物体的破碎、灰烬的跌落等的处理,都会带来“大数据”的生产、处理和绘制等众多问题。真实的物理、化学过程的分析和计算更是如此,求解流体方程的代价也是极高的,即使是一些简化算法,也需要进行一些复杂的数学处理。
目前的一些纹理方法,在处理光照方面比较吃力,困难重重,例如固体表面的细微结构。如果把物体的表面用单纯的平面纹理来表现,则无法体现出物体自身的表面性质。比如说墙体的表面:正常的墙面会对光线进行漫反射,即入射光是被发散到四处的;如果用平面来代替墙面,就会发生镜面反射;这并不符合现实情况。另一个方面,如果把物体表面看成是由数以百万计的微小颗粒所组成,就要处理每个颗粒的光照和阴影,这需要消耗极其巨量的计算机系统资源,目前还无法实现。如果把物体表面结构划分为相对较大的网格结构,就会损失计算和模拟上的细节,从而无法准确地再现其燃烧过程中真实的物理化学和细节。光照的问题也不是孤立存在的,很多类似自然现象的模拟(如融化、刚体破碎、沙子飞散等),都要面对这样的困难。研究者可以借鉴这诸多方面的经验来加以研究,这也是一种很好解决途径。
物体真实的燃烧模拟由于燃料的复杂性和外部形态的多变性,从而在计算机图形学的真实化模拟当中占据着举足轻重的地位。一直是计算机图形技术重点考虑的问题,也是一个长时间没有很好地加以重视和解决的难点问题。而现实生活和社会的各个方面,如燃烧分析、艺术表现、影视特效、虚拟技术、广告行业、军事领域等行业对此却提出了越来越高的要求和越来越丰富的效果的需求。因此,此类研究有着十分重要的现实价值和学术价值。
本文对几类常见固体的燃烧过程进行实际分析,介绍了模拟算法及其实现的主要方法,并进行了分析和对比。研究了近年来出现的一些最新发展和未来需要去进一步面对和解决的问题和困境,提出了一定的解决思路。对于自然物体真实燃烧的逼真再现和快速、有效模拟,目前已经有一些解决的办法和比较成功的算法模型,也有学者进一步深入探讨和研究;但还是远远没有达到人们的期望,也没有实现人们的急切需求。今后还需进行更加深入、广泛的思考和研究,需要加倍的努力和尝试。
[1]Rahul Narain,Abhinav Golas,Ming C.Lin.Flowing Granular Materials with Two-Way Solid Coupling[J].ACM Transactions on Graphics,2010,29(6):No.173,1-9.
[2]Nadir Akinci,Markus Ihmsen.Versatile Rigid-Fluid Coupling for Incompressible SPH[J].ACM Transactions on Graphics,2012,31(4):No.62,1-8.
[3]Tomokazu Ishikawa,Ryo Miyazaki.Visual Simulation of Spreading Fire[DB/OL](2014-01-23).http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.77.5540&rep=rep1&type=pdf.
[4]洪义,王兆其,朱登明,邱显杰.基于 Level-Set的火焰动画生成方法研究[J].计算机研究与发展,2010,47(11):1849~1856.
[5]洪义,朱登明,邱显杰,王兆其.逼真可控的火焰动画框架研究与实现[J].计算机应用,2011,31(1):45~49.
[6]王继州,袁雪霞.纹理球方法的烟雾模拟[J].小型微型计算机系统,2013,34(7):1685~1688.
[7]夏辉丽,王继州.烟雾模拟的研究综述[J].电脑知识与技术,2014,10(21):5083~5086.
[8]Pengbo Bo,Wenping Wang.Geodesic-Controlled Developable Surfaces for Modeling Paper Bending[J].Computer Graphics Forum,2007,26(3):365~374.
[9]Zeki Melek.Interactive Simulation of Fire Burn and Decomposition[D].Ph.D,Texas A&M University,2007.
[10]Yi Hong,Dengming Zhu,etc.Geometry-based control of fire simulation[J].The Visual Computer,2010,26(9):1217~1228.
[11]朱鉴,鲍凯,常元章,柳有权,吴恩华.实时模拟固体燃烧现象[J].计算机辅助设计与图形学学报,2011,23(1):11~20.
[12]Shiguang Liu,Tai An,Zheng Gong,Ichiro Hagiwara.Physically Based Simulation of Solid Objects'Burning[J].Transactions on Edutainment VII Lecture Notes in Computer Science Volume 7145,2012:110~120.
[13]Dhanyu Amarasinghe,Ian Parberry.Believable real-time Rendering of Burning low-polygon Objects in Video Games[DB/OL].Technical Report,LARC,2011,University of North Texas Denton,Texas,USA.http://larc.unt.edu/techreports/LARC-2011-04.pdf.
[14]Dhanyu Amarasinghe,Ian Parberry.Real-time Rendering of Burning Solid Objects in Video Games[DB/OL].Technical Report,LARC,2012,University of North Texas Denton,Texas,USA.http://larc.unt.edu/techreports/LARC-2012-01.pdf
[15]Frank Losasso,Geoffrey Irving, Eran Guendelman,Ron Fedkiw.Melting and Burning Solids into Liquids and Gases[J].IEEE Transactions on Visualization and Computer Graphics,2006,12(3):343~352.
[16]Shiguang Liu,Qiguang Liu,Tai An,Jizhou Sun,Qunsheng Peng.Physically based simulation of thin-shell objects’burning[J].The Visual Computer,2009,25(5-7):687~696.