法律状态公告日
法律状态信息
法律状态
2012-07-18
授权
授权
2011-08-10
实质审查的生效 IPC(主分类):G06T17/00 申请日:20110114
实质审查的生效
2011-06-15
公开
公开
技术领域
本发明涉及计算机领域,特别涉及一种3D实时山水画中特征线的提取与渲染方法。
背景技术
近年来,随着计算机图形学技术深入研究,数字媒体产业得到迅猛发展,许多水墨画风格的图像或图形渲染技术也随之产生。传统的山水画绘制技法多样且复杂,必须经过专门的学习才能够得到应用,并且由于山水画绘制本身的复杂性,手工绘制效率较低,加上山水画本身是二维图像,使得山水画艺术风格在三维动画应用方面存在着诸多不便。因此,山水画的动态实时仿真研究在动画、游戏等方面有着较高的实际应用意义。
目前已经存在许多山水画的渲染仿真方法。这些方法大多是根据三维模型的几何特征,提取简单的轮廓线等特征信息,将这些特征信息投影到二维平面上进行连接处理,最后利用纹理映射进行渲染或者根据特殊的笔墨系统进行绘制,中间处理过程复杂,并且为了达到更好的效果一般要加上手工操作。这一类方法渲染结果以形成一副二维图像为主,不具有帧间连续性,不能直接应用于三维动态渲染;另外也存在这一些直接在三维模型上进行渲染的研究方法,这些方法一般只提取三维轮廓线,并没有进一步提取其他有用几何特征信息,在渲染效果上并不能够仔细详尽的表示水墨画尤其是山水画应有的艺术特征。
发明内容
为了能够满足帧间连续性,提取有用几何特征信息,达到实时的渲染速度,本发明提供了一种3D实时山水画中特征线的提取与渲染方法,该方法包括以下步骤:
(1)根据山水画的技法和特征将山水画的线皴信息分为动态特征线和静态特征线;
(2)根据轮廓线提取公式提取轮廓线作为第一种动态特征线;
(3)根据径向曲率方程提取扩展轮廓线作为第二种动态特征线;
(4)根据最大主曲率构造静态特征线;
(5)采用第一函数对所述第一种动态特征线进行渲染;
(6)采用第二函数对所述第二种动态特征线进行渲染;
(7)根据第三函数设定所述静态特征线的宽度范围,采用第四函数对所述静态特征线进行渲染;
(8)判断是否停止渲染,如果是,流程结束,如果否,重新执行步骤(5)。
所述径向曲率方程具体为:
kr=0,0<Dw(kr)<λ(1/||viewdir||)
其中,Dw(kr)为kr在w方向的方向导数,λ是手动设置参数,||viewdir||为视线向量的模。
步骤(4)中的所述根据最大主曲率构造静态特征线具体为:
1)根据每个三角面片中顶点的平均曲率计算每个三角面片平均曲率值、所有顶点平均曲率的平均值cur_test和所有顶点的平均高度h_test;
2)遍历山体模型中所有的三角面片,判断当前三角面片的平均曲率是否满足第一判断条件,如果是,执行步骤3),如果否,遍历所述当前三角面片的下一个三角面片;
3)建立静态特征线,获取所述当前三角面片的中心、最大主曲率、最小主曲率、第一主方向平均值dirs_1和第二主方向平均值dirs_2;
其中,
normalize为向量归一化函数,ki_1为三角面片中第i个顶点的最大主曲率,ki_2为三角面片中第i个顶点的最小主曲率,diri_1为第i个顶点的最大主曲率所在主方向,diri_2为第i个顶点的最小主曲率所在主方向;
4)根据所述静态特征线中当前顶点的位置和方向判断是否满足第二判断条件,如果是,执行步骤5);如果否,执行步骤6);
5)获取所述静态特征线下一个顶点,计算所述下一个顶点的方向和向量;
6)判断所述静态特征线中点的个数是否大于2,如果大于2,保留所述静态特征线;如果否,不保留;最后,返回步骤2),遍历下一个三角面片。
所述第一判断条件具体为:
cur_test(2h_test-h)>θ(h_test)cur_test
其中,θ为第一预设值,h表示三角面片的高度信息。
所述第二判断条件具体为:
当前顶点所在边为三维网格模型的边界线;或,
遇到山谷和山脊;或,
当前顶点的主曲率满足|kp1_1|+|kp1_2|<θ2cur_test
其中,kp1_1为当前顶点的最大主曲率,kp1_2为当前顶点的最小主曲率,θ为第一预设值;或,
当前顶点最大主曲率所在主方向dirp1_1与前一顶点最大主曲率所在主方向dirlast_1的点积小于第一预设值。
步骤(5)中的所述第一函数具体为:
其中,normal·viewdir为顶点法向量与视线向量的点积,dir1表示最大主曲率所在主方向。
步骤(6)中的所述第二函数具体为:
其中,Dw(kr)为顶点的径向曲率在w方向的导数,B为第二预设值,dir1表示最大主曲率所在主方向。
步骤(7)中的所述第三函数具体为:
width1=min(0.5m,max(0,wx))
width2=min(0.5m,max(0,wy))
其中,宽度整体范围为[0,m],x为长度,y为长度;
第四函数具体为:
其中,k1为顶点的最大主曲率,k2为顶点的最小主曲率。
所述方法还包括:采用第五函数对静态特征线进行渲染。
所述第五函数具体为:
color=color1(1-|(normal·viewdir)(lightdir·viewdir)w|)
+color2|(normal·viewdir)(lightdir·viewdir)w|
其中,color1为纹理颜色,color2为背景颜色,normal·viewdir为顶点法向量与视线向量的点积,lightdir·viewdir为光源的光线方向与视线向量的点积。
本发明提供的技术方案的有益效果是:
本发明提供了一种3D实时山水画中特征线的提取与渲染方法,该方法实现了更好的自然分布和帧间连续性,本方法完全基于连续的数学公式和函数进行特征线提取、构造和渲染,因此本渲染效果具有非常合理的自然连续性,更合理逼真的绘制效果;在渲染效果方面,本方法根据山水画的分布进行提取和构建第一动态特征线、第二动态特征线和静态特征线,因此渲染效果非常合理,同时由于采用了多种渲染方式,因此效果更加逼真;本方法在保证效果逼真的前提下,还保证了渲染所具有的实时性,提高了渲染效率。
附图说明
图1为本发明提供的3D实时山水画中特征线的提取与渲染方法的流程图;
图2a为本发明提供的视线向量在切平面上的投影示意图;
图2b为本发明提供的视线向量在径向平面上的投影示意图;
图3为本发明提供的生成第二种动态特征线的效果图;
图4为本发明提供的生成静态特征线的效果图;
图5为本发明提供的纹理图;
图6为本发明明提供的第二种动态特征线的渲染效果图;
图7为本发明提供的静态特征线端点与视线、边棱的位置关系图;
图8为本发明提供的动态特征线的渲染效果图;
图9为本发明提供的最终渲染效果图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了能够满足帧间连续性,提取有用几何特征信息,达到实时的渲染速度,本发明实施例提供了一种3D实时山水画中特征线的提取与渲染方法,参见图1,该方法主要包括以下步骤:
101:根据山水画的技法和特征将山水画的线皴信息分为动态特征线和静态特征线;
其中,传统山水画是一个静态的二维图像,不满足三维连续渲染的需要。为了能够在三维山体模型上进行连续渲染,本发明实施例根据山水画的技法和特征将山水画的线皴信息分为动态特征线和静态特征线,其中动态特征线随着视角的变化而变化,主要代表轮廓线;静态特征线不随视角变化而变化,主要代表沟壑、缝隙等。动态特征线可以直接根据三维山体模型的位置信息进行提取,但由于三维网格模型的简单粗糙以及山水画技法等原因,不能够直接提取静态特征线,本发明实施例根据微分几何相关知识和山水自然形成的特征构建静态特征线。
102:根据轮廓线提取公式提取轮廓线作为第一种动态特征线;
山水画技法中用动态特征线来区分山与山、山与背景之间的连接。本发明实施例根据轮廓线提取公式提取轮廓线作为第一种动态特征线。参见图2a和图2b,轮廓线提取公式如下:
normal·viewdir=0,其中normal为顶点法向量,viewdir为视线向量。
103:根据径向曲率方程提取扩展轮廓线作为第二种动态特征线;
根据微分几何相关知识可知,轮廓线在端点处满足如下特征:kr=0。其中kr为径向曲率,它表示山体表面在w方向的曲率,w方向为视线向量viewdir在切平面上的投影方向。为了能够与轮廓线进行衔接配合,作为轮廓线的扩展和补充,进一步的表示山水画的动态详细特征,本发明实施例根据径向曲率方程提取扩展轮廓线作为第二种动态特征线,径向曲率方程具体为:
kr=0,0<Dw(kr)<λ(1/||viewdir||)
其中,Dw(kr)为kr在w方向的方向导数,λ是手动设置参数,||viewdir||为视线向量的模,通过对λ的控制,可以控制第二种动态特征线的显示范围和大小。参见图3,给出了生成第二种动态特征线的效果图。
104:根据最大主曲率构造静态特征线;
根据山水画的技法特征,静态特征线用于代表山水画中表示山石的纹理以及植被等特征的线条,由于这些特征是自然形成的,不会随着位置改变而改变,同时由于山体模型表面特征粗糙,在三维网格模型中无法直接提取,因此本发明实施例根据最大主曲率构造静态特征线,详见下文描述:
1041:根据每个三角面片中顶点的平均曲率计算每个三角面片平均曲率值、所有顶点平均曲率的平均值和所有顶点的平均高度;
其中,每个三角面片平均曲率值所有顶点平均曲率的平均值cur_test和所有顶点的平均高度h_test。
1042:遍历山体模型中所有的三角面片,判断当前三角面片的平均曲率是否满足第一判断条件,如果是,执行步骤1043,如果否,遍历当前三角面片的下一个三角面片;
其中,第一判断条件为:cur_test(2h_test-h)>θ(h_test)cur_test,θ为第一预设值,h表示三角面片的高度信息,θ的取值根据实际应用中的情况进行设定,一般取值θ=1/3。
1043:建立静态特征线,获取当前三角面片的中心、最大主曲率、最小主曲率、第一主方向平均值dirs_1和第二主方向平均值dirs_2;
建立静态特征线staticline,设置起始点s信息,起始点s的位置poss为当前三角面片的中心,根据最大主曲率计算公式获取最大主曲率ks_1、最小主曲率计算公式获取最小主曲率ks_2、第一主方向平均值计算公式获取第一主方向平均值dirs_1和第二主方向平均值计算公式获取第二主方向平均值dirs_2,计算公式如下:
normalize为向量归一化函数,ki_1为三角面片中第i个顶点的最大主曲率,ki_2为三角面片中第i个顶点的最小主曲率,diri_1为第i个顶点的最大主曲率所在主方向,diri_2为第i个顶点的最小主曲率所在主方向;
将起始点s加入静态特征线staticline中作为当前顶点p1,用posp1、kp1_1、kp1_2、dirp1_1、dirp1_2表示p1的位置、最大主曲率、最小主曲率以及两者的主方向。
1044:根据静态特征线中当前顶点p1的位置和方向判断是否满足第二判断条件,如果是,执行步骤1045;如果否,执行步骤1046;
其中,第二判断条件具体为:
当前顶点所在边为三维网格模型的边界线;或,
遇到山谷和山脊;或,
当前顶点的主曲率满足|kp1_1|+|kp1_2|<θ2cur_test
其中,kp1_1为当前顶点的最大主曲率,kp1_2为当前顶点的最小主曲率,θ为第一预设值;或,
当前顶点最大主曲率所在主方向dirp1_1与前一顶点最大主曲率所在主方向dirlast_1的点积小于第一预设值,公式表示如下:
dirp1_1·dirlast_1<θ
1045:获取静态特征线下一个顶点p2,计算下一个顶点p2的方向和向量;
假定静态特征线staticline的当前顶点p1与主曲率方向dirp1_1所构成直线line,所指向的下一个三角面片Tri(如果p1为静态特征线staticline的起始点,那么Tri为p1所在三角面片)。三角面片Tri的法向量N,三个顶点为V1、V2、V3,三条边为第一条边l1、第二条边l2、第三条边l3,则直线line与第一条边l1、第二条边l2、第三条边l3至少有两个交点。如果顶点p1为staticline的起始点,那么选取与dirp1_1方向一致的顶点作为p2;如果顶点p1不是staticline的起始点,则这两个顶点其中必有一个为p1,选取另一个顶点作为p2。将顶点p2追加入静态特征线staticline中,作为静态特征线staticline的当前顶点,返回步骤1044。下面以l1为例来说明计算下一个顶点的方向和向量的具体方法:
1、求取直线line与三角面片Tri的法向量N所在平面F的法向量Nf=dirp1×N;
2、计算第一条边l1与平面F交点参数t0;
其中,第一条边l1表示为l1=t(V1-V0)+V0,计算第一条边l1与平面F交点参数t0为:
3、判断交点参数t0是否满足第三判断条件,如果是,获取到的位置为下一个顶点p2的位置,执行步骤4;如果否,判断直线line与第二条边的交点;
其中,第三判断条件为t0∈[0,1],且(t0(V1-V0)+V0-posp1)·dirp1_1>0,令t=t0,将t0带入上述公式,获取到的位置为下一个顶点p2的位置。
同理,当执行完第二条边,还不满足第三判断条件时,则判断直线line与第三条边的交点,在此不再赘述。
4、利用插值法求取下一个顶点p2的方向和向量。
假定V0、V1的最大主曲率为kv0_1、kv1_1,所在主方向为dirv0_1、dirv1_1,最小主曲率为kv0_2、kv1_2,所在主方向为dirv0_2、dirv1_2,求取p2的位置posp2,主曲率kp2_1、kp2_2,主方向dirp2_1、dirp2_2,计算公式如下:
posp2=t0(V1-V0)+V0
kp2_i=kv0_i(1-t0)+kv1_it0
dirp2_i=normalize(dirv0_i(1-t0)+dirv1_it0)
其中i=1,2,函数normalize为向量归一化函数。
1046:判断静态特征线中点的个数是否大于2,如果大于2,保留静态特征线;如果否,不保留;最后,执行步骤1042,遍历下一个三角面片。
其中,静态特征线中点的个数小于2时,该静态特征线不能正确的表示山水画特征,舍去该静态特征线;如果否,将静态特征线staticline存储为一条静态特征线,执行步骤1041,遍历下一个三角面片,求取下一条静态特征线。图4中,给出了生成静态特征线的效果图,该特征线基本符合山水分布的静态特征信息,可以在山水画实时线皴仿真渲染中进行使用。
105:采用第一函数对第一种动态特征线进行渲染;
本发明实施例利用二维纹理映射技术对第一种动态特征线和第二种动态特征线进行渲染,主要涉及特殊的纹理要求和关键的纹理映射函数。本发明实施例提供的纹理图形式大致如图5所示,映射坐标范围满足u∈[0.0,1.0],v∈[0.0,1.0],v=0.5是纹理图的中心线,最大宽度为A∈(0,0.5),最恰当取值应该在A∈(0.05,0.2),在笔迹宽度上应该存在变化,用来模仿画家运笔时的用力效果。一般地,在u=0.0和u=1.0附近位置尽量出现一些白色空隙,表示笔迹的开始和结束。
针对第一种动态特征线,本发明实施例采用第一函数进行坐标映射,其中,第一函数为:
其中,normal·viewdir具体为顶点法向量与视线向量的点积,表示垂直方向坐标;dir1表示最大主曲率所在主方向,利用径向曲率所在的方向向量w与dir1的夹角来表示水平方向坐标。
106:采用第二函数对第二种动态特征线进行渲染;
针对第二种动态特征线,本发明实施例采用第二函数对第二种动态特征线进行渲染,其中,第二函数为:
其中,Dw(kr)为顶点的径向曲率在w方向的导数,B为第二预设值,dir1表示最大主曲率所在主方向。B的取值根据实际应用情况进行设定,具体实现时,本发明实施例对此不做限制。第二种动态特征线的渲染效果如图6,该部分渲染效果在整体上保证帧间连续性,满足了三维动态渲染需要。
107:根据第三函数设定静态特征线的宽度范围,采用第四函数对静态特征线进行渲染;
本发明实施例中设置的静态特征线的宽度整体范围为[0,m],根据w设置基本宽度信息。如图7所示,假定静态特征线中一个顶点p将一条棱边AB分为长度为x、y的两部分,那么静态特征线在此处的宽度可由两边的宽度width1、width2表示,第三函数为:
width1=min(0.5m,max(0,wx))
width2=min(0.5m,max(0,wy))
其中,宽度整体范围为[0,m],x为长度,y为长度;静态特征线的总宽度可以使用width1+width2计算得到。根据width1、width2计算纹理映射的横坐标位置信息,其中映射坐标v=0处点位于P点沿PA方向width1距离处,v=1.0处点位于P点沿PB方向width2距离处。
在实际山体模型中,沟壑纹理都是存在着一些差异,这些差异在山水画中利用线条的粗细和浓淡表示。本发明实施例对每一条静态特征线中的每一段随机设置静态参数w∈[0,1]来表示这种现实中存在的差异,对静态特征线的粗细和浓淡进行控制。静态特征线采用与动态特征线相似的纹理映射方式,纹理需求保持不变,但是映射函数有一定区别。根据山水画技法和特征,本发明实施例设定静态特征线横坐标保持不变,其中,第四函数为:
其中,k1为顶点的最大主曲率,k2为顶点的最小主曲率。
108:判断是否停止渲染,如果是,流程结束,如果否,重新执行步骤105。
为了能够表示山水画的特有风格,根据山水画中阴阳相背的关系,以及颜色的浓淡,本发明实施例还包括:采用第五函数对静态特征线进行渲染。
其中,第五函数具体为:
color=color1(1-|(normal·viewdir)(lightdir·viewdir)w|)
+color2|(normal·viewdir)(lightdir·viewdir)w|
其中,color1为纹理颜色,color2为背景颜色,normal·viewdir为顶点法向量与视线向量的点积,lightdir·viewdir为光源的光线方向与视线向量的点积。
根据水墨画的特点,在阳面和阴面设置显示阈值为[C1,+∞],[-∞,C2],根据山水绘画特征设置|C1|>|C2|,用于保证阳面显示的特征线少于阴面。在满足上述条件的基础上,为了表示颜色的浓淡,本发明实施例在纹理映射的基础上采用颜色混合,利用(1-|c|)作为颜色的混合参数将当前纹理颜色与背景颜色进行混合,在不考虑纹理映射的情况下,渲染的效果如图8所示。图9为通过本方法得到的最终的渲染效果图,通过该图验证了本方法的可行性,得到了合理逼真的绘制效果。
综上所述,本发明实施例提供了一种3D实时山水画中特征线的提取与渲染方法,该方法实现了更好的自然分布和帧间连续性,本方法完全基于连续的数学公式和函数进行特征线提取、构造和渲染,因此本渲染效果具有非常合理的自然连续性,更合理逼真的绘制效果;在渲染效果方面,本方法根据山水画的分布进行提取和构建第一动态特征线、第二动态特征线和静态特征线,因此渲染效果非常合理,同时由于采用了多种渲染方式,因此效果更加逼真;本方法在保证效果逼真的前提下,还保证了渲染所具有的实时性,提高了渲染效率。
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 角色动画中一种高效的实时皮肤皱纹渲染方法和装置
机译: 角色动画中一种高效的实时皮肤褶皱渲染方法及装置
机译: 实时渲染3d对象交互式多视图系统和处理实时渲染3d对象的方法