发明名称 基于毛笔和宣纸的水墨传输模型与仿真算法
摘要 基于毛笔和宣纸的水墨传输模型与仿真算法。属于计算机艺术仿真技术领域,特别是模拟宣纸、及水墨的传输实现水墨画特有艺术效果的计算机仿真。该模型包括毛笔模型和宣纸模型,宣纸模型为模拟纤维网结构,由纤维束连接起来的纤维团组成,纤维团是水墨的容器和载体,纤维束是水墨传输的导管;其仿真算法分为:水墨在虚拟毛笔上的传输、水墨在虚拟毛笔与虚拟宣纸之间的交换以及水墨在虚拟宣纸中的传输。本发明具有更好的可控性,更自然逼真的扩散效果,更动态直观的绘制过程、更高的实时性。本发明中的水墨传输机制是可控制的,笔道绘制及扩散的全过程都是可见的,本发明中采用的算法在保证效果逼真的前提下,还保证了交互式绘制所需要的实时性。
申请公布号 CN1773516A 申请公布日期 2006.05.17
申请号 CN200510115184.7 申请日期 2005.11.15
申请人 天津大学 发明人 孙济洲;孙美君;王秀锦;于斌;王征
分类号 G06F17/50(2006.01);G06T1/00(2006.01) 主分类号 G06F17/50(2006.01)
代理机构 天津佳盟知识产权代理有限公司 代理人 侯力
主权项 1、一种基于毛笔和宣纸的水墨传输模型与仿真算法,其特征是该水墨传输模型分为三个部分:水墨在虚拟毛笔上的传输、水墨在虚拟毛笔与虚拟宣纸之间的交换以及水墨在虚拟宣纸中的传输,具体包括:第一、宣纸模型建立该宣纸模型采用三层结构,依次为:接触层——负责与毛笔的水墨交换;扩散层——完成水墨在纸中的扩散、沉积和水分挥发操作;沉积层——保存沉积下来的墨信息,并将其最终映射到屏幕上;每层宣纸模型为模拟纤维网结构,由纤维束连接起来的纤维团组成,纤维团是水墨的容器和载体,纤维束是水墨传输的导管;其中,宣纸模型纤维网的构造规则:a)纤维分布服从“全局一致,局部随机”,所谓“全局一致”是指从整张宣纸平面来看,平面上每个象素区域所含的纤维量是“一致”的,“一致”是指把每个象素的纤维量看作一个随机量,那么这些随机量具有相同的均值,都服从正态分布,而“局部随机”则是指在每个象素平面区域内的纤维分布是完全随机的,这条规则是模拟宣纸纤维结构的不规则分布的关键;b)纤维束的数目、长度和方向均服从正态分布;c)正态分布随机数的生成算法:我们使用一种常用的随机数生成方法:“变换抽样法”,基本流程:Proc NRand(in u,in diff,out result)//u为均值,diff为方差 r1←Rand() r2←Rand() <math> <mrow> <mi>C</mi> <mo>&LeftArrow;</mo> <msqrt> <mo>-</mo> <mn>2</mn> <mi>ln</mi> <msub> <mi>r</mi> <mn>1</mn> </msub> </msqrt> <mo>&times;</mo> <mi>cos</mi> <mn>2</mn> <msub> <mi>&pi;r</mi> <mn>2</mn> </msub> </mrow> </math> //C服从标准正态分布 result←u+diff×C//即为所求随机数End Proc宣纸纤维网构造算法:每张纤维网在初始化的时候都需要由计算生成,且要使纤维分布服从“全局一致,局部随机”,构造的步骤如下:第一步、在“细胞矩阵”上分配纤维:把每个象素进一步分割成n×n个“细胞”,我们称细化后的纸平面矩阵为“细胞矩阵”,以宣纸致密度参数D*GMAX为均值,其中GMAX为最大纤维点数,生成一个服从正态分布的随机数Ng 作为每个象素区域应该分配纤维的量,在各象素区域内随机分配Ng个“纤维点”Ng=NRand(D*GMAX,diff),diff为常量第二步、组合纤维团:根据“细胞矩阵”上“纤维点”的分布情况把相邻的“纤维点”组合成一个纤维团;第三步、在“细胞矩阵”上分布纤维束:对每个“细胞”位置,根据用户指定的均值D*FMAX和方差diff生成一个正态随机数Nf,再生成Nf根长度和方向都服从正态分布的纤维束Fxy(1,α):Nf=NRand(D*FMAX,diff),diff为常量第四步、连接纤维团:计算每根纤维束所经过的纤维团,并用纤维束连接,构成模拟纤维网结构宣纸;第二、水墨在虚拟毛笔上的初始化分布虚拟3D毛笔模型该毛笔模型包括骨架和表面两个部分,骨架由脊骨和辅助面组成,脊骨位于骨架的中轴线上,在脊骨上分布有n个节点——模型中称之为关键节点,相邻关键节点间的距离是一个等差数列,公差d=l·λ/(n2-n),其中l是毛笔笔刷长度,λ是调整因子;辅助面即以这些关键节点为中心,辅助面与中轴线垂直,辅助面上有m/2条过其中心的轴线,相邻轴线夹角相等,这些轴线的端点在模型中称为辅助节点;笔刷模型用抛物线模拟辅助面初始半径的变化,在模型骨架上添加表面,完成笔刷几何模型建立;初始化水墨分布水墨的量采用粒子数表示,即以水粒子数表示水的多少,以墨粒子数表示墨的多少;每次蘸墨,用户给出的是毛笔骨架的关键点上的墨粒子数Inkcenter,在毛笔模型竖直的情况下取其一个截面,即辅助面,水墨信息存储在毛笔骨架的关键节点上,以关键节点的墨粒子数作为该辅助面所有点的墨量,或采用辐射型扩散和向量型扩散两种墨扩散模式来计算毛笔截面其他部分的墨粒子数:辐射型扩散,即中心点的墨色向外以一定的步长递减,最小值为0,扩散公式如下:Inkradio=Inkcenter*(1-Rstep*D)D为目标点与中心点的距离,Rstep为变化因子向量型扩散,即中心点的墨色以一定的步长沿着和x+轴成θ角的方向进行递减,或在负方向上增加,扩散公式如下:Inkvector=Inkcenter*(1-Vstep*D)D表示目标点与辅助面上的关键点的连线在,Vstep为变化因子 扩散方向上的投影长度(可以为负)最终的水墨分布是这两种扩散模式的加权和:Inkdest=Inkradio*WR+Inkvector*WV WR和WV分别为辐射分布和向量分布的权值第三、水墨在笔纸间的交换先计算毛笔的笔迹,即笔与纸的接触区域,以笔关键节点为中心,当辅助面与纸相交时,这个截面与纸的交接部分为一条直线,将这条交线定义为笔迹元素,它的两个端点分别定义为上辅助点和下辅助点,将关键节点在这条交线上的投影定义为投影中心点,笔迹上的水墨信息通过投影中心点存储;整个笔迹由若干个笔迹元素构成,各个笔迹元素的投影中心点的水墨信息共同决定了整个笔迹的水墨分布;当虚拟毛笔与宣纸发生碰撞即接触时,在笔迹区域内,笔和纸纤维团之间就会进行水墨交换,这种交换是双向的,通过计算接触瞬间毛笔的截面与纸的相应接触面的水墨信息,可以判断水墨的传输方向,当交换完成后,毛笔和纸上的水墨都需要重新分布;毛笔上的墨水的重新分配对于毛笔,通过计算毛笔上的各个部分距离毛笔与纸接触面的距离以及水墨损失或获得的最大值,得到各个部分的水墨变化幅度,进而得到整个毛笔上的水墨的均匀变化的效果;设毛笔与纸接触的“原始笔迹”是S,则毛笔上不在原始笔迹上某一个关键节点/辅助点p的水墨信息用公式表示为: Inkp’=Inkp-(1-Dp(S)/Dmax)*Inktran_avg*k其中Inkp’是传输后笔的墨粒子数,Inkp是传输前的墨粒子数,Dp(S)是点p到S的平均距离,Dmax是毛笔上的关键节点到S的最大距离,Inktran_avg是毛笔向原始笔迹传输的平均墨粒子数,k是用来控制当毛笔上某一处水墨变化时对毛笔的影响范围的,k取值0-1,k越小,影响范围越小;同样,对于毛笔上水的传输,用公式表示为: Waterp’=Waterp-(1-Dp(S)/Dmax)*Watertran_avg*k’k’应该大于k;第四、水墨在宣纸中的传输水墨在宣纸间的传输分为:扩散、沉积、水分的挥发以及水墨叠加;扩散:扩散在纸模型中的扩散层实现,通过比较扩散层中各个纤维团的水墨浓度,确定扩散的方向以及扩散的量值,通过纤维束的传递将扩散实现为一个链式反应过程(见图9)扩散过程具体步骤如下:●计算扩散条件,设虚拟宣纸的粘墨性和粘水性分别为Ink_Stick和Water_Stick,纤维团的墨粒子数和水粒子数为Ink和Water,则扩散条件为: Ink>Ink_Stick且Water>Water_Stick将满足上述条件的纤维团称为“活动”纤维团;●对每个“活动”纤维团,计算它的细胞平均含水量Water_Avg及平均含墨量Ink_Avg;●对该纤维团,计算它的每个相邻纤维团的细胞平均含水量Water_Avg’及平均含墨量Ink_Avg’,将其与中心纤维团的相应量值作比较,当:①Water_Avg>Water_Avg’或②Water_Avg<Water_Avg’但Ink_Avg>Ink_Avg’时,扩散发生,由中心纤维团向其邻近纤维团传递水墨,传输量由以下公式决定:水传输量=(Water-Water’)/(Fibre_Avg+1)墨传输量=(Ink-Ink’)/(Fibre_Avg+1)其中Water和Water’分别表示中心纤维团和邻近纤维团的水粒子数,Ink和Ink’分别表示中心纤维团和邻近纤维团的墨粒子数,Fibre_Avg表示纸模型中每个纤维团平均连接的纤维束数量,在情况①下水墨同时传输,称为“动水传输”,在情况②下只有墨传输,称为“动墨传输”;扩散采取持续模型,即扩散贯串整个绘制过程,扩散一旦开始(一般是从绘制第一个笔道开始),就连续不断的进行直到各个纤维团之间的水墨浓度达到平衡(见图10),达到平衡的过程完全由宣纸扩散层上的水墨信息决定,与用户绘制笔道的过程无关,将扩散与接受用户笔道分为两个独立的线程,它们的共享数据就是扩散层的水墨信息,用户绘制新的笔道将会不断改变扩散层上的水墨信息,使扩散的中间值发生改变,从而得到各种效果;沉积:虚拟宣纸间的水墨沉积有两种方式,一种是在毛笔与纸接触并且接触层上形成毛笔的笔迹后,从这个笔迹到沉积层的沉积,沉积量基于接触层上形成笔迹的水墨信息以及预先设定的沉积比例;第二种沉积发生在扩散过程中,由扩散层向沉积层进行沉积,沉积随扩散的不断进行而不断发生,沉积量取决于扩散层上的水墨信息;1)水的挥发:水的挥发同样发生在扩散层,随时间的流逝,扩散层上的水以一定比例不断进行挥发直至墨干;2)水墨叠加:这里采用持续的扩散模型,使叠加与扩散得到统一;叠加实际上是改变了未扩散完成的扩散层的水墨量,叠加效果与水墨的扩散效果最终都由这个不断改变初值的扩散过程实现;第五、笔道的绘制笔道的绘制需要满足实时的要求,当需要绘制笔道时,程序加载沉积在沉积层上的水墨信息并通过加载为OpenGL纹理或GDI的位图在屏幕上显示出来;由于扩散是持续进行的,因此下一个要显示的笔道实际上是这前一个笔道继续扩散、或同时加入了新的笔道而形成叠加的效果。
地址 300072天津市南开区卫津路92号电子信息学院
您可能感兴趣的专利