一种面部动画模型处理方法、装置、电子设备及存储介质与流程
本申请涉及计算机技术领域,尤其涉及一种面部动画模型处理方法、装置、电子设备及存储介质。
背景技术:
目前,在常见的游戏捏脸功能中,用户可以自由调节面部各部位的大小、位置、角度、样式等等,提高玩家的沉浸感和游戏的交互性。
在捏脸过程中,为了满足用户多种捏脸效果需求,各参数调节阈值较大。当捏脸时存在面部装饰物,如口罩、面具、面纱、刘海、发饰等时,捏脸后的脸型如果过于夸张,超出原始脸型过多,在与面部装饰物进行组合则容易出现面部装饰物与面部不跟随,发生穿帮现象。
技术实现要素:
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种面部动画模型处理方法、装置、电子设备及存储介质。
根据本申请实施例的一个方面,提供了一种面部动画模型处理方法,包括:
获取面部骨骼对应的调节参数;
确定与所述面部骨骼关联的面部装饰物骨骼;
根据所述调节参数调节所述面部装饰物骨骼;
对调节后的面部装饰物骨骼进行蒙皮处理,得到调节后的面部动画模型。
可选的,所述面部装饰物骨骼与所述面部骨骼采用相同布线网格。
可选的,所述对调节后的面部装饰物骨骼进行蒙皮处理,包括:
获取所述面部骨骼对应的第一蒙皮权重;
将所述第一蒙皮权重作为所述调节后的面部装饰物骨骼的第二蒙皮权重;
根据所述第二蒙皮权重对所述调节后的面部装饰物骨骼进行蒙皮处理。
可选的,所述方法还包括:
在所述面部装饰物运动过程中,对所述面部装饰物骨骼进行碰撞检测;
当检测到所述面部装饰物骨骼与碰撞体发生碰撞时,将所述面部装饰物骨骼从当前位置移开。
可选的,所述方法还包括:
当获取到对所述面部骨骼的第一缩放操作时,确定所述面部骨骼对应的碰撞体;
根据所述第一缩放操作执行对所述碰撞体的第二缩放操作。
可选的,所述确定与所述面部骨骼关联的面部装饰物骨骼,包括:
获取所述面部骨骼对应的调整骨骼,所述调整骨骼与所述面部动画模型绑定并继承所述面部骨骼的坐标;
确定与所述调整骨骼关联的所述面部装饰物骨骼。
可选的,所述方法还包括:
根据第一塌陷策略执行对所述面部动画模型的塌陷操作,得到第一塌陷动画模型;
对所述第一塌陷动画模型进行渲染;
在服务器中存储所述面部动画模型;
当接收到对所述第一塌陷动画模型的调整操作时,从所述服务器获取所述面部动画模型;
对所述面部动画模型执行所述调整操作,得到更新面部动画模型;
根据第二塌陷策略执行对所述更新动画模型的塌陷操作,得到第二塌陷动画模型;
对所述第二塌陷动画模型进行渲染;
在所述服务器中存储所述更新面部动画模型。
根据本申请实施例的另一个方面,提供了一种面部动画模型处理装置,包括:
获取模块,用于获取面部骨骼对应的调节参数;
确定模块,用于确定与所述面部骨骼关联的面部装饰物骨骼;
调节模块,用于根据所述调节参数调节所述面部装饰物骨骼;
蒙皮处理模块,用于对调节后的面部装饰物骨骼进行蒙皮处理,得到调节后的面部动画模型。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本申请实施例的另一个方面,提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
面部装饰物骨骼与关联的面部骨骼共用捏脸的调节参数,即面部装饰物骨骼跟随面部骨骼进行修改变化,从而避免在捏脸时由于面部骨骼变化过大,面部装饰物不跟随的问题,防止穿帮现象发生,使得用户可以自由捏脸,提高捏脸效果的准确度和自然度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种面部动画模型处理方法的流程图;
图2a为本申请实施例提供的面部装饰物示意图;
图2b为本申请实施例提供的捏脸后的面部装饰物示意图;
图2c为本申请另一实施例提供的捏脸后的面部装饰物示意图;
图3为本申请另一实施例提供的一种面部动画模型处理方法的流程图;
图4为本申请另一实施例提供的一种面部动画模型处理方法的流程图;
图5a为本申请实施例提供的刘海示意图;
图5b为本申请另一实施例提供的刘海示意图;
图5c为本申请另一实施例提供的刘海示意图;
图6为本申请实施例提供的面部骨骼层级示意图;
图7为本申请另一实施例提供的一种面部动画模型处理方法的流程图;
图8为本申请另一实施例提供的一种面部动画模型处理方法的流程图;
图9为本申请实施例提供的一种面部动画模型处理装置的框图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例,在捏脸时对面部骨骼调节后,基于面部骨骼的调节参数同步调节面部装饰物骨骼,在添加面部装饰物蒙皮,使得面部装饰物跟随面部骨骼,避免穿帮。
下面首先对本发明实施例所提供的一种面部动画模型处理方法进行介绍。
图1为本申请实施例提供的一种面部动画模型处理方法的流程图。如图1所示,该方法包括以下步骤:
步骤s11,获取面部骨骼对应的调节参数;
步骤s12,确定与面部骨骼关联的面部装饰物骨骼;
步骤s13,根据调节参数调节面部装饰物骨骼;
步骤s14,对调节后的面部装饰物骨骼进行蒙皮处理,得到调节后的面部动画模型。
通过上述步骤s11至步骤s14,面部装饰物骨骼与关联的面部骨骼共用捏脸的调节参数,即面部装饰物骨骼跟随面部骨骼进行修改变化,从而避免在捏脸时由于面部骨骼变化过大,面部装饰物不跟随的问题,防止穿帮现象发生,使得用户可以自由捏脸,提高捏脸效果的准确度和自然度。
可选的,面部装饰物骨骼与面部骨骼采用相同布线网格。
图2a为本申请实施例提供的面部装饰物示意图。如图2a所示,将面部装饰物靠近面部区域的布线网格调整到和面部的布线网格一致。
图2b为本申请实施例提供的捏脸后的面部装饰物示意图。如图2b所示,当调节眉间距后,位于眉部的面部装饰物跟随调整。
图2c为本申请另一实施例提供的捏脸后的面部装饰物示意图。如图2c所示,当旋转眼睛和眉头骨骼后,位于眼部和眉头的面部装饰物骨骼跟随调整。
图3为本申请另一实施例提供的一种面部动画模型处理方法的流程图。如图3所示,上述步骤s14包括以下步骤:
步骤s21,获取面部骨骼对应的第一蒙皮权重;
步骤s22,将第一蒙皮权重作为调节后的面部装饰物骨骼的第二蒙皮权重;
步骤s23,根据第二蒙皮权重对调节后的面部装饰物骨骼进行蒙皮处理。
本实施例中,在添加面部装饰物蒙皮时,面部装饰物骨骼的权重与其关联的面部骨骼权重一致,这样,即便面部骨骼发生较大变化,面部装饰物能够与面部装饰物骨骼跟随面部骨骼变形,提高蒙皮的平滑度,避免穿帮现象的发生。
在可选实施例中,由于面部装饰物还包括刘海,当捏脸时,如果脸颊放大过多,可能会出现刘海穿过人脸的穿帮现象。为解决该问题,本实施例中,对采用动态骨骼制作的发型增加对面部骨骼的碰撞检测。
图4为本申请另一实施例提供的一种面部动画模型处理方法的流程图。如图4所示,该方法还包括:
步骤s31,在面部装饰物运动过程中,对面部装饰物骨骼进行碰撞检测;
步骤s32,当检测到面部装饰物骨骼与碰撞体发生碰撞时,将面部装饰物骨骼从当前位置移开。
本实施例中,可以为面部骨骼添加包围盒(boundingbox)作为碰撞体,当检测到面部装饰物骨骼运动到包围盒的坐标位置时,确定发生碰撞。
可选的,也可以为面部骨骼创建额外的碰撞骨骼,将碰撞骨骼作为碰撞体,当检测到面部装饰物骨骼运动到碰撞骨骼的坐标位置时,确定发生碰撞。
可选的,也可以直接为面部骨骼设置碰撞器(collider),直接检测面部装饰物骨骼与面部骨骼之间的位置关系来确定是否发生碰撞。
可选的,当面部骨骼发生缩放时,碰撞体也相应进行缩放。该方法还包括:当获取到对面部骨骼的第一缩放操作时,确定面部骨骼对应的碰撞体;根据第一缩放操作执行对碰撞体的第二缩放操作。
这样,当面部骨骼放大时,碰撞体随之放大,可以更加准确地检测到面部装饰物骨骼与面部骨骼的碰撞。
图5a为本申请实施例提供的刘海示意图。如图5a所示,当脸颊骨骼正常情况下,刘海51与脸颊骨骼face对应的碰撞体52不发生碰撞,则头发自然垂下。
图5b为本申请另一实施例提供的刘海示意图。如图5b所示,当脸颊骨骼face放大时,其对应的碰撞体52也相应放大,刘海51与碰撞体52发生碰撞后被推开。
图5c为本申请另一实施例提供的刘海示意图。如图5c所示,当脸颊骨骼face缩小时,其对应的碰撞体52也相应缩小,此时可以对刘海与头部骨骼head对应的碰撞体进行碰撞检测,以避免刘海在运动过程中穿过头部,发生穿帮。
本申请实施例中,捏脸骨骼同属于头部骨骼子集。图6为本申请实施例提供的面部骨骼层级示意图。如图6所示,头部骨骼head的子集骨骼包括头部调节骨骼head_adjust,各捏脸骨骼a、b、c……n作为头部调节骨骼head_adjust的子骨骼。
由于各面部骨骼之间存在一定关联关系,例如,当要旋转眼睛时,除了调整右眼眶骨骼eye_socket_r旋转,还需调整右内外眼角骨骼eye_corner_r_02和eye_corner_r_01的位移和旋转得到的综合效果;同时,左眼眶骨骼eye_socket_l、左内外眼角骨骼eye_corner_l_02和eye_corner_l_01也相应进行调整,以保证左右眼对称调节。
图7为本申请另一实施例提供的一种面部动画模型处理方法的流程图。如图7所示,该方法还包括以下步骤:
步骤s51,确定面部骨骼对应的关联骨骼;
步骤s52,获取面部骨骼对应的第一权重及关联骨骼对应的第二权重;
步骤s53,根据面部骨骼对应的调节参数、第一权重和第二权重,确定关联骨骼对应的调整参数;
步骤s54,根据关联骨骼对应的调整参数对关系骨骼进行调整。
本实施例中,当用户对其中一个面部骨骼进行调节时,该面部骨骼对应的关联骨骼也进行相应的调节操作,从而实现对面部骨骼及其关联骨骼的同步调整,快速准确地根据用户需要调节动画模型的效果。同时,用户无需手动对各个骨骼一一进行调节,仅通过调节一个骨骼就可同步调节关联的其他骨骼,降低骨骼调节操作的复杂度。
对于相互关联的骨骼,每个骨骼都有其对应的权重,该权重表示各骨骼在调节过程中对应的调节关系。例如,各个骨骼均按照原始骨骼数据划分为-15~15共31个档位,当前骨骼a的权重为0.6,其关联骨骼b的权重为1.2,则当前骨骼a每调节0.6个档位,关联骨骼b调节1.2个档位。若当前骨骼a从初始位置调节3个档位,则关联骨骼b调节3×1.2÷0.6=6个档位。
该权重可以为实际骨骼数据之间的调节关系,包括旋转角度、位移距离等调节参数之间的关系,即直接根据当前骨骼的骨骼数据计算其调节参数,根据各骨骼的权重计算关联骨骼对应的调节参数,在此不再赘述。
在可选实施例中,可根据关联调节控件的开启或关闭确定关联骨骼范围。上述步骤s51包括以下步骤:获取关联调节控件的控件状态;当控件状态为开启状态时,确定关联骨骼包括面部骨骼自身及与面部骨骼关联的其他骨骼;当控件状态为关闭状态时,确定关联骨骼仅包括该面部骨骼自身。
例如,对于眼睛对应的骨骼,当关联条件控件关闭时,用户调整“右眼眶”骨骼时,其他骨骼“右内眼角”、“右外眼角”、“左眼眶”、“左内眼角”及“左外眼角”不会关联调整。只有当关联条件控件开启时,“右眼眶”的关联骨骼才会同步调节。
可选的,当控件状态为开启状态时,控件状态还包括关联范围级别;上述步骤s51还包括:根据关联范围级别确定面部骨骼的关联骨骼。
例如,对于眼睛对应的骨骼,当关联范围级别为一级时,用户调整“右眼眶”的骨骼,仅“右内眼角”和“右外眼角”骨骼跟随调整,而“左眼眶”、“左内眼角”及“左外眼角”的骨骼保持不变。
可选的,关联调节控件上还可以设置多个档位,不同档位对应的关联骨骼范围不同。举例来说,对于眼部骨骼来说,档位1对应的关联骨骼为眼部所有骨骼;档位2对应的关联骨骼除眼部所有骨骼外,还包括鼻部骨骼;档位2对应的关联骨骼除眼部所有骨骼及鼻部骨骼外,还包括嘴部骨骼。
在上述实施例中,关联调节控件各个档位与树状的骨骼数据选取范围关联。当关联调节控件开启时,读取当前面部骨骼的全部子骨骼;当关联调节控件关闭时,仅读取当前骨骼;当关联调节控件处于某个档位时,读取该档位对应范围的子骨骼。在进行骨骼调节过程中,当前面部骨骼的父骨骼一般不受影响,但根据需要,也可在调节特定骨骼时,控制其父骨骼做相应的跟随调整。
在可选实施例中,在对多个关联骨骼进行调节时,各骨骼需要统一初始状态,即多个骨骼从同一初始状态开始调节。上述步骤s53包括:获取关联骨骼对应的中间档位及参数调节范围,当前骨骼和关联骨骼的中间档位相同;根据中间档位及参数调节范围,确定关联骨骼对应的调整参数。
对于多个关联骨骼进行调节时,需要同步各个骨骼的初始状态,即各个骨骼的中间状态,这样,后续可以对各个关联骨骼进行统一调节。因此,该方法还包括确定各骨骼中间档位的步骤,具体如下:
步骤a1,获取当前骨骼的第一参数调节范围,关联骨骼的第二参数调节范围,及第一调节组件和第二调节组件的档位数量;
步骤a2,根据第一参数调节范围及档位数量确定当前骨骼原始骨骼数据对应的第一原始档位,根据第二参数调节范围及档位数量确定关联骨骼原始骨骼数据对应的第二原始档位;
步骤a3,根据第一原始档位、第二原始档位、第一权重及第二权重计算中间档位。
下面通过一个具体实例对确定中间档位的过程进行详细说明。
各个骨骼均按照原始骨骼数据划分为-15~15共30个档位。
关联的三个骨骼a、b、c,根据其原始骨骼数据计算其原始档位分别为-10,7,1。
若骨骼a、b、c对应的权重相同,则中间档位为
若骨骼a、b、c对应的权重分别为0.6,1.2,0.8,则中间档位为
这样,骨骼a、b、c以同一中间档位作为起始点进行调节,虽然初始状态与原始效果不同,但误差相对较小,便于后续进行多骨骼的关联调节。
可选的,由于捏脸后的动画模型骨骼数量、修改参数较多,可以对面部动画模型进行塌陷,将骨骼数据对应的顶点信息赋值给原动画模型的顶点,删除设定的捏脸/捏人骨骼,包括骨骼对应的修改参数,使得渲染得到的动画模型为捏脸/捏人后的模型,且动画模型的骨骼量减少,在渲染过程中计算量降低,提高计算速度,优化游戏流畅度。
图8为本申请另一实施例提供的一种面部动画模型处理方法的流程图。如图8所示,该方法还包括以下步骤:
步骤s61,根据第一塌陷策略执行对面部动画模型的塌陷操作,得到第一塌陷动画模型;
步骤s62,对第一塌陷动画模型进行渲染;
步骤s63,在服务器中存储面部动画模型;
步骤s64,当接收到对第一塌陷动画模型的调整操作时,从服务器获取面部动画模型;
步骤s65,对面部动画模型执行调整操作,得到更新面部动画模型;
步骤s66,根据第二塌陷策略执行对更新动画模型的塌陷操作,得到第二塌陷动画模型;
步骤s67,对第二塌陷动画模型进行渲染;
步骤s68,在服务器中存储更新面部动画模型。
其中,第一塌陷策略和第二塌陷策略可以相同或不同。
通过上述步骤s61至步骤s68,在捏脸/捏人完成后,对动画模型进行塌陷操作,减少动画模型中的骨骼数据量,在渲染过程中计算量降低,提高计算速度,优化游戏流畅度。另外,在对原动画模型执行塌陷操作后,并不会删除原动画模型,而是将塌陷后的动画模型进行渲染,而原动画模型存储于服务器上,便于后续再次对动画模型进行修改。
上述实施例中,可以基于塌陷控件的开启或关闭来控制是否进行塌陷操作,该控件可以为滑杆、旋钮等形式。通过塌陷控件,还可调节塌陷级别。例如,塌陷控件上可设有多个档位,档位1对应的塌陷级别为1,删除30%的骨骼数据;档位2对应的塌陷级别为2,删除50%的骨骼数据;档位3对应的塌陷级别为3,删除70%的骨骼数据。
在可选实施例中,塌陷策略根据处理器的不同而自动调节。该方法还包括:获取执行渲染的设备的性能参数;根据性能参数确定对塌陷策略。
在可选实施例中,还可根据同屏下所需渲染动画模型的数量或所需渲染的骨骼数量(或骨骼数据量)来确定是否需要开启塌陷控件,以及开启塌陷控件后,对动画模型的塌陷级别。例如,当同屏下需要渲染的动画模型为1~3个时,不开启塌陷控件,当同屏下动画模型的数量为4个及以上时,开启塌陷控件。当同屏下动画模型的数量为4~6个时,采用塌陷级别1的塌陷策略,每个动画模型删除30%的骨骼数据;当同屏下动画模型的数量为7~9个时,采用塌陷级别2的塌陷策略,每个动画模型删除50%的骨骼数据;当同屏下动画模型的数量为10个及以上时,采用塌陷级别3的塌陷策略,每个动画模型删除70%的骨骼数据。
在另一可选实施例中,塌陷策略也可由用户控制是否开启,用户还可根据需要选择塌陷级别。
下述为本申请装置实施例,可以用于执行本申请方法实施例。
图9为本申请实施例提供的一种面部动画模型处理装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图9所示,该面部动画模型处理装置包括:
获取模块1,用于获取面部骨骼对应的调节参数;
确定模块2,用于确定与所述面部骨骼关联的面部装饰物骨骼;
调节模块3,用于根据所述调节参数调节所述面部装饰物骨骼;
蒙皮处理模块4,用于对调节后的面部装饰物骨骼进行蒙皮处理,得到调节后的面部动画模型。
可选的,所述面部装饰物骨骼与所述面部骨骼采用相同布线网格。
可选的,蒙皮处理模块4,用于获取所述面部骨骼对应的第一蒙皮权重;将所述第一蒙皮权重作为所述调节后的面部装饰物骨骼的第二蒙皮权重;根据所述第二蒙皮权重对所述调节后的面部装饰物骨骼进行蒙皮处理。
可选的,该装置还包括:
碰撞检测模块5,用于在所述面部装饰物运动过程中,对所述面部装饰物骨骼进行碰撞检测;
位移模块6,用于当检测到所述面部装饰物骨骼与碰撞体发生碰撞时,将所述面部装饰物骨骼从当前位置移开。
可选的,该装置还包括:
碰撞体确定模块7,用于当获取到对所述面部骨骼的第一缩放操作时,确定所述面部骨骼对应的碰撞体;
缩放模块8,用于根据所述第一缩放操作执行对所述碰撞体的第二缩放操作。
可选的,确定模块2,用于获取所述面部骨骼对应的调整骨骼,所述调整骨骼与所述面部动画模型绑定并继承所述面部骨骼的坐标;确定与所述调整骨骼关联的所述面部装饰物骨骼。
可选的,该装置还包括:
塌陷模块9,用于根据第一塌陷策略执行对所述面部动画模型的塌陷操作,得到第一塌陷动画模型;
渲染模块10,用于对所述第一塌陷动画模型进行渲染;
存储模块11,用于在服务器中存储所述面部动画模型;
模型获取模块12,用于当接收到对所述第一塌陷动画模型的调整操作时,从所述服务器获取所述面部动画模型;
调整模块13,用于对所述面部动画模型执行所述调整操作,得到更新面部动画模型;
塌陷模块9,用于根据第二塌陷策略执行对所述更新动画模型的塌陷操作,得到第二塌陷动画模型;
渲染模块10,用于对所述第二塌陷动画模型进行渲染;
存储模块11,用于在所述服务器中存储所述更新面部动画模型。
本申请实施例还提供一种电子设备,如图10所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现以下上述方法实施例的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下上述方法实施例的步骤。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除