首页 / 一种增量式动态调整羽毛覆盖的方法

一种增量式动态调整羽毛覆盖的方法有效专利 发明

技术领域

[0001] 本发明属于计算机图形学技术领域,涉及在三维模型上进行羽毛覆盖的方法,具体涉及一种增量式动态调整羽毛覆盖的方法。

相关背景技术

[0002] 鸟类角色常见于电影、动画短片、计算机游戏等作品中,羽毛作为鸟类最重要的特征,对鸟类模型进行羽毛覆盖是提高角色真实感和表现力的重要手段。
[0003] 羽毛覆盖的要点在于保证羽毛之间不发生穿插,否则将产生明显的视觉失真。由于羽毛特殊的薄片结构、以及数量多、排列有序、相互间紧密影响等特点,一般的刚体碰撞检测、碰撞避免算法并不适用。因此,在计算机图形学领域,羽毛在模型全身的覆盖问题通常作为单独的问题被看待。
[0004] Chen等(Yanyun  Chen,Yingqing Xu,BainingGuo,and  Heung-Yeung Shum.Modeling and rendering of realistic feathers.ACM Trans.Graph.,21(3):630–636,July 2002)根据羽毛的初始朝向,计算出相邻羽毛间的先后顺序,再以递归的方法对羽毛进行调整,其中碰撞检测是将羽毛简化成三角面片,执行三角形对三角形的碰撞穿透测试。然而,该方法的对羽毛次序的定义过于简单,容易造成优先级冲突等问题,碰撞测试也过于粗暴(brute-force),导致计算量太大以及羽毛调整的灵活度不高,同时也没有提出对于动画模型的羽毛调整策略。
[0005] Bangay(Shaun Bangay.Animated feather coats using feld lines.In Proceedings ofthe5th International Conference on Computer Graphics,Virtual Reality,Visualisation and Interaction in Africa,AFRIGRAPH’07,pages 169–176,New York,NY,USA,2007)提出将用于毛发建模的、无碰撞的场线(field lines)扩展到二维,在模型表面的周围空间设计、构建出一个三维向量场,通过将羽毛对齐到该向量场,即认为羽毛之间是无碰撞的。但该方法生成的羽毛实际是平行的,而非彼此紧密依靠,与现实情况不大相符,而且对于尺寸较大或者有一定厚度的羽毛也无法保证碰撞不发生;对于动画模型,该方法要求手动指定起止帧的向量场,对每一帧重新生成羽毛。
[0006] Weber和Gornowicz(Andrew J.Weber and Galen Gornowicz.Collision-free construction of animated feathers using implicit constraint surfaces.ACM Trans.Graph.,28(2):12:1–12:8,May 2009)定义了的隐式约束表面(implicit constraint surface),直接从定义上避免任意两个不同的隐式约束表面的碰撞,因此通过将羽毛紧贴到这样的表面,即实现了无碰撞羽毛的建模。该方法取得了不错的效果并应用到了动画电影中,只是计算代价较大,对于动画中的每一帧需要将全身羽毛重新生成一遍。
[0007] Liu等(Le Liu,Xiaosheng Li,Yanyun Chen,Xuehui Liu,Jianjun Zhang,Enhua Wu.An Efficient Feathering System with Collision Control.Computer Graphics Forum,34:279–288,2015)同样采用了基于次序的调整策略,但重新定义了相邻羽毛之间的优先级,并进一步提出利用高度场对羽毛进行调整。该方法相对之前的方法大大地提升了计算效率,对于动画模型,也提出了粗略的增量式调整方法;但动画中羽毛的优先级关系是可能发生变化的,该方法没有针对此问题提出相应的解决方案,因此调整效果不够稳定及鲁棒,往往在一定帧数之后羽毛就无法再紧贴于皮肤表面,使得皮肤表面被裸露出来。

具体实施方式

[0034] 下面通过具体实施例并配合附图,对本发明做详细的说明。
[0035] 图1为本发明的技术方案流程图,以第k帧的动画模型作为输入(包含了每根羽毛的生长点从第k-1帧到第k帧的变换矩阵),输出为针对该帧的调整结果。本发明基于依序调整羽毛的思想,先定义了相邻羽毛之间的优先级,进而计算出全身羽毛的生长次序。针对动画模型,本发明无需重新计算全身羽毛的生长次序,只需要找出相对上一帧优先级关系发生了变化的羽毛进行部分重排序即可。计算出待调整的羽毛集合后,依序对集合内的羽毛应用羽毛调整算法,并在调整过程中根据需要及时更新待调整的羽毛集合,直到全部调整完成。
[0036] 图1的各个步骤具体介绍如下:
[0037] 1)计算邻域表面发生了相对变化的羽毛集合。
[0038] 当采用依序调整的方法进行羽毛调整,对每根羽毛进行调整时只需考虑与它邻近的羽毛。从第k-1帧到第k帧,如果邻近的羽毛没有发生变化,那么这根羽毛也就无需调整,这就是增量式调整的思想。为了先粗略找出需要被调整的羽毛集合,对于每一根羽毛i,计算它的生长点的变换矩阵 与任一位于它邻域内的羽毛j的变换矩阵 的差值:
[0039]
[0040] 如果满足:
[0041] ∑|mij|<∈
[0042] 则说明羽毛i应该被纳入调整范围。其中∈为用户指定的阈值,可用于控制被调整羽毛的范围。
[0043] 2)对于上述的羽毛集合,重新计算它们的优先级关系,进行部分重排序并更新待调整的羽毛集合。
[0044] 每根羽毛i与邻近的羽毛 可以进行优先级的比较,优先级高的表示位于更低的层次,被优先级低的羽毛所覆盖。对于羽毛A和羽毛B,它们之间的优先级差 如下定义:
[0045]
[0046] 其中:
[0047]
[0048] bA=(nA×oA)/|nA×oA|
[0049]
[0050] 限制条件为:
[0051]
[0052] 式中rA和rB分别为羽毛A和B的生长点位置,nA和OA分别为羽毛A的生长点的表面法向和羽毛主轴的朝向, 表示羽毛A的邻域,λ和γ为用户的输入参数,用于适配不同的输入模型。 表示羽毛B相对羽毛A具有更高优先级,反之同理。
[0053] 该定义由Liu等(Le Liu,Xiaosheng Li,Yanyun Chen,Xuehui Liu,Jianjun Zhang,Enhua Wu.An Efficient Feathering System with Collision Control.Computer Graphics Forum,34:279–288,2015)提出的定义改进而来,主要差别在于使用了羽毛朝向在生长点切平面的投影,而非直接使用羽毛抽象,避免了在调整羽毛前后优先级关系发生变化,以适用于动画模型的羽毛覆盖的动态调整。
[0054] 如果羽毛对A和B的优先级发生变化,需要对它们进行重排序。例如,若PAB<0变为PAB>0,表示需要令羽毛B在生长次序中优先于羽毛A。这一过程可以使用PK算法(David J.Pearce and Paul H.J.Kelly.A dynamic topological sort algorithm for directed acyclic graphs.J.Exp.Algorithmics,11,February 2007)进行部分重排序。如果在重排序过程中引入了有向环,可使用(Le Liu,Xiaosheng Li,Yanyun Chen,Xuehui Liu,Jianjun Zhang,Enhua Wu.An Efficient Feathering System with Collision Control.Computer Graphics Forum,34:279–288,2015)中的贪心策略将环消除。一般来说,两帧之间需要被重排序的羽毛并不多,因此大部分羽毛的次序无需改动,故此过程称为部分重排序。需要注意的是,应该所有被重排序的羽毛插入到待调整的羽毛集合。
[0055] 3)在羽毛调整过程中及时更新待调整的羽毛集合。
[0056] 部分重排序之后,依序对2)中更新后的羽毛集合进行调整。这里可以使用任意依序调整羽毛的方法,如基于高度场的调整算法(Le Liu,Xiaosheng Li,Yanyun Chen,Xuehui Liu,Jianjun Zhang,Enhua Wu.An Efficient Feathering System with Collision Control.Computer Graphics Forum,34:279–288,2015)。每根羽毛调整结束之后,记录其调整程度。在相邻帧之间,大部分羽毛的调整程度可能是轻微的,对此设置一个阈值,如果羽毛的调整程度超过这个阈值,才认为该羽毛的变动需要被传播出去。对于符合条件的羽毛,与它邻近的羽毛中相较具有更低优先级的羽毛应该被插入到待调整的羽毛集合中。
[0057] 图2为应用现有的增量式动态调整技术在一定帧数之后得到的羽毛覆盖效果,图3为采用本发明方法得到的羽毛覆盖效果。可以看出,本发明方法有效避免了羽毛调整的相干性问题,保证了羽毛覆盖的规则性及一致性,提高了调整过程的稳定性。同时,与其他非增量式的羽毛覆盖方法相比,本发明方法由于减少了被调整羽毛的数量,可以有效提高调整效率。
[0058] 总之,本发明对动画模型实现增量式的羽毛调整并保证调整的稳定性,避免对每一帧重新生成全身羽毛,从而有效地减少计算量,提升羽毛动态调整的效率。该方法独立于静态的羽毛调整算法,因此,与不同的静态羽毛调整算法进行结合均可获得不同程度的效率提升。
[0059] 提供以上实例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

当前第1页 第1页 第2页 第3页