基于压感笔等装置的三维毛笔模型与仿真方法

文档序号:6650034阅读:516来源:国知局
专利名称:基于压感笔等装置的三维毛笔模型与仿真方法
技术领域
本发明涉及一种计算机模拟仿真技术,特别是模拟3维毛笔的仿真方法,通过综合运用三维建模及动画等计算机图形学技术,以压力感应笔和数位板,以及计算机键盘、鼠标作为主要输入装置,对虚拟毛笔模型进行动态控制,在计算机屏幕上模拟出真实毛笔的各种运动变形。
背景技术
随着计算机图形学技术的飞速发展,中国水墨画和书法等东方艺术的计算机仿真在非真实感渲染领域异军突起,日趋成为众人关注的研究焦点。传统水墨画和书法并不容易上手。而电脑作画不仅避免了上述问题还可以撤消不满意的笔触,保存创作一半的作品,以便下次继续完成,或是以其为基础,创作出几张风格各异的作品。这些功能都使创作更加有效、方便。毛笔,列为“文房四宝”之首,中国水墨画和书法正是依靠了毛笔运动的灵活多变和水墨的丰富性,在纸面上形成有艺术意味的黑白构成。因此,在东方艺术的计算机仿真中,对毛笔进行仿真模拟是至关重要的,在工艺包装设计、广告设计、形象识别设计、书籍装帧集文字设计以及影视制作甚至古代珍贵水墨画的保护性修复研究和临摹复制等方面有较高的实际应用价值。
目前已经存在很多对硬笔的仿真方法。因为硬笔没有复杂的形态变化,所以更容易被计算机模拟。但是仿真3维毛笔的技术还很少,其中一种技术是利用能量最小化方法对毛笔的动态变化行为建模,但这种方法无法模拟程度较大的笔刷形变,而且不够稳定;另一种技术建立了单根笔毛的模型,将多根笔毛聚合成笔刷,并且利用设置毛笔运动参数和添加惯性量的方法进行仿真,但这种方法模拟出的毛笔外形不美观,且运算量会随笔毛数量的增加而成倍增长,不能保证产生实时的仿真效果。

发明内容本发明的目的是解决现有毛笔仿真技术较少和已有技术存在计算速度慢、模拟的变化种类少,交互性差,以及不易上手等问题,提供一种基于压感笔等装置的三维毛笔模型与仿真方法,通过建立三维虚拟毛笔模型,使用户结合数位板与压感笔,或者计算机键盘和鼠标等装置实现对虚拟模型连续有效的动态控制,从而模拟出真实毛笔的各种运动及变形并在计算机屏幕上直观的显示出来,用户可以在计算机上自然、直观地操控一支三维虚拟毛笔进行艺术创作。
本发明提供的基于压力感应笔和数位板的三维毛笔模型主要指笔刷几何模型,包括骨架和表面两个部分,骨架由脊骨和辅助面组成,脊骨又细分为主脊骨和分叉脊骨,主脊骨位于骨架的中轴线上,表现弯曲、扭转重要形变,分叉脊骨与主脊骨的结构相同,表现笔尖分叉行为;在脊骨上分布有n个节点——模型中称之为关键节点,相邻关键节点间的距离是一个等差数列,公差d=l·λ/(n2-n),其中l是笔刷长度,λ是调整因子;辅助面即以这些关键节点为中心,表现毛笔承受压力时的外表面挤压形变,辅助面与中轴线垂直,辅助面上有m/2条过其中心的轴线,相邻轴线夹角相等,这些轴线的端点在模型中称为辅助节点,即几何模型有m个辅助节点;笔刷模型用抛物线模拟辅助面初始半径的变化,某一辅助面的初始半径r=a·s2+b·s+c,其中s是该辅助面中心的关键节点与根部关键节点之间的长度,抛物线系数a,b,c由三点确定,分别是根部辅助面,半径最大处的辅助面,和笔尖处辅助面在脊骨同一侧,且位于同一平面内的辅助节点的坐标值;模型骨架上添加表面,完成笔刷几何模型建立并显示。
一种基于上述三维毛笔模型的毛笔仿真方法,该仿真方法由动态控制模块与分叉控制模块对三维毛笔模型进行实时检测控制,整体的控制流程如图4所示,其中第一、动态控制模块形变控制曲线——空间形变的确定根据数位板和压力感应笔检测到的参数压感笔笔头的水平面x、z坐标,压力大小p,笔杆与水平面XZ的夹角α及笔杆在纸平面亦即水平面的投影与Z轴夹角β,唯一确定毛笔当前的空间位置。模块可将p通过公式y=(1-p/1024)*l(l-系统设定的脊骨长度)转换为y坐标,然后将(x,y,z)作为笔刷根部关键节点(即笔刷与笔杆连接处)的空间位置;动态控制模块综合分析从输入装置实时获得的方位信息,确定毛笔新的方位和形变。它的基本思想是求解虚拟毛笔的形变控制曲线,从而调整毛笔几何模型以改变其形态。两组势能-阈值对控制弹性变化到塑性变化的转变,以及约束毛笔弯曲和扭转的最大程度。
从图5可以看出,模块首先将毛笔的笔刷投影到竖直面和水平面上,分别求解笔刷在这两个平面上的形变控制曲线,依据几何约束建立控制曲线的方程组●笔刷的长度是固定的,即控制曲线的曲线段长度恒定●通过数位板传入的参数,可以确定笔刷上一点的位置,即控制曲线必过该点●通过数位板传入的参数,可以确定毛笔的倾斜角度α,即控制曲线的一端点(作为笔刷根部的关键节点)处的导数可确定。
●笔尖落在纸面上,即控制曲线的另一端点(作为笔刷尖部的关键节点)的Y坐标与纸面相等。
即在竖直面内,几何约束可以抽象表示为●抛物线过P0点●抛物线过P1点●抛物线上过P1点的切线与X轴正向的夹角等于α●抛物线在P0点与P1点间的弧长等于s可列求控制曲线待定系数方程组如下x0=av·y02+bv·y0+cvx1=av·y12+bv·y1+cvx′|y=y1=2av·y+bv∫y0y1ds=s⇒x0=av·y02+bv·y0+cvx1=av·y12+bv·y1+cvtan(π/2-α)=2av·y+bv∫y0y11+(2av·y+bv)2dy=s]]>x1,y0-P0点坐标x1,y1-P1点坐标α-过P1点的切线与X轴正向的夹角s-P0点到P1点的曲线弧长 av,bv,cv-抛物线线方程的待定系数在水平面内,几何约束可以抽象表示为●抛物线过P0′点●抛物线过P1′点●抛物线上过P1′点的切线与X轴正向的夹角等于α′●抛物线在P0′点与P1′点间的弧长等于s对于水平面,可列求控制曲线待定系数程组如下tanα′=2ah·x1+bhz1=ah·x12+bh·x1+chz0=ah·(x0′)2+bh·x0′+ch∫x0′x1ds=sp⇒tanα′=2ah·x1+·bh0=ah·x12+bh·x1+chz0=ah·(x0′)2+bh·x0′+ch∫x0′x11+(2ah·x+bh)2dx=sp]]>x0′,z0-P0′点坐标x1,z1-P1′点坐标α′-过P1′点的切线与X轴正向的夹角sp-P0′点到P1′点的曲线弧长 ah,bh,ch-抛物线线方程的待定系数模型对于z0的确定基于如下理论,因为脊骨的初始投影是一条与X轴重合的线段,z0是扭转后脊骨投影尖部点在Z轴上的偏移值,若状态参数x,z,β都有改变,模型依据如下步骤求z0a)状态参数β不变,x,z改变可以用投影根部点到的前一时刻的脊骨投影过当时投影根部点的切线的距离来表示。
过前一时刻的投影根部点(x1′,z1′),且与Z轴正向的夹角等于当时的状态参数β′的切线的直线方程是x-x1′z-z1′=tanβ′⇒tanβ′-z-x+(x1′-tanβ′·z1′)=0,]]>设A=tanβ′,B=-1,C=x1′-tanβ′·z1′,则当前时刻投影根部点P1′(x1,z1)到直线的距离dz0为
b)状态参数β改变dz0=dz0-sp·sin(βcurr-βprev)其中 c)为了保证扭转变化的稳定性和连续性,模型确定z0的值是一个积累变化的动态过程,即z0=z0+dz0使用迭代求根法可以解出上述两个求解曲线待定系数的方程组,从而得到竖直面和水平面内的两条形变控制曲线,解出控制曲线后,通过它们求解各个关键节点在竖直面和水平面内的坐标,并将这两组坐标加以组合,就可以将两条控制曲线合成为笔刷的空间形变,其步骤为a)竖直面(XOY面)内得到的曲线方程x=av·y2+bv·y+cvb)水平面(XOZ面)内得到的曲线方程z=ah·x2+bh·x+chc)对于每一个关键节点P,设竖直面内该点到曲线段端点的弧长为ps,它在水平面上的对应长度psp,二者之间的关系近似为pspsp=ssp⇒psp=pss·sp]]> d)设P点待定3维坐标为(x,y,z),在两个平面内的对应点的平面坐标分别为竖直面内Pv(xv,yv),水平面内Ph(xh,yh),这两组坐标分别由以下两个方程组求得xv=av·yv2+bv·yv+cv∫yvy1ds=ps⇒(xv,yv)]]>zh=ah·xh2+bh·xh+ch∫xhx1ds=psp⇒(xh,zh)]]>
这里是将关节节点的待求平面坐标分别代入竖直面和水平面内的两条形变控制曲线,所以方程组中的av,bv,cv以及ah,bh,ch是形变控制曲线的系数。
e)(xh,yv,zh)即为关键节点P的3维坐标值;势能-阈值对——弯曲恢复程度、扭转程度的确定模块对它们采用近似计算方式分别过控制曲线的两端点作该曲线的切线,这两条切线的夹角与调整因子的乘积即是当前时刻的势能。而阈值是由经验公式确定的。
势能-阈值对在竖直面和水平面内的计算方法和比较过程是设k-势能调整系数,rid-硬度,wet-湿度,p-压力在竖直面内势能Ev=k·(Δθv)2,阈值Tv=δv·ridp·wet,]]>其中 若Ev≤Tv则弯曲可以完全恢复;若Ev>Tv则弯曲部分恢复后有残余形变,残余势能ΔE=Ev-Tv,脊骨仅能恢复到Ev=ΔE时的状态。
在水平面内势能Eh=k·(Δθh)2,阈值Th=δh·p·wet·μ,其中, 若Eh≤Th则笔尖点未能摆脱摩擦力束缚,位置不变,扭转程度增大;若Eh>Th则恢复到Eh=Th,扭转程度达到最大。
笔刷受压形变——骨架中的一个辅助面即是笔刷的一个横截面,辅助面初始时类似于圆面,当笔刷与纸面接触并且受到下压力时,随着压力或者笔杆与纸面夹角的增大,它的各轴长度在垂直方向上减小,在水平方向上增大,从而变化为一个类椭圆面,但面积大小不变,依据辅助面面积守恒原理,首先找到一个到弯曲脊骨曲率最大处的距离最小的关键节点,确定以该节点为中心的辅助面的受挤压形变程度(即变为椭圆面后,椭圆面的长短轴大小),然后在该处形变的基础上求解一条表面形变控制曲线,该曲线确定其它辅助面的受挤压形变程度,所有的这些变化的集合就可以反映出笔刷的表面形变,步骤如下a)对一个特定时刻的弯曲脊骨确定其曲率最大处的关键节点——即检查以关键节点为中心的辅助面上是否有低于纸面的辅助节点,从脊骨根部点起向尖部点依次遍历,第一个满足这种情况的关键节点即作为曲率最大处的关键节点;b)计算以此关键节点为中心的辅助面的最短轴(即辅助面变形为椭圆面后,该椭圆面的短轴)距离——最短轴距离由该辅助面初始半径R与挤压比率f的乘积确定,即Rmin=R×f,挤压比率f与压力成正比,与脊骨长度成反比,与笔杆与纸面夹角成正比,公式为λ-调整因子(默认为0.24)a-笔杆与纸面夹角f=1-λ·ap/l,其中l-笔刷长度p-压力c)由脊骨尖部辅助面,最大曲率处辅助面和脊骨根部辅助面上的最长轴(即辅助面变形为椭圆面后,该椭圆面的长轴)在脊骨同一侧的辅助节点,确定一条水平面曲线方程z=ax2+bx+c;之所以只求水平面的控制曲线,是因为各辅助面上最长轴的端点与辅助面的中心同高,即其辅助节点的y值与对应脊骨上的关键节点相等,所以在竖直面上可以保证轮廓线的平滑,我们只需关心轮廓线在水平面上投影的平滑即可,既然最大曲率处辅助面已通过挤压程度控制公式进行了调整,那么这条根据已调整的辅助面上的节点得到的曲线就可以用来调整其它辅助面;例如三个辅助面的最长轴在脊骨同一侧的端点依次为P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3),三点在水平面的投影可以确定这样一条用于控制其它未调整辅助面的最长轴长度的抛物线z1=ax12+bx1+cz2=ax22+bx2+c⇒a,b,cz3=ax32+bx3+c]]>d)各辅助面最长轴所在直线的水平面投影与控制曲线有一个交点,该点到中心在水平面上的投影的距离即是其新的最长轴半径Rmax;依据面积守恒原理,受挤压时椭圆面的面积等于初始时圆面的面积,受挤压辅助面的椭圆的最短轴半径Rmin=R2/Rmax;e)根据新的最短轴半径调整各个辅助节点的3维空间坐标;第二、分叉控制模块依据输入的信息,判断是否应产生分叉,计算脊骨上开始产生分叉的关键节点位置,和分叉部分与主体部分之间的初始间隔,最后将对分叉部分的控制传递给动态控制模块;当毛笔承受的压力、倾斜角度和湿度的综合值c=λ*p*α/w(c-综合值、λ-调整因子、p-当前压力值、α-毛笔与XOZ面夹角、w-笔刷湿度)超过模块设定限定值t后,即产生分叉,这里的限定值t是系统的预设值,通过实验确定,只有当c>t时才会出现分叉效果。同时调整因子变为其原值的q倍(0<q<1可由用户设定),以保证只有当压力再次超过某一定值后才会产生新的分叉,而不是陷入不断分叉的死循环中;开始产生分叉的关键节点由公式 (n-关键节点数,t-分叉限定值)确定;分叉脊骨与主脊骨的初始间隔大小与毛笔所受压力,以及持笔角度成比例关系,但在这一范围内又具有一定的随机性,公式为initGap=σ*p*α(initGap-初始分叉间隔;σ-随机因子,可由各种编程语言内含的随机数生成函数生成);分叉模型在对分叉脊骨结构的各部分设定初始值时依据以下几点●各条脊骨在分叉起始点处的辅助面是完全重合的,分叉脊骨的辅助面初始值应与主脊骨的对应面相同,这样才能添加表面以后,产生一个顺滑的外观,因为分叉后的笔刷的两条边线仍然是曲线,否则分叉出的脊骨会很像突刺出笔刷轮廓面一样。
●分叉脊骨在XOY平面控制曲线的各系数由主脊骨传递,这既是与实际情况相符的,也考虑到了给骨架添加外表面时的需要,因为分叉脊骨和主脊骨在竖直面的弯曲从与XOY面垂直的方向看去应是基本重合的,分叉后的笔刷在运动变化时依然是一个整体,具有很大程度的一致性。
分叉脊骨与主脊骨之间的偏移量主要体现在每一时刻变化开始时二者的尖端点在Z轴向的距离,这是一个动态变化的值,设定其公式为Gap=λ*p*α+initG其中Gap-分叉脊骨与主脊骨偏移量λ-调整因子p-毛笔所受下压力α-笔杆与纸面夹角w-笔刷当前湿度initGap-初始偏移量分叉控制模块在初始化分叉脊骨后,把对分叉脊骨运动变化的控制交给动态控制模块,动态控制模块把主脊骨在竖直面和水平面上控制曲线的参数传递给分叉脊骨,分叉脊骨根据这些参数●从主脊骨复制得到它自身在竖直面上的控制曲线,●分叉脊骨尖部点的z0坐标由主脊骨尖部点的z0坐标加上偏移量得到,由此确定它在水平面上的控制曲线;以上计算结束后,动态控制模块对分叉脊骨的控制就与主脊骨相同了;上述过程反复进行,即可对虚拟毛笔模型进行动态控制,在计算机屏幕上模拟出真实毛笔的运动变形并最终显示毛笔的笔迹。
本发明的优点和积极效果1、毛笔模型的外形美观和逼真,本发明提出的毛笔笔刷几何模型对真实毛笔进行了适当的抽象和简化,生成了一个与真实毛笔非常接近的三维虚拟毛笔,该虚拟毛笔具有顺滑的外观,而且具有很高的灵活性,能够产生丰富的形变。2、更好的交互性,由于本发明构建了一个基于压感笔等装置的三维交互界面,用户在创作时动态控制屏幕上的3D虚拟毛笔,可以更加自然和直观地进行艺术创作。3、毛笔模型更容易使用,友好的交互界面使得用户能够在较短的时间内掌握使用方法,熟练地绘制和书写。4、绘制效果更逼真,由于绘制出的笔迹是依据3D虚拟毛笔的形变实时产生的,可以产生变化更加丰富,更接近真实的笔道效果。5、更高的实时性,本发明中,模型采用的算法在保证效果逼真的前提下,进行了很多优化,降低了计算量,使得该仿真方法与同类技术相比更加实用。本发明保证了动态控制的实时性,即从发生用户输入到3D毛笔产生相应的正确变化之间的时间间隔在一个用户可接受的范围内,并在毛笔模型的复杂性和实时性之间找到一个平衡点,既能逼真地模拟毛笔的外部形态和动态变化,又能满足实时性要求。6、该仿真技术可以融合到各种绘图软件中,为中国画、书法的创作提供更加直观的交互界面,而且可以作为水墨仿真的基础,提供毛笔落在纸面上的笔迹,最终绘制出具有水墨效果的笔道。

图1是压感笔坐标系及角度检测示意图;图2是笔刷模型中骨架示意图;图3是笔刷模型表面示意图;图4是仿真方法控制流程图;图5是控制曲线的求解与合成过程示意图;图6是垂直于纸面方向观察到的分叉后的骨架示意图;图7是压笔与提笔过程示意图;图8是运笔过程示意图;图9是笔刷受挤压后的形变过程示意图;图10是分叉控制模块处理后的3D虚拟毛笔的笔刷示意图;图11是分叉笔刷的运笔过程示意图;图12是绘制出的具有水墨效果的笔道示意图。
具体实施方式实施例1下面通过一个实例来说明本发明的工作方式本发明采用的输入装置是Intuos2数位板和压力感应笔,整体的控制流程如图4所示。
假设用户选择了系统提供的一支软豪毛笔,该笔各项参数值如下笔刷长度l=10.0,关键节点数n=20,辅助节点数m=8,根部辅助面半径Rroot=1.3,辅助面最大半径Rmax=1.5,笔毛硬度rid=0.2,和笔刷湿度wet=0.4,纸面与XOZ面重合,即纸面高度为0.0。该组参数值生成如图2所示的骨架,添加表面后形成如图3所示的笔刷,其中1脊骨,2关键节点,3辅助节点,4辅助面,5表面。
参见图1,用户开始绘制后,假设在某一时刻,系统从压感笔装置获得的毛笔信息为x=5.0,z=1.0,压力p=535,转换为y=(1-p/1024)*l=4.8。系统设定该组坐标对为笔刷根部关键节点的空间位置,在其后的计算中令p=y=4.8并代入公式。
此外获得的信息还有,笔刷与纸面(XOZ面)的夹角α=56°,笔刷在XOZ面的投影与Z轴夹角β=45°。同时,系统还保留有前一采样时刻的毛笔信息,假设其为x’=4.8,y=5.4,z=0.01,α=56°,β=40°。
系统依据该组信息求笔刷的竖直面控制曲线x0=c5.0=4.82a+4.8b+ctan(π/2-56π/180)=9.6a+b∫0.04.81+(9.6a+b)2dy=10.0⇒a=-0.233732b=2.91833c=-3.62282x0=-3.62177]]>由此可以得到竖直面内的控制曲线x=-0.233732y2+2.91833y-3.62282,并且可以确定当前情况下的笔尖点的竖直面坐标(-3.62177,0.0)。
求笔刷的水平面控制曲线先保持状态参数β不变dz0=-A·z1+B·x1+CA2+B2=0.84*0.01-1*5.0+4.1280.842+1=0.661]]>再考虑状态参数β改变带来的影响dz0=dz0-sp·sin(βcurr-βprev)=0.661-8.62282*sin(45°-40°)=-0.09z0=1.0-0.09=0.01,这里的1.0是假设笔刷从运动起始时刻起到当前时刻积累下的Z轴方向偏移量,该偏移量初始为0。解方程组0=10a+b0=25a+5b+c0.01=a·(x0′)2+b·x0′+c∫x0′6.01+(10.0a+b)2dx=x0-x=8.62282⇒a=0.000134493b=-0.00134493c=0.00336233x0′=-3.62280]]>由此可以得到水平面内的控制曲线z=0.000134493y2-0.00134493y-3.62280,并且可以确定当前情况下的笔尖点的水平面坐标(-3.62280,0.00999993)。
系统在求解方程组时使用的割线迭代法是一种较常用的求根算法,可以在很多有关数值方法的著述中查到相关资料。
接下来由这两条控制曲线合成各个关键节点的空间位置,参见图5。其中6合成空间形变,7添加表面。笔尖处关键节点序号为n-1,向根部关键节点处递减,直到根部关键点的序号0。其间的任一关键节点i,在它到笔尖点间的脊骨长为ps=Σin-1(n-1-i)*minus,psp=pss·sp=8.62282*ps/10.0,]]>由此分别列出类似于求竖直面和水平面控制曲线的方程组,只是a,b,c成为已知数,而x1,y1和x1’,z1’变为未知数,可以分别求出该点在竖直面和水平面的平面坐标(x,y)(x’,z’)。合成两对平面坐标,将(x’,y,z’)作为第i个关键节点的空间坐标。
前一时刻的竖直面和水平面内的势能-阈值对可依据当时的控制曲线按技术方案提供的公式求得,通过比较可知,当前的弹性弯曲可以完全恢复,扭转程度仍未超过当前状态下允许的最大值。参见图7,笔刷在提笔、压笔的过程中会弹性的弯曲并恢复,其中12笔刷原始状态,13倾斜毛笔,14压笔,15提笔;另外参见图8,其中8(a)是一个水平横向运笔过程,8(b)是一个水平测向运笔过程,其间的扭转程度的最大值由水平面势能-阈值对确定的。
然后系统对笔刷表面受挤压时的形变进行控制,参见图9,在压笔过程中,笔刷会因为受挤压而变形。
在本例所举的时刻,因为只有笔尖点处辅助面落在纸面上,其它辅助面没有与纸面相交,表明弯曲程度还很小,所以表面基本没有变化。
假设另一时刻序号为9的关键节点是序号值最小,且以其为中心的辅助面与纸面相交的关键节点,则首先求得该点处辅助面的压缩率,f=1-λ·ap/l=1.0-0.8*((0.3*3.0/10.0)*0.98)=93%,即辅助面的最短轴半径变为初始半径的0.93倍。基于该最短半径,系统就可以求出新的外形控制曲线,并调整表面的形变。
回到本例,压力、倾角、湿度综合值c=λ*p*α/w=1*4.8*56*π/(180*0.4)=11.7286,低于系统设定的该种毛笔分叉限定值t=8.0,会产生程度较轻的分叉,λ更新为原值的p=0.5倍,即λ=0.5。分叉起始关键节点序号为 是从笔尖处关键节点算起的第四个节点。初始分叉间隔initGap=σ*c=0.00285*11.7286=0.03343。由此产生第一条分叉脊骨,并将该脊骨的控制转移给了动态控制模块。这里的限定值t可以由用户重新设定,以满足不同的需要。参见图6、图10、图11。其中8分叉偏移量,9分叉脊骨,10主脊骨,11产生分叉的节点位置。
除了该种软豪毛笔外,系统还提供了其它种类的预设毛笔可供用户使用。用户也可以通过在系统允许的范围内设定特定参数的数值,如硬度、湿度等,来取得符合自身要求的毛笔。
本发明有以下几种有效的实施方式。
1.将各个时刻毛笔的形变连续叠加并显示在屏幕上,可以实时绘制出各种水墨效果的笔道,用来进行中国画和书法的创作。以压感笔和数位板作为输入装置,用户操纵压感笔的方式不同,可以实时绘制出不同的笔锋。这里以毛笔最基本的两种笔法——中锋和侧锋为例,说明操作过程中锋——毛笔的技法中有一种最基本的中锋笔法,中锋亦是藏锋,执笔端正,笔锋在墨线的中间,用笔的力量均匀,笔锋垂直于纸面,其效果圆浑稳重。相对于其它运笔方法来说,中锋笔法更易被初学者掌握。如图12(a)中所示,用户按下压感笔,然后基本顺着此时压感笔的倾斜方向运笔,反映在屏幕上,即是笔尖在笔迹正中的中锋笔法。结合用笔的力度、速度、走势又可将中锋用笔演化成拖锋和逆锋。
侧锋——侧锋是指用笔执笔偏侧,笔锋在墨线的边缘,笔锋与纸面形成一定的角度,用力不均匀,时快、时慢、时轻、时重,其效果毛、涩变化丰富。如图12(b)中所示,用户按下压感笔后,向笔杆一侧的方向运笔,反映在屏幕上,即是笔尖在笔迹一侧的侧锋笔法。
中锋和侧锋是中国画和书法的最基本的两种笔法,结合用笔力度、向度、速度等的变化,可演化为其它几种笔法。用户熟练使用后,完全可以使用压感笔模拟出毛笔的勾、擦、点、染,以及飞白等表现手法2.本发明可以融合到其它绘图软件中。用户控制屏幕中的三维虚拟毛笔进行绘制,比单纯观察鼠标指针的移动更加直观、自然,上手容易。
3.由于很多西画种类如油画、水彩画等使用的也是软性笔刷,本发明只要经过少量修改,就可以直接被用来仿真这些在西画中使用的笔刷。
权利要求
1.一种基于压力感应笔和数位板的三维毛笔模型与仿真方法,其特征是该仿真方法包括1个笔刷几何模型和2个控制模块,即动态控制模块与分叉控制模块组成,其中第一、笔刷几何模型包括骨架和表面两个部分,骨架由脊骨和辅助面组成,脊骨又细分为主脊骨和分叉脊骨,主脊骨位于骨架的中轴线上,表现弯曲、扭转重要形变,分叉脊骨与主脊骨的结构相同,表现笔尖分叉行为;在脊骨上分布有n个节点——模型中称之为关键节点,相邻关键节点间的距离是一个等差数列,公差d=l·λ/(n2-n),其中l是笔刷长度,λ是调整因子;辅助面即以这些关键节点为中心,表现毛笔承受压力时的外表面挤压形变,辅助面与中轴线垂直,辅助面上有m/2条过其中心的轴线,相邻轴线夹角相等,这些轴线的端点在模型中称为辅助节点,即几何模型有m个辅助节点;笔刷模型用抛物线模拟辅助面初始半径的变化,某一辅助面的初始半径r=a·s2+b·s+c,其中s是该辅助面中心的关键节点与根部关键节点之间的长度,抛物线系数a,b,c由三点确定,分别是根部辅助面,半径最大处的辅助面,和笔尖处辅助面在脊骨同一侧,且位于同一平面内的辅助节点的坐标值;模型骨架上添加表面,完成笔刷几何模型建立并显示;第二、动态控制模块形变控制曲线——空间形变的确定根据数位板和压力感应笔检测到的参数压感笔笔头的水平面x、z坐标,压力大小p,笔杆与水平面XZ的夹角α及笔杆在纸平面亦即水平面的投影与Z轴夹角β,唯一确定毛笔当前的空间位置;模块可将p通过公式y=(1-p/1024)*l(1-系统设定的脊骨长度)转换为y坐标,然后将(x,y,z)作为笔刷根部关键节点,即笔刷与笔杆连接处的空间位置;在竖直面内,几何约束可以抽象表示为●抛物线过P0点●抛物线过P1点●抛物线上过P1点的切线与X轴正向的夹角等于α●抛物线在P0点与P1点间的弧长等于sp可列求控制曲线待定系数方程组如下x0=av·y02+bv·y0+cvx1=av·y12+bv·y1+cvx′|y=y1=2av·y+bv∫y0y1ds=s⇒x0=av·y02+bv·y0+cvx1=av·y12+bv·y1+cvtan(π/2-α)=2av·y+bv∫y0y11+(2av·y+bv)2dy=s]]>x0,y0-P0点坐标x1,y1-P1点坐标α-过P1点的切线与X轴正向的夹角s-P0点到P1点的曲线弧长 av,bv,cv-抛物线线方程的待定系数在水平面内,几何约束可以抽象表示为●抛物线过P0′点●抛物线过P1′点●抛物线上过P1′点的切线与X轴正向的夹角等于α′●抛物线在P0′点与P1′点间的弧长等于sp对于水平面,可列求控制曲线待定系数程组如下tanα′=2ah·x1+bhz1=ah·x12+bh·x1+chz0=an·(x0′)2+bh·x0′+ch∫x0′x1ds=sp⇒tanα′=2ah·x1+bh0=ah·x12+bh·x1+chz0=ah·(x0′)2+bh·x0′+ch∫x0′x11+(2ah·x+bh)2dx=sp]]>x0′,z0-P0′点坐标x1,z1-P1′点坐标α′-过P1′点的切线与X轴正向的夹角sp-P0′点到P1′点的曲线弧长 ah,bh,ch-抛物线线方程的待定系数使用迭代求根法可以解出上述两个求解曲线待定系数的方程组,从而得到竖直面和水平面内的两条形变控制曲线,解出控制曲线后,通过它们求解各个关键节点在竖直面和水平面内的坐标,并将这两组坐标加以组合,就可以将两条控制曲线合成为笔刷的空间形变,其步骤为a)竖直面(XOY面)内得到的曲线方程x=av·y2+bv·y+cvb)水平面(XOZ面)内得到的曲线方程z=ah·x2+bh·x+chc)对于每一个关键节点P,设竖直面内该点到曲线段端点的弧长为ps,它在水平面上的对应长度psp,二者之间的关系近似为pspsp=ssp⇒psp=pss·sp]]> d)设P点待定3维坐标为(x,y,z),在两个平面内的对应点的平面坐标分别为竖直面内Pv(xv,yv),水平面内Ph(xh,yh),这两组坐标分别由以下两个方程组求得xv=av·yv2+bv·yv+cv∫yvy1ds=ps⇒(xv,yv)]]>zh=ah·xh2+bh·xh+ch∫xhx1ds=psp⇒(xh,zh)]]>e)(xh,yv,zh)即为关键节点P的3维坐标值;势能-阈值对——弯曲恢复程度、扭转程度的确定势能-阈值对在竖直面和水平面内的计算方法和比较过程是设k-势能调整系数,rid-硬度,wet-湿度,p-压力在竖直面内势能Ev=k·(Δθv)2,阈值Tv=δv·ridp·wet,]]>其中 恢复;若Ev>Tv则弯曲部分恢复后有残余形变,残余势能ΔE=Ev-Tv,脊骨仅能恢复到Ev=ΔE时的状态。在水平面内势能Eh=k·(Δθh)2,阈值Th=δh·p·wet·μ,其中, 若Eh≤Th则笔尖点未能摆脱摩擦力束缚,位置不变,扭转程度增大;若Eh>Th则恢复到Eh=Th,扭转程度达到最大笔刷受压形变——骨架中的一个辅助面即是笔刷的一个横截面,辅助面初始时类似于圆面,当笔刷与纸面接触并且受到下压力时,随着压力或者笔杆与纸面夹角的增大,它的各轴长度在垂直方向上减小,在水平方向上增大,从而变化为一个类椭圆面,但面积大小不变。依据辅助面面积守恒原理,首先找到一个到弯曲脊骨曲率最大处的距离最小的关键节点,确定以该节点为中心的辅助面的受挤压形变程度(即变为椭圆面后,椭圆面的长短轴大小),然后在该处形变的基础上求解一条表面形变控制曲线,该曲线确定其它辅助面的受挤压形变程度,所有的这些变化的集合就可以反映出笔刷的表面形变,步骤如下a)对一个特定时刻的弯曲脊骨确定其曲率最大处的关键节点——即检查以关键节点为中心的辅助面上是否有低于纸面的辅助节点,从脊骨根部点起向尖部点依次遍历,第一个满足这种情况的关键节点即作为曲率最大处的关键节点;b)计算以此关键节点为中心的辅助面的最短轴(即辅助面变形为椭圆面后,该椭圆面的短轴)距离——最短轴距离由该辅助面初始半径R与挤压比率f的乘积确定,即Rmin=R×f,挤压比率f与压力成正比,与脊骨长度成反比,与笔杆与纸面夹角成正比,公式为λ-调整因子(默认为0.24)a-笔杆与纸面夹角f=1-λ·ap/l,其中l-笔刷长度p-压力c)由脊骨尖部辅助面,最大曲率处辅助面和脊骨根部辅助面上的最长轴(即辅助面变形为椭圆面后,该椭圆面的长轴)在脊骨同一侧的辅助节点,确定一条水平面曲线方程z=ax2+bx+c;用这条根据已调整的辅助面上的节点得到的曲线调整其它辅助面;d)各辅助面最长轴所在直线的水平面投影与控制曲线有一个交点,该点到中心在水平面上的投影的距离即是其新的最长轴半径Rmax;依据面积守恒原理,受挤压时椭圆面的面积等于初始时圆面的面积,受挤压辅助面的椭圆的最短轴半径Rmin=R2/Rmax;e)根据新的最短轴半径调整各个辅助节点的3维空间坐标;第三、分叉模块依据输入的信息,判断是否应产生分叉,计算脊骨上开始产生分叉的关键节点位置,和分叉部分与主体部分之间的初始间隔,最后将对分叉部分的控制传递给动态控制模块;当毛笔承受的压力、倾斜角度和湿度的综合值c=λ*p*α/w(c-综合值、λ-调整因子、p-当前压力值、α-毛笔与XOZ面夹角、w-笔刷湿度)超过模块设定的限定值t后,即产生分叉,这里的限定值t是系统的预设值,通过实验确定,只有当c>t时才会出现分叉效果。同时调整因子变为其原值的q倍(0<q<1可由用户设定),以保证只有当压力再次超过某一定值后才会产生新的分叉,而不是陷入不断分叉的死循环中;开始产生分叉的关键节点由公式 (n-关键节点数,t-分叉限定值)确定;分叉脊骨与主脊骨的初始间隔大小与毛笔所受压力,以及持笔角度成比例关系,但在这一范围内又具有一定的随机性,公式为initGap=σ*p*α(initGap-初始分叉间隔;σ-随机因子,可由各种编程语言内含的随机数生成函数生成);分叉脊骨与主脊骨之间的偏移量主要体现在每一时刻变化开始时二者的尖端点在Z轴向的距离,这是一个动态变化的值,设定其公式为Gap=λ*p*α/w+initG其中Gap-分叉脊骨与主脊骨偏移量λ-调整因子p-毛笔所受下压力α-笔杆与纸面夹角w-笔刷当前湿度initGap-初始偏移量分叉控制模块在初始化分叉脊骨后,把对分叉脊骨运动变化的控制交给动态控制模块,动态控制模块把主脊骨在竖直面和水平面上控制曲线的参数传递给分叉脊骨,分叉脊骨根据这些参数●从主脊骨复制得到它自身在竖直面上的控制曲线,●分叉脊骨尖部点的z0坐标由主脊骨尖部点的z0坐标加上偏移量得到,由此确定它在水平面上的控制曲线;以上计算结束后,动态控制模块对分叉脊骨的控制就与主脊骨相同了;上述过程反复进行,即可对虚拟毛笔模型进行动态控制,在计算机屏幕上模拟出真实毛笔的运动变形并最终显示毛笔的笔迹。
全文摘要
基于压感笔等装置的三维毛笔模型与仿真方法。属于计算机模拟仿真技术领域。包括笔刷模型和动态控制模块与分叉控制模块组成。笔刷模型有骨架(由脊骨和辅助面组成)和表面两部分。动态控制模块综合分析从输入装置实时获得的方位信息,求解虚拟毛笔的形变控制曲线,从而调整毛笔几何模型以改变其形态。分叉模块依据输入的信息,判断是否应产生分叉,计算产生分叉的位置,和分叉部分与主体部分之间的初始间隔,最后将对分叉部分的控制传递给动态控制模块。本发明保证了动态控制的实时性,既能逼真地模拟毛笔的外部形态和动态变化,又能满足实时性要求。该仿真技术可以融合到各种绘图软件中,提供毛笔落在纸面上的笔迹,最终绘制出具有水墨效果的笔道。
文档编号G06T11/80GK1870052SQ20051011518
公开日2006年11月29日 申请日期2005年11月15日 优先权日2005年7月8日
发明者孙济洲, 孙美君, 王秀锦, 丁兆伟, 李继宗 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1