发明名称 头发模型建模方法
摘要 本发明公开了头发模型建模方法。首先采用发型约束域生成发型模型较为单一的发型,提供采用层次化的约束域队列控制复杂发丝形变,从而支持生成多样化发型;在此基础上建立任意虚拟角色模型间发型约束域的映射关系,实现虚拟角色发型的快速可复用建模。该方法扩展了发型约束域的普遍适用性,并把发型约束域方法与基于样例的发型建模相结合,使得采用发型约束方法能够生成的发型的多样化程度得到显著提高,同时支持在任意虚拟角色模型上快速复用已构建的发型约束,从而实现虚拟角色头发的快速可复用建模。
申请公布号 CN103035030A 申请公布日期 2013.04.10
申请号 CN201210527580.0 申请日期 2012.12.10
申请人 西北大学 发明人 耿国华;周明全;李康;韩翼;刘伦椿;尚鹏;任少平;贺洁琼;晋武侠;郝妮;杜宏强
分类号 G06T17/30(2006.01)I 主分类号 G06T17/30(2006.01)I
代理机构 西安恒泰知识产权代理事务所 61216 代理人 史玫
主权项 一种头发模型建模方法,其特征在于,该方法根据待生成整体发型的整体发型特征分别生成Q根样例发丝,然后用该Q根样例发丝分别表示各自所在发簇的形状,根据各样例发丝插值生成各自所在发簇内的剩余发丝,从而在目标虚拟角色模型上生成整体发型,该方法的具体步骤如下:步骤一,对于输入的目标虚拟角色模型,根据待生成整体发型的整体形状在目标虚拟角色模型上规定头发生长区域即头皮网格;采用网格参数化方法在头皮网格上建立目标虚拟角色模型的头皮网格参数域A;步骤二,生成Q根样例发丝的二维分布:(1)在头皮网格参数域A上生成全局发丝二维分布,将该结果映射至目标虚拟角色模型的头皮网格上;或者,在目标虚拟角色模型的头皮网格上生成全局发丝二维分布,将该结果映射至头皮网格参数域A上;(2)采用K均值聚类方法将头皮网格参数域A上的全局发丝二维分布均匀划分成Q簇,使用Q根样例发丝表示所在发簇的整体发丝形状,同时各样例发丝的发根均位于所在发簇的聚簇中心,进而得到Q根样例发丝的二维分布,再将该Q根样例发丝的二维分布映射至目标虚拟角色模型的头皮网格上;步骤三,构建发型约束域根据待生成整体发型中发丝的形状特征构建多个发型约束域;同时根据待生成整体发型的整体发型特征和局部发型特征采用层次化的多队列结构建立多个发型约束域相互之间的关系,得到控制全局发丝形状的发型约束域队列和控制局部发丝形状的发型约束域队列;其中:控制全局发丝形状的发型约束域队列为全局发型约束域队列,该全局发型约束域队列中的每个元素是由至少一个发型约束域组成的发型约束域集合,且该全局发型约束域队列中共包含多个发型约束域中的n个发型约束域;控制局部发丝形状的发型约束域队列为局部发型约束域队列,该局部发型约束域队列中的每个元素是由至少一个发型约束域组成的发型约束域集合,且该局部发型约束域队列中共包含多个发型约束域中除n个发型约束域外的m个发型约束域;其中,每个发型约束域的构建包括设定激活条件、消隐条件和作用力函数Str;所述激活条件为所构建的发型约束域开始影响生长发丝形状的条件;所述消隐条件为所构建的发型 约束域终止影响生长发丝形状的条件;所述作用力函数为所构建的发型约束域影响生长发丝形状时,该发型约束域对生长发丝产生的作用力向量;步骤四:采用下述方法在Q根样例发丝的二维分布上分别生成Q根样例发丝;Q根样例发丝均生成后得到样例发丝集合;根据全局发型约束域队列和局部发型约束域队列计算生成当前样例发丝,并且针对全局发型约束域队列和局部发型约束域队列同时进行下述步骤,下述方法中所述的发型约束域队列指全局发型约束域队列或局部发型约束域队列;(1)取出位于发型约束域队列队首的发型约束域集合F;(2)分别判断F中的各发型约束域是否满足激活条件,得到F中的K个满足激活条件的发型约束域;(3)计算K个满足激活条件的发型约束域施加在当前样例发丝生长端点Pi上的作用力之和t,t=∑Strk;其中:i为当前样例发丝的生长端点序号,当前样例发丝的生长起点P1为当前样例发丝在Q根样例发丝的二维分布中的顶点;Strk为第k个满足激活条件的发型约束域施加在当前样例发丝上的作用力分量,k=1,2,3,…,K,且K为大于等于1的正整数;(4)计算在t的作用下当前样例发丝生长端点Pi处产生的切线方向Ti+1,Ti+1=Ti+t,其中:Ti为生长端点Pi处的切线方向,Ti为P1在头皮网格上的法线方向;(5)计算当前样例发丝下一个生长端点的空间位置pi+1,pi+1=pi+sTi+1,其中:s为当前样例发丝的生长步长,且s>0;(6)分别判断F中的K个满足激活条件的发型约束域是否满足消隐条件,去除F中满足消隐条件的发型约束域;(7)判断F是否为空,当F为空时,将F从发型约束域队列移除;(8)判断全局发型约束域队列和局部发型约束域队列是否为空,当全局发型约束域队列和局部发型约束域队列均为空时,完成当前样例发丝的生长,完成生长后的当前样例发丝的 生长端点总个数为I;否则,执行步骤(9);(9)统计执行步骤(1)至(9)的迭代次数,当迭代次数达到常数G(G≥0)时,完成当前样例发丝的生长,完成生长后的当前样例发丝的生长端点总数为I;否则,迭代执行步骤(1)至(9);步骤五,根据样例发丝集合中的每根样例发丝插值计算生成样例发丝所在发簇中的其他发丝,从而在虚拟角色模型上生成整体发型。
地址 710069 陕西省西安市太白北路229号