残影生成方法、装置、存储介质与电子设备与流程

文档序号:30064802发布日期:2022-05-18 00:38阅读:278来源:国知局
残影生成方法、装置、存储介质与电子设备与流程

1.本公开涉及计算机技术领域,尤其涉及一种残影生成方法、残影生成装置、计算机可读存储介质与电子设备。


背景技术:

2.残影是指在进行画面切换时,可运动对象模型前一帧画面不会立刻消失,而是作为可运动对象模型后一帧画面的残影,与可运动对象模型后一帧画面同时出现。在一些动画制作过程中,有时会为动画中的可运动对象模型增加残影效果,以此来增强动画表现力,从而提升玩家的观赏体验。
3.相关技术中,在进行残影制作时,通常会在三维制作软件中对当前场景已有的可运动对象模型进行复制,然后对复制后的模型进行虚化,再逐帧减小其透明度,加大其粗糙度,得到残影模型。但是这种方式会由于额外的模型复制,造成大量的内存占用,导致残影模型渲染速度较慢。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开提供了一种残影生成方法、残影生成装置、计算机可读存储介质与电子设备,进而至少在一定程度上解决相关技术中残影占用内存较大且渲染速度较低的问题。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开的第一方面,提供一种残影生成方法,所述方法包括:获取待处理的目标对象模型在关键动画帧的姿态信息;根据所述目标对象模型在关键动画帧的姿态信息,确定所述目标对象模型所对应的多个残影顶点;基于各所述残影顶点所对应的上下游关系,将各所述残影顶点进行连接,生成所述目标对象模型的残影。
8.在本公开的一种示例性实施例中,所述根据所述目标对象模型在关键动画帧的姿态信息,确定所述目标对象模型所对应的多个残影顶点,包括:根据所述目标对象模型在关键动画帧的姿态信息,确定所述目标对象模型所对应的多个模型顶点在模型空间内的相对位置信息;根据所述多个模型顶点在模型空间内的相对位置信息,从所述多个模型顶点中确定多个残影顶点。
9.在本公开的一种示例性实施例中,所述根据所述多个模型顶点在模型空间内的相对位置信息,从所述多个模型顶点中确定多个残影顶点,包括:将所述多个模型顶点在模型空间内的相对位置信息进行空间转换,得到所述多个模型顶点在世界空间内的绝对位置信息;将所述多个模型顶点在世界空间内的绝对位置信息进行空间转换,得到所述多个模型顶点在观察空间内的相对位置信息;根据每个模型顶点在观察空间内的相对位置信息,从所述多个模型顶点中确定残影顶点。
10.在本公开的一种示例性实施例中,所述根据每个模型顶点在观察空间内的相对位置信息,从所述多个模型顶点中确定残影顶点,包括:根据所述模型顶点在所述观察空间内的相对位置信息,确定观察相机的观察方向;判断所述观察相机的观察方向与所述模型顶点的法线方向之间的夹角是否在预设角度范围内;若所述观察相机的观察方向与所述模型顶点的法线方向之间的夹角在预设角度范围内,则将所述模型顶点作为残影顶点。
11.在本公开的一种示例性实施例中,所述方法还包括:基于观察相机的二维观察平面,判断是否存在包含有重合残影顶点的残影顶点组;若存在包含有重合残影顶点的残影顶点组,则根据所述残影顶点组中所包含的重合残影顶点与所述观察相机之间的距离,确定所述残影顶点组所对应的替换顶点,并将所述替换顶点替换掉所述残影顶点组中所包含的重合残影顶点。
12.在本公开的一种示例性实施例中,所述根据所述残影顶点组中所包含的重合残影顶点与所述观察相机之间的距离,确定所述残影顶点组所对应的替换顶点,包括:将所述残影顶点组中距离所述观察相机最近的重合残影顶点以及距离所述观察相机最远的重合残影顶点的中心点作为所述替换顶点。
13.在本公开的一种示例性实施例中,所述基于各所述残影顶点所对应的上下游关系,将各所述残影顶点进行连接,生成所述目标对象模型的残影,包括:从所述残影顶点中提取多个残影边界顶点以及多个残影轮廓顶点;将各所述残影边界顶点以及各所述残影轮廓顶点基于各所述残影顶点所对应的上下游关系,进行连接,生成所述目标对象模型的残影。
14.在本公开的一种示例性实施例中,所述从所述残影顶点中提取多个残影边界顶点以及多个残影轮廓顶点,包括:根据观察相机的观察方向与所述残影顶点的法线方向之间的夹角,判断所述残影顶点是否为残影边界顶点;根据与所述残影顶点相连的模型边和所述残影顶点的法线平面中任一条线的夹角,判断所述残影顶点是否为残影轮廓顶点。
15.在本公开的一种示例性实施例中,所述基于各所述残影顶点所对应的上下游关系,将各所述残影顶点进行连接,生成所述目标对象模型的残影,还包括:基于各所述残影顶点所对应的上下游关系,将各所述残影顶点之间通过特定形态曲线进行连接,生成所述目标对象模型的残影,所述特定形态曲线两端细中间粗。
16.在本公开的一种示例性实施例中,所述方法还包括:根据观察相机的相机状态,更新所述目标对象模型的残影。
17.在本公开的一种示例性实施例中,所述根据观察相机的相机状态,更新所述目标对象模型的残影,包括:响应于所述观察相机与所述目标对象模型之间的距离从小于预设距离变为大于预设距离,将所述目标对象模型的残影中进行连接的所述特定形态曲线转换成圆柱体结构;响应于所述观察相机与所述目标对象模型之间的距离从大于预设距离变为小于预设距离,将所述目标对象模型的残影中进行连接的圆柱体结构转换成所述特定形态的曲线。
18.在本公开的一种示例性实施例中,所述根据观察相机的相机状态,更新所述目标对象模型的残影,还包括:若所述观察相机发生旋转,则根据所述观察相机的旋转信息,为所述目标对象模型确定新的残影顶点。
19.在本公开的一种示例性实施例中,将所述目标对象模型在多个连续关键动画帧所
对应的残影进行叠加显示。
20.根据本公开的第二方面,提供一种残影生成装置,所述装置包括:姿态获取模块,用于获取待处理的目标对象模型在关键动画帧的姿态信息;顶点提取模块,用于根据所述目标对象模型在关键动画帧的姿态信息,确定所述目标对象模型所对应的多个残影顶点;残影生成模块,用于基于各所述残影顶点所对应的上下游关系,将各所述残影顶点进行连接,生成所述目标对象模型的残影。
21.根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述残影生成方法。
22.根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述残影生成方法。
23.本公开的技术方案具有以下有益效果:
24.上述残影生成过程中,获取待处理的目标对象模型在关键动画帧的姿态信息;根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个残影顶点;基于各残影顶点所对应的上下游关系,将各残影顶点进行连接,生成目标对象模型的残影。一方面,通过连接所提取的残影顶点生成残影,无需对动画场景中的目标对象模型进行大量的拷贝复用,不仅可以减少内存占用,降低内存开销,进而提升残影的渲染速度。另一方面,基于顶点上下游关系,将各残影顶点进行连接,可形成目标对象模型的残影线条,不仅便于动画师了解模型结构,以进一步提升残影制作效率,还有利于形成卡通风格的残影,从而适用于二次元的风格化场景需求。
25.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
26.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1示出本示例性实施方式中一种残影生成方法的流程图;
28.图2示出本示例性实施方式中一种确定目标对象模型所对应的多个残影顶点的流程图;
29.图3示出本示例性实施方式中一种目标对象模型的示意图;
30.图4示出本示例性实施方式中一种正方体模型的正交视图的示意图;
31.图5示出本示例性实施方式中一种目标对象模型及其所对应的残影的示意图;
32.图6a和图6b示出本示例性实施方式中目标对象模型局部模型顶点的示意图;
33.图7示出本示例性实施方式中一种目标对象模型在多个动画帧的残影示意图;
34.图8示出本示例性实施方式中一种残影制作的具体实施流程图;
35.图9a和图9b示出本示例性实施方式中在游戏动画场景中生成一系列残影的示意图;
36.图10示出本示例性实施方式中一种残影生成装置的结构框图;
37.图11示出本示例性实施方式中一种用于实现上述残影生成方法的电子设备。
具体实施方式
38.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
39.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
40.相关技术中,在进行残影制作时,由于额外的模型复制,会造成大量的内存占用,动画师在制作过程中会用相当多的一部分时间进行模型的加载和导入,给动画制作造成了不便,而且还会极大减慢动画场景的渲染速度,在后期合成或者导入引擎时会消耗大量的时间成本。
41.鉴于上述一个或多个问题,本公开的示例性实施方式提供一种残影生成方法,可应用于游戏的动画制作场景,可以留下目标对象模型的运动踪迹残影,从而表现出目标对象模型运动速度迅捷的效果,例如忍者突进场景。该残影生成方法可以运行于终端设备或者是服务器。其中,终端设备可以为本地终端设备,例如pc(personal computer,个人计算机)、手机、平板电脑等。当该残影生成方法运行于服务器时,该方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
42.图1示出了本示例性实施方式中一种残影生成方法,具体包括以下步骤s110至s130:
43.步骤s110,获取待处理的目标对象模型在关键动画帧的姿态信息;
44.步骤s120,根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个残影顶点;
45.步骤s130,基于各残影顶点所对应的上下游关系,将各残影顶点进行连接,生成目标对象模型的残影。
46.上述过程中,一方面,通过连接所提取的残影顶点生成残影,无需对动画场景中的目标对象模型进行大量的拷贝复用,不仅可以减少内存占用,降低内存开销,进而提升残影的渲染速度。另一方面,基于顶点上下游关系,将各残影顶点进行连接,可形成目标对象模型的残影线条,不仅便于动画师了解模型结构,以进一步提升残影制作效率,还有利于形成卡通风格的残影,从而适用于二次元的风格化场景需求。
47.下面分别对图1中的每个步骤进行具体说明。
48.步骤s110,获取待处理的目标对象模型在关键动画帧的姿态信息。
49.待处理的目标对象模型指的是需进行残影特效处理的可运动对象模型,包括但不限于目标动画中的虚拟人物、虚拟动物、动漫人物等不透明模型,可如图3中的模型301所示。目标对象模型在关键动画帧的姿态信息指的是目标对象模型在关键动画帧的动作、姿势等姿态信息。
50.步骤s120,根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个残影顶点。
51.残影顶点指的是构建残影形状以及结构的关键性顶点,具体可以为根据目标对象模型在关键动画帧的姿态信息所确定的模型顶点。
52.在一种可选的实施方式中,步骤s120中根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个残影顶点,可通过图2所示的步骤来实现,具体包括以下步骤s210至步骤s220:
53.步骤s210,根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个模型顶点在模型空间内的相对位置信息;
54.步骤s220,根据多个模型顶点在模型空间内的相对位置信息,从多个模型顶点中确定多个残影顶点。
55.上述图2所示的步骤中,通过确定目标对象模型所对应的多个残影顶点,为残影模型的构建提供了基础架构。
56.具体的,在步骤s210中,根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个模型顶点在模型空间内的相对位置信息。
57.模型顶点指的是构建目标对象模型的关键性顶点。通常目标对象模型可由内部模型顶点以及外部模型顶点构成,由于内部模型顶点对用户可见的模型外观不产生影响,因而在执行步骤s210前,还可以通过对该目标对象模型的模型顶点进行深度检测,以剔除内部模型顶点,保留外部模型顶点,这样即可以减少后续需要进行处理的顶点数量,加快残影生成的效率,也不会影响到所呈现的残影效果。
58.模型顶点在模型空间内的相对位置信息可以是以模型空间的坐标原点为基准的相对位置坐标,这里可根据目标对象模型在关键动画帧的姿态信息,通过python编程接口读取到此刻目标对象模型各个模型顶点在模型空间的坐标。需要说明的是,模型空间也被称为对象空间或局部空间,不同目标对象模型具有自己独立的坐标空间,当它移动或旋转的时候,模型空间也会跟着它移动和旋转,可以将目标对象模型的底部中心作为模型空间的坐标原点(0,0,0)。
59.具体的,在步骤s220中,根据多个模型顶点在模型空间内的相对位置信息,从多个模型顶点中确定多个残影顶点。
60.在一种可选的实施方式中,上述根据多个模型顶点在模型空间内的相对位置信息,从多个模型顶点中确定多个残影顶点,可以通过以下方式来实现:将多个模型顶点在模型空间内的相对位置信息进行空间转换,得到多个模型顶点在世界空间内的绝对位置信息;将多个模型顶点在世界空间内的绝对位置信息进行空间转换,得到多个模型顶点在观察空间内的相对位置信息;根据每个模型顶点在观察空间内的相对位置信息,从多个模型
顶点中确定残影顶点。
61.需要说明的是,世界空间是一个特殊的坐标系,以世界坐标原点为中心点,目标对象模型在世界空间中会发生旋转,平移,缩放。观察空间即观察相机所能观察到的空间,决定了渲染游戏所使用的视角,在观察空间中,观察相机位于观察空间的原点。通过对模型顶点相对位置信息的空间转换,得到残影模型结构,并在观察空间中渲染最终形成残影图像,相比于传统的通过复制模型,并对所复制的模型进行虚化等一系列处理,具有更小的内存开销。
62.其中,上述在将多个模型顶点在模型空间内的相对位置信息进行空间转换,得到多个模型顶点在世界空间内的绝对位置信息的过程,可以为将模型顶点在模型空间下的坐标转化为世界空间下的坐标的过程。具体实现过程可如下所示:首先根据目标对象模型在世界空间中的缩放、旋转、平移,构建一个4*4矩阵其中matrix
3*3
表示目标对象模型的旋转和缩放变换,transform
3*1
表示目标对象模型的平移变换,将该4*4矩阵进行平移标准变换矩阵、旋转标准变换矩阵、缩放标准变换矩阵的相乘,最终得到一个复合矩阵,将所得到的复合矩阵作为该目标对象模型从模型空间到世界空间的变换矩阵matrix
model
。接着计算position
world
=matrix
model
position
model
,即将变换矩阵matrix
model
与模型顶点在模型空间内的坐标position
model
进行相乘,得到模型顶点在世界空间下的坐标position
world

63.其中,上述将多个模型顶点在世界空间内的绝对位置信息进行空间转换,得到多个模型顶点在观察空间内的相对位置信息的过程,可以为将模型顶点在世界空间下的坐标变换到观察空间下的坐标的过程。具体的,可将世界空间到观察空间的变换矩阵乘以模型顶点在世界空间下的坐标,得到模型顶点在观察空间下的坐标。
64.其中,上述根据每个模型顶点在观察空间内的相对位置信息,从多个模型顶点中确定残影顶点,可以通过以下方式来实现:根据模型顶点在观察空间内的相对位置信息,确定观察相机的观察方向;判断观察相机的观察方向与模型顶点的法线方向之间的夹角在预设角度范围内;若观察相机的观察方向与模型顶点的法线方向之间的夹角在预设角度范围内,则将模型顶点作为残影顶点。
65.观察相机的观察方向指的是观察相机对该模型顶点的观察方向,观察相机到模型顶点的射线即为观察相机对该模型顶点的观察方向。模型顶点的法线可通过python编程接口读取模型空间的相关数据获得,需要说明的是,所获取的模型顶点的法线方向若不是向外朝向的,则需要对该法线方向进行反转并保存,以确保所获取的模型法线是向外朝向的。
66.具体的,可以通过以下方式来判断观察相机的观察方向与模型顶点的法线方向之间的夹角是否在预设角度范围内:首先将观察相机的观察方向以及模型顶点的法线方向进行归一化处理后,进行点积运算,计算点积值,基于该点积值来判断观察相机的观察方向与模型顶点的法线方向之间的夹角是否在预设角度范围内,例如夹角不超过90
°
。其中,计算点积值的过程可如下所示:ruest=dot(normalize(radial),normalize(normal)),其中dot()表示normalize(radial)以及normalize(normal)之间的点积运算,normalize()表示归一化运算,radial为观察相机的观察方向,normal为模型顶点的法线方向。若ruest为正值,则可认为观察相机的观察方向与模型顶点的法线方向之间的夹角小于90
°
;若ruest
为零,则可认为观察相机的观察方向与模型顶点的法线方向之间的夹角为90
°
;若ruest为负值,则可认为观察相机的观察方向与模型顶点的法线方向之间的夹角大于90
°

67.需要说明的是,观察相机的观察方向与模型顶点的法线方向之间的夹角大于90
°
,则说明该模型顶点此时位于观察空间内目标对象模型的背面,该目标对象模型为不透明模型时,观察相机无法直接观察到目标对象模型的背面,因而通过上述操作可以进一步剔除掉部分位于目标对象模型背面的冗余顶点。
68.此外,由于在观察空间中观察相机所观察到的视图为二维观察平面,因而在模型边界线的位置,可能会出现重合的残影顶点。为了便于说明顶点重合状态,这里以正方体模型为例进行说明,如图4中的正方体模型401所示,a边在正交视图即为一个点,所得到的正方形边框402视图即为二维表现效果,在该种情况下该正方体模型401的顶点存在重合现象。
69.在一种可选的实施方式中,还可以基于观察相机的二维观察平面,判断是否存在包含有重合残影顶点的残影顶点组;若存在包含有重合残影顶点的残影顶点组,则根据残影顶点组中所包含的重合残影顶点与观察相机之间的距离,确定残影顶点组所对应的替换顶点,并将替换顶点替换掉残影顶点组中所包含的重合残影顶点。
70.重合残影节指的是从观察相机的二维观察平面来看发生了重合的残影顶点,残影顶点组由发生重合的残影顶点所组成。这里可以将发生重合的残影顶点进行分组,并确定各个残影顶点组所对应的替换顶点,以便替换掉发生重合的残影顶点,以在一定程度上简化残影结构。
71.在一种可选的实施方式中,根据残影顶点组中所包含的重合残影顶点与观察相机之间的距离,确定残影顶点组所对应的替换顶点,还可以通过以下方式来确定:将残影顶点组中距离观察相机最近的重合残影顶点以及距离观察相机最远的重合残影顶点的中心点作为替换顶点。
72.上述过程通过将残影顶点组中距离观察相机最近的重合残影顶点以及距离观察相机最远的重合残影顶点的中心点作为替换顶点,以将多个重合残影顶点融合为一个残影顶点。
73.步骤s130,基于各残影顶点所对应的上下游关系,将各残影顶点进行连接,生成目标对象模型的残影。
74.残影顶点的顶点上下游关系指的是残影顶点与其他残影顶点之间的连接关系。需要说明的是,若残影顶点中存在替换顶点,还可以将替换顶点所对应的残影顶点组中距离观察相机最近的重合残影顶点所对应的残影顶点连接关系作为该替换顶点的上下游关系。
75.这里可预先通过api(application programming interface,应用程序接口)查询到各模型顶点所连接的其他模型顶点的上下游关系,通过键值对的方式存入一个字典,在使用时可根据残影顶点与模型顶点的对应关系直接读取该字典,获取到各残影顶点所对应的上下游关系。
76.如图5所示,将目标对象模型301经过上述残影生成处理后,可得到残影模型501。
77.在一种可选的实施方式中,上述步骤s130中基于各残影顶点所对应的上下游关系,将各残影顶点进行连接,生成目标对象模型的残影,可以通过以下方式来生成:从残影顶点中提取多个残影边界顶点以及多个残影轮廓顶点;将各残影边界顶点以及各残影轮廓
顶点基于各残影顶点所对应的上下游关系,进行连接,生成目标对象模型的残影。
78.上述过程中,通过区分残影轮廓顶点以及残影边界顶点,可以避免目标对象模型过于复杂造成残影结构混乱的问题。
79.在一种可选的实施方式中,上述从残影顶点中提取多个残影边界顶点以及多个残影轮廓顶点,具体可以通过以下方式来实现:根据观察相机的观察方向与残影顶点的法线方向之间的夹角,判断残影顶点是否为残影边界顶点;根据与残影顶点相连的模型边和残影顶点的法线平面中任一条线的夹角,判断残影顶点是否为残影轮廓顶点。
80.残影边界顶点可以是在观察空间中呈现出目标对象模型边界的模型顶点,残影轮廓顶点可以是在观察空间中呈现出目标对象模型轮廓的模型顶点。
81.若观察相机的观察方向与残影顶点的法线方向之间的夹角为90
°
,即观察相机的观察方向与残影顶点的法线方向垂直,则可以认为该残影顶点为在观察空间中能够呈现出目标对象模型边界的模型顶点,即残影边界顶点。
82.残影顶点的法线平面为垂直于残影顶点法线的平面,可在该法线平面中选取任意一条线,将与残影顶点相连的模型边以及所选取的任意一条线进行归一化后,进行点积计算,若该点积值趋近于零,则认为该点为模型的平滑顶点,如图6a所示的目标对象模型301的手背局部,手背部顶点所相连的模型边与切线空间的边点积值较小。若该点积值大于预设点积值,即与残影顶点相连的模型边和残影顶点的法线平面中任一条线的夹角大于一定角度时,则可以认为该残影顶点为在观察空间中呈现出目标对象模型轮廓的模型顶点,即残影轮廓顶点。如图6b所示的目标对象模型301的手腕接口局部,其中箭头所指的模型顶点所对应的法线平面中的线与经过该模型顶点的四条模型边之间存在有点积值较大的值。
83.通常情况下,在确定目标对象模型的轮廓边时会采用边界搜索的方式,为表现出硬边效果,会在模型顶点之间的接口线的上面和下面各加一条离得很近的线进行加固,这些线一般也为轮廓线,然后利用api接口来查找这些加固边,从而定位到相应轮廓顶点,但在一些高模等精细化程度非常高的模型中,边与边之间间隔紧密,不容易定位到加固边,容易出现错误,缺乏普遍适用性。通过本公开中所描述的确定残影轮廓顶点的方式可以在一定程度上增强普遍适应性。
84.在一种可选的实施方式中,上述步骤s130中基于各残影顶点所对应的上下游关系,将各残影顶点进行连接,生成目标对象模型的残影,还可以通过以下方式来实现:基于各残影顶点所对应的上下游关系,将各残影顶点之间通过特定形态曲线进行连接,生成目标对象模型的残影,特定形态曲线两端细中间粗。
85.进行连接的曲线中间粗两头细,可以使线条更富有层次感,在视觉呈现效果上会增强线条流畅感。
86.此外,在实现上述特定形态曲线效果时,可预先利用python的接口重写curve类,采用阶段式分布,在曲线的顶点处线条比较细,到中间位置线条逐渐加粗,到另一个顶点处又逐渐变细。再者,还可以使重写的curve类支持颜色信息,以便可以生成自定义颜色的连接残影顶点的曲线,以满足多样化的用户需求。
87.在一种可选的实施方式中,还可以根据观察相机的相机状态,更新目标对象模型的残影。
88.相机状态可例如观察相机的平移、旋转等运动状态。根据相机状态来更新目标模
型的残影,使得残影可随观察相机的观察视角实时发生变化,能够增强残影的立体感。
89.当相机发生平移时,即观察相机与目标对象模型之间的距离发生变化时,在一种可选的实施方式中,根据观察相机的相机状态,更新目标对象模型的残影,可以通过以下方式来实现:响应于观察相机与目标对象模型之间的距离从小于预设距离变为大于预设距离,将目标对象模型的残影中进行连接的特定形态曲线转换成圆柱体结构;响应于观察相机与目标对象模型之间的距离从大于预设距离变为小于预设距离,将目标对象模型的残影中进行连接的圆柱体结构转换成特定形态曲线。
90.预设距离可为预先配置好的距离值。例如,当观察相机远离目标对象模型且二者之间的距离超过50米时,该目标对象模型的残影开始转换为由圆柱体连接的残影;当观察相机靠近目标对象模型且二者之间的距离小于50米时,该目标对象模型的残影则自适应变成特定形态曲线连接的残影。
91.如果目标对象模型的精度较低的话,在远处看起来线条会比较模糊,没有层次感,远距离变为圆柱体模型使得线条更加厚实,两头细中间粗的设定也使得线条更富有层次感,较易吸引人注意。
92.需要说明的是,上述在将特定形态曲线转换成圆柱体时,可以以该曲线上若干个点作为圆心,往外挤出半径在一个区间的值的圆,并连接上下游变成一个圆柱体。
93.在一种可选的实施方式中,根据观察相机的相机状态,更新目标对象模型的残影,还包括:若观察相机发生旋转,则根据观察相机的旋转信息,为目标对象模型确定新的残影顶点。
94.当观察相机发生旋转时,由于观察视角发生了旋转,所能观察到模型顶点也发生了变化,因而在这种情况下,需要重新找寻新的残影顶点,并重新生成残影并覆盖原残影,从而增强残影的立体感。
95.在一种可选的实施方式中,还可以将目标对象模型在多个连续关键动画帧所对应的残影进行叠加显示。
96.可以预先从目标动画中设定几个的连续关键动画帧,并根据目标对象模型在这些连续关键动画帧处的姿态信息,生成多个残影,将这些残影进行叠加显示,以形成连贯的动画重影特效,以方便观察目标对象模型的运动逻辑,具体呈现效果可如图7所示。
97.需要说明的是,在选取关键动画帧时,还可以通过ui(user interface,用户界面)设定划分时间节点,利用脚本自动计算时间节点确定关键动画帧,以确定目标对象模型在特定的关键动画帧处的残影。
98.如图8所示,本公开还提供一种残影制作的具体实施方式可包括以下步骤:
99.步骤s801,获取待处理的目标对象模型在关键动画帧的姿态信息;
100.步骤s802,根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个模型顶点在模型空间内的相对位置信息;
101.步骤s803,将多个模型顶点在模型空间内的相对位置信息进行空间转换,得到多个模型顶点在世界空间内的绝对位置信息;
102.步骤s804,将多个模型顶点在世界空间内的绝对位置信息进行空间转换,得到多个模型顶点在观察空间内的相对位置信息;
103.步骤s805,根据模型顶点在观察空间内的相对位置信息,确定观察相机的观察方
向;
104.步骤s806,判断观察相机的观察方向与模型顶点的法线方向之间的夹角是否不超过90
°
;若观察相机的观察方向与模型顶点的法线方向之间的夹角不超过90
°
,则将模型顶点作为残影顶点;
105.步骤s807,基于观察相机的二维观察平面,判断是否存在包含有重合残影顶点的残影顶点组;若存在包含有重合残影顶点的残影顶点组,则将残影顶点组中距离观察相机最近的重合残影顶点以及距离观察相机最远的重合残影顶点的中心点作为替换顶点,并将替换顶点替换掉残影顶点组中所包含的重合残影顶点;
106.步骤s808,根据观察相机的观察方向与残影顶点的法线方向之间的夹角,判断残影顶点是否为残影边界顶点;根据与残影顶点相连的模型边和残影顶点的法线平面中任一条线的夹角,判断残影顶点是否为残影轮廓顶点;
107.步骤s809,将各残影边界顶点以及各残影轮廓顶点基于各残影顶点所对应的上下游关系,进行曲线连接,生成目标对象模型的残影。
108.通过图8所制作出的残影效果可以替代以往传统残影的虚化叠加减小透明度的做法,更加简便高效,并且由于曲线占用内存更小,可以极大提高场景的渲染速度,以快速进入后期环节。
109.此外,图9a和图9b提供了在游戏动画场景中生成一系列残影的示意图。其中,图9a提供了一个没有残影的初版动画场景示意图,图9b在图9a基础上提供了包含多个关键动画帧所对应的残影的动画场景示意图。
110.本公开的示例性实施方式还提供一种残影生成装置,如图10所示,该残影生成装置1000可以包括:
111.姿态获取模块1010,用于获取待处理的目标对象模型在关键动画帧的姿态信息;
112.顶点提取模块1020,用于根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个残影顶点;
113.残影生成模块1030,用于基于各残影顶点所对应的上下游关系,将各残影顶点进行连接,生成目标对象模型的残影。
114.在一种可选的实施方式中,顶点提取模块1020,可以包括:顶点位置信息确定模块,用于根据目标对象模型在关键动画帧的姿态信息,确定目标对象模型所对应的多个模型顶点在模型空间内的相对位置信息;残影顶点确定模块,用于根据多个模型顶点在模型空间内的相对位置信息,从多个模型顶点中确定多个残影顶点。
115.在一种可选的实施方式中,残影顶点确定模块,可以包括:第一空间转换模块,用于将多个模型顶点在模型空间内的相对位置信息进行空间转换,得到多个模型顶点在世界空间内的绝对位置信息;第二空间转换模块,用于将多个模型顶点在世界空间内的绝对位置信息进行空间转换,得到多个模型顶点在观察空间内的相对位置信息;残影顶点确定子模块,用于根据每个模型顶点在观察空间内的相对位置信息,从多个模型顶点中确定残影顶点。
116.在一种可选的实施方式中,残影顶点确定子模块,可以被配置为:根据模型顶点在观察空间内的相对位置信息,确定观察相机的观察方向;判断观察相机的观察方向与模型顶点的法线方向之间的夹角是否在预设角度范围内;若观察相机的观察方向与模型顶点的
法线方向之间的夹角在预设角度范围内,则将模型顶点作为残影顶点。
117.在一种可选的实施方式中,残影生成装置1000,还可以包括:重合顶点确定模块,用于基于观察相机的二维观察平面,判断是否存在包含有重合残影顶点的残影顶点组;顶点替换模块,用于若存在包含有重合残影顶点的残影顶点组,则根据残影顶点组中所包含的重合残影顶点与观察相机之间的距离,确定残影顶点组所对应的替换顶点,并将替换顶点替换掉残影顶点组中所包含的重合残影顶点。
118.在一种可选的实施方式中,顶点替换模块中可以将残影顶点组中距离观察相机最近的重合残影顶点以及距离观察相机最远的重合残影顶点的中心点作为替换顶点。
119.在一种可选的实施方式中,残影生成模块1030,还可以包括:残影顶点分类确定模块,用于从残影顶点中提取多个残影边界顶点以及多个残影轮廓顶点;残影顶点连接模块,用于将各残影边界顶点以及各残影轮廓顶点基于各残影顶点所对应的上下游关系,进行连接,生成目标对象模型的残影。
120.在一种可选的实施方式中,残影顶点分类确定模块,可以被配置为:根据观察相机的观察方向与残影顶点的法线方向之间的夹角,判断残影顶点是否为残影边界顶点;根据与残影顶点相连的模型边和残影顶点的法线平面中任一条线的夹角,判断残影顶点是否为残影轮廓顶点。
121.在一种可选的实施方式中,残影生成模块1030,还可以包括:残影生成子模块,用于基于各残影顶点所对应的上下游关系,将各残影顶点之间通过特定形态曲线进行连接,生成目标对象模型的残影,所述特定形态曲线两端细中间粗。
122.在一种可选的实施方式中,残影生成装置1000,可以包括:残影更新模块,用于根据观察相机的相机状态,更新目标对象模型的残影。
123.在一种可选的实施方式中,残影更新模块,可以包括:相机移动处理模块,用于响应于观察相机与目标对象模型之间的距离从小于预设距离变为大于预设距离,将目标对象模型的残影中进行连接的特定形态曲线转换成圆柱体结构;响应于观察相机与目标对象模型之间的距离从大于预设距离变为小于预设距离,将目标对象模型的残影中进行连接的圆柱体结构转换成特定形态曲线。
124.在一种可选的实施方式中,残影更新模块,还可以包括:相机旋转处理模块,用于若观察相机发生旋转,则根据观察相机的旋转信息,为目标对象模型确定新的残影顶点。
125.在一种可选的实施方式中,残影生成装置1000,可以包括:叠加显示模块,用于将所述目标对象模型在多个连续关键动画帧所对应的残影进行叠加显示。
126.上述残影生成装置1000中各部分的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。
127.本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述残影生成方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。该程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、
装置或者器件使用或者与其结合使用。
128.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
129.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
130.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
131.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
132.本公开的示例性实施方式还提供了一种能够实现上述残影生成方法的电子设备。下面参照图11来描述根据本公开的这种示例性实施方式的电子设备1100。图11显示的电子设备1100仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
133.如图11所示,电子设备1100可以以通用计算设备的形式表现。电子设备1100的组件可以包括但不限于:至少一个处理单元1110、至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130和显示单元1140。
134.存储单元1120存储有程序代码,程序代码可以被处理单元1110执行,使得处理单元1110执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元1110可以执行图1、图2、图8中任意一个或多个方法步骤。
135.存储单元1120可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1121和/或高速缓存存储单元1122,还可以进一步包括只读存储单元(rom)1123。
136.存储单元1120还可以包括具有一组(至少一个)程序模块1125的程序/实用工具1124,这样的程序模块1125包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
137.总线1130可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
138.电子设备1100也可以与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1100交互的设备通信,和/或与使得该电子设备1100能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1150进行。并且,电子设备1100还可以通过网络适配器1160与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1160通过总线1130与电子设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
139.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施方式的方法。
140.此外,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
141.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
142.所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
143.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1