一种高效自动化的头发匹配头型生成方法及其生成装置与流程

文档序号:25526200发布日期:2021-06-18 20:15阅读:294来源:国知局
一种高效自动化的头发匹配头型生成方法及其生成装置与流程

本发明涉及人脸识别技术领域,特别是一种高效自动化的头发匹配头型生成方法及其生成装置。



背景技术:

随着大数据人脸建模的发展,人脸的数字化建模已然成为常态。通过相关ai算法(人工智能算法),可以将一张标准脸型变成年轻的,年老的,胖脸,瘦脸,甚至是男女不同性别。但人脸的变化,对应得到3d模型发型也需要进行变化。由于发型模型较于人脸模型面数更多,模型随意性更强,因此发型数字建模比人脸数字建模具有更高的难度。在有限个脸库的情况下,传统方法都是3d美术建模人员手工去修改发型,已达到发型适配各种脸型的目的。但在数字人脸建模时代,人脸个数是无限多个的,这种方法显然不可取。本专利就通过一套算法机制,将导入的头发模型自动化适配到各种脸型上,并导出适配文件。其他应用程序即根据适配文件,还原出对应的头发变化,大大减少了美术人员的开发成本。



技术实现要素:

为克服上述问题,本发明的目的是提供一种高效自动化的头发匹配头型生成方法,能进行自动化的头发匹配头型,提高了技术人员的开发效率。

本发明采用以下方案实现:一种高效自动化的头发匹配头型生成方法,所述方法包括如下步骤:

步骤s1、定义基础头模型和变形头模型的顶点数据集结构,基础头模型和变形头模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点颜色;定义基础头发模型和变形头发模型的顶点数据集结构,基础头发模型和变形头发模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点uv2、顶点颜色;

步骤s2、加载基础头模型和基础头发模型,遍历基础头发模型中的所有顶点,以基础头发模型中的所有顶点位置为起点,向基础头模型中心点作射线检测来获得基础头发模型的顶点uv2数据集;

步骤s3、生成变形头模型的空间位置图dmap;

步骤s4、加载设置好基础头发模型的顶点uv2数据集,加载空间位置图dmap,逐像素采样获取基础头发模型的顶点偏移数据集,最后得到变形后的头发模型。

进一步的,所述步骤s2进一步具体为:向基础头模型中心点作射线检测,设置检测射线长度为l,射线检测过程中记录射线所有能命中基础头模,并能取得基础头模上有效uv值的顶点,设置基础头发模型的顶点uv2值为命中基础头模的有效uv值,未能命中或无法取得基础头模的有效uv值的顶点,将基础头发模型的顶点uv2设置为(0,0),最终得到基础头发模型的顶点uv2数据集。

进一步的,所述步骤s3进一步具体包括:步骤s31:加载基础头模型和相关的变形头模型;

步骤s32:将基础头模型和变形头模型的顶点位置,按其uv坐标投影至y,z坐标轴上,并将基础头模型和变形头模型的颜色设置为其顶点位置;具体公式如下:

其中,基础头模型和变形头模型的顶点位置p:为(px,py,pz)的三维向量,记录顶点在空间中的位置;基础头模型和变形头模型的顶点uv,为(u,v)的二维向量,用于表示该顶点在一张二维图像上的坐标位置,该坐标位置上的像素值就是这个顶点的颜色,也称顶点的纹理寻址值;

步骤s33:通过步骤s32,得到一张基础头模型的uvpos图,和一张变形头模型的uvpos图,将基础头模型的uvpos图与变形头模型的uvpos图进行逐像素相减,得到变形头模型的空间位置图dmap。

进一步的,所述步骤s4进一步具体包括:步骤s41:加载设置好基础头发模型的顶点uv2数据集,加载空间位置图dmap;

步骤s42:在渲染变形头发模型时,头发顶点用顶点uv2数据集,读取dmap像素,获取dmap像素颜色信息cdmap,所有头发顶点的cdmap值即为头发顶点的偏移数据集;

步骤s43:根据如下公式,计算基础头发模型顶点变形后顶点位置;pfinal为变形头发顶点位置,porig为基础头发顶点位置;pfinal=porig+cdmap;

步骤s44:保存变形后头发顶点位置,将基础头发模型头发顶点数据中的顶点位置,替换为变形头发的顶点位置,并将头发顶点数据重新传入渲染管线中,渲染头发模型,得到变形后的头发模型。

本发明还提供了一种高效自动化的头发匹配头型生成装置,所述装置包括数据结构定义模块、射线检测模块、空间位置图生成模块、以及变形头发模型获取模块;

所述数据结构定义模块,用于定义基础头模型和变形头模型的顶点数据集结构,基础头模型和变形头模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点颜色;定义基础头发模型和变形头发模型的顶点数据集结构,基础头发模型和变形头发模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点uv2、顶点颜色;

所述射线检测模块,用于加载基础头模型和基础头发模型,遍历基础头发模型中的所有顶点,以基础头发模型中的所有顶点位置为起点,向基础头模型中心点作射线检测来获得基础头发模型的顶点uv2数据集;

所述空间位置图生成模块,用于生成变形头模型的空间位置图dmap;

所述变形头发模型获取模块,用于加载设置好基础头发模型的顶点uv2数据集,加载空间位置图dmap,逐像素采样获取基础头发模型的顶点偏移数据集,最后得到变形后的头发模型。

进一步的,所述射线检测模块的实现方式进一步具体为:向基础头模型中心点作射线检测,设置检测射线长度为l,射线检测过程中记录射线所有能命中基础头模,并能取得基础头模上有效uv值的顶点,设置基础头发模型的顶点uv2值为命中基础头模的有效uv值,未能命中或无法取得基础头模的有效uv值的顶点,将基础头发模型的顶点uv2设置为(0,0),最终得到基础头发模型的顶点uv2数据集。

进一步的,所述空间位置图生成模块的实现方式进一步具体为:加载基础头模型和相关的变形头模型;

将基础头模型和变形头模型的顶点位置,按其uv坐标投影至y,z坐标轴上,并将基础头模型和变形头模型的颜色设置为其顶点位置;具体公式如下:

其中,基础头模型和变形头模型的顶点位置p:为(px,py,pz)的三维向量,记录顶点在空间中的位置;基础头模型和变形头模型的顶点uv,为(u,v)的二维向量,用于表示该顶点在一张二维图像上的坐标位置,该坐标位置上的像素值就是这个顶点的颜色,也称顶点的纹理寻址值;

通过公式得到一张基础头模型的uvpos图,和一张变形头模型的uvpos图,将基础头模型的uvpos图与变形头模型的uvpos图进行逐像素相减,得到变形头模型的空间位置图dmap。

进一步的,所述变形头发模型获取模块的实现方式进一步具体为:加载设置好基础头发模型的顶点uv2数据集,加载空间位置图dmap;

在渲染变形头发模型时,头发顶点用顶点uv2数据集,读取dmap像素,获取dmap像素颜色信息cdmap,所有头发顶点的cdmap值即为头发顶点的偏移数据集;

根据如下公式,计算基础头发模型顶点变形后顶点位置;pfinal为变形头发顶点位置,porig为基础头发顶点位置;pfinal=porig+cdmap;

保存变形后头发顶点位置,将基础头发模型头发顶点数据中的顶点位置,替换为变形头发的顶点位置,并将头发顶点数据重新传入渲染管线中,渲染头发模型,得到变形后的头发模型。

本发明的有益效果在于:现有技术所有的头发模型适配工作都需要美术手工制作完成,制作周期长,制作成本高,且人工制作不可控因素较多。采用了本专利的技术后,美术只需要做一个基础的头发,该头发能正常匹配基础的头型,其余头型不论胖瘦男女,本发明都能自动生成相应头型的对应头发模型,并且这个适配过程是实时的,可动态配置和人工干预的;这大大降低了美术的制作成本和制作周期,提高了原有资源的利用率。

附图说明

图1是本发明的方法流程示意图。

图2是本发明的一实施例的方法流程示意图。

图3是本发明的系统原理框图。

具体实施方式

下面结合附图对本发明做进一步说明。

请参阅图1所示,本发明提供了一种高效自动化的头发匹配头型生成方法,所述方法包括如下步骤:

步骤s1、定义基础头模型和变形头模型的顶点数据集结构,基础头模型和变形头模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点颜色;定义基础头发模型和变形头发模型的顶点数据集结构,基础头发模型和变形头发模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点uv2、顶点颜色;

步骤s2、加载基础头模型和基础头发模型,遍历基础头发模型中的所有顶点,以基础头发模型中的所有顶点位置为起点,向基础头模型中心点作射线检测来获得基础头发模型的顶点uv2数据集;

步骤s3、生成变形头模型的空间位置图dmap;

步骤s4、加载设置好基础头发模型的顶点uv2数据集,加载空间位置图dmap,逐像素采样获取基础头发模型的顶点偏移数据集,最后得到变形后的头发模型。

下面结合一具体实施例对本发明作进一步说明:

概念设定:原始头部模型为基础头模型,原始头发模型为基础头发模型。变形后的头部模型为变形头模型,变形后的头发模型为变形头发模型。

本专利中,首先需要明确头部变形影响到了哪些头发顶点,比如,马尾辫头发中,马尾部分的头发就不受头部变形影响,而其前刘海部分的头发由于和头皮靠得近,因此需要受到头部变形影响,本专利采用距离判定的方法来确定受影响顶点的范围。

其次,需要确定的受到头部变形影响的头发顶点如何与头部变形建立联动关系,即一个头发顶点与头部的哪一个区域变形做关联,举例:刘海处的头发面片顶点肯定与人头的前额处变形有关,与人的后脑勺无关,本专利采用uv绑定法,将头部模型上的uv赋予到受影响的头发模型顶点上,并将头部模型位置偏移转化为颜色信息,存储在头部模型的dmap图(偏移差异图)中。头发在计算位置时,通过绑定的uv,读取头部模型的dmap图获取偏移位置,实现头发顶点偏移,完成适配。

在这个过程中,最重要的步骤分别为,头发顶点与头部的uv绑定算法和dmap生成算法。

uv绑定算法:以头发模型顶点为起点,向头部模型中点做射线,射线命中的头部模型点上的uv值即为绑定uv值。

dmap图生成:由头部模型变形后的uv空间位置图减去头部模型变形前的uv空间位置图,从而得到一张dmap图。

uv空间位置图的生成:将头部模型上的顶点位置修改为其顶点的uv坐标,并进行等比放大减少精度损失。并将该顶点的颜色值改为其顶点的模型空间坐标位置。从而得到一张uv空间位置图。

请参阅图2所示,本发明的一种高效自动化的头发匹配头型生成方法,所述方法为设置变形头发模型顶点uv2:

步骤1:定义基础头模型和变形头模型的顶点数据集结构,基础头模型和变形头模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点颜色;定义基础头发模型和变形头发模型的顶点数据集结构,基础头发模型和变形头发模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点uv2、顶点颜色;设置模型顶点数据集结构:顶点位置,顶点法线,顶点uv,顶点uv2,顶点颜色。

定义基础头模型和变形头模型的顶点数据格式如下:

顶点位置p:为(px,py,pz)的三维向量,记录顶点在空间中的位置。

顶点法线n:为(nx,ny,nz)的三维向量,用于记录头模顶点的朝上轴的偏转方向。

顶点uv,为(u,v)的二维向量,用于表示该顶点在一张二维图像上的坐标位置,该位置上的像素值就是这个顶点的颜色,也称顶点的纹理寻址值。

定义基础头发模型和变形头发模型的顶点数据格式如下:

顶点位置p’:为(p'x,p'y,p'z)的三维向量,记录头发顶点在空间中的位置。

顶点法线n’:为(n'x,n'y,n'z)的三维向量,用于记录头发顶点的朝上轴的偏转方向。

顶点uv:为(u’,v’)的二维向量,用于表示该顶点在一张二维图像上的坐标位置,该位置上的像素值就是这个顶点的颜色,也称顶点的纹理寻址值。

顶点uv2:为(u2’,v2’)的二维向量,用于表示该顶点在二维图像dmap图上的坐标位置,该位置上的像素值就是这个顶点在三维空间的偏移量。

步骤2:加载基础头模型和基础头发模型。遍历基础头发模型中的所有顶点,以基础头发模型中的所有顶点位置为起点,向基础头模型中心点作线段检测。

步骤3:设置检测线段长度为5cm。该长度根据实际场景设置,记录所有能命中基础头模,并能取得基础头模上有效uv值的点,设置头发顶点的uv2值为命中基础头模型的有效uv值,未能命中或无法取得基础头模的有效uv值的顶点,将其头发顶点的uv2设置为(0,0)。

生产头模dmap:

步骤1:加载基础头模型和相关的变形头模型。

步骤2:将基础头模型和变形头模型的顶点位置,按其uv坐标投影至y,z坐标轴上,

并将其颜色设置为其顶点位置。具体公式如下。

其中,基础头模型和变形头模型的顶点位置p:为(px,py,pz)的三维向量,记录顶点在空间中的位置;基础头模型和变形头模型的顶点uv,为(u,v)的二维向量,用于表示该顶点在一张二维图像上的坐标位置,该坐标位置上的像素值就是这个顶点的颜色,也称顶点的纹理寻址值;

步骤3:通过步骤2,得到一张基础头模的uvpos图,和一张变形头模的uvpos图,将基础头模型的uvpos图与变形头模型的uvpos图进行逐像素相减,得到dmap。

头发适配:

步骤1:加载设置好uv2的头发模型,加载dmap;

步骤2:在渲染变形头发模型时,头发顶点用其uv2数据集,读取dmap像素,获取dmap像素颜色信息cdmap,所有头发顶点的cdmap值即为头发顶点的偏移数据集。

步骤3:根据如下公式,计算头发顶点变形后顶点位置。pfinal为变形头发顶点位置,porig为原始头发顶点位置。

pfinal=porig+cdmap(2)

步骤4:保存变形后头发顶点位置pfinal,将头发顶点数据(顶点位置,顶点法线,顶点uv,顶点uv2,顶点颜色)中的顶点位置,替换为变形头发的顶点位置,并将头发顶点数据重新传入渲染管线中,渲染头发模型,得到变形后的头发模型。

请参阅图3所示,本发明还提供了一种高效自动化的头发匹配头型生成装置,所述装置包括数据结构定义模块、射线检测模块、空间位置图生成模块、以及变形头发模型获取模块;

所述数据结构定义模块,用于定义基础头模型和变形头模型的顶点数据集结构,基础头模型和变形头模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点颜色;定义基础头发模型和变形头发模型的顶点数据集结构,基础头发模型和变形头发模型的顶点数据集结构包括:顶点位置、顶点法线、顶点uv、顶点uv2、顶点颜色;

所述射线检测模块,用于加载基础头模型和基础头发模型,遍历基础头发模型中的所有顶点,以基础头发模型中的所有顶点位置为起点,向基础头模型中心点作射线检测来获得基础头发模型的顶点uv2数据集;

所述空间位置图生成模块,用于生成变形头模型的空间位置图dmap;

所述变形头发模型获取模块,用于加载设置好基础头发模型的顶点uv2数据集,加载空间位置图dmap,逐像素采样获取基础头发模型的顶点偏移数据集,最后得到变形后的头发模型。

所述射线检测模块的实现方式进一步具体为:向基础头模型中心点作射线检测,设置检测射线长度为l,射线检测过程中记录射线所有能命中基础头模,并能取得基础头模上有效uv值的顶点,设置基础头发模型的顶点uv2值为命中基础头模的有效uv值,未能命中或无法取得基础头模的有效uv值的顶点,将基础头发模型的顶点uv2设置为(0,0),最终得到基础头发模型的顶点uv2数据集。

所述空间位置图生成模块的实现方式进一步具体为:加载基础头模型和相关的变形头模型;

将基础头模型和变形头模型的顶点位置,按其uv坐标投影至y,z坐标轴上,并将基础头模型和变形头模型的颜色设置为其顶点位置;具体公式如下:

其中,基础头模型和变形头模型的顶点位置p:为(px,py,pz)的三维向量,记录顶点在空间中的位置;基础头模型和变形头模型的顶点uv,为(u,v)的二维向量,用于表示该顶点在一张二维图像上的坐标位置,该坐标位置上的像素值就是这个顶点的颜色,也称顶点的纹理寻址值;

通过公式得到一张基础头模型的uvpos图,和一张变形头模型的uvpos图,将基础头模型的uvpos图与变形头模型的uvpos图进行逐像素相减,得到变形头模型的空间位置图dmap。

所述变形头发模型获取模块的实现方式进一步具体为:加载设置好基础头发模型的顶点uv2数据集,加载空间位置图dmap;

在渲染变形头发模型时,头发顶点用顶点uv2数据集,读取dmap像素,获取dmap像素颜色信息cdmap,所有头发顶点的cdmap值即为头发顶点的偏移数据集;

根据如下公式,计算基础头发模型顶点变形后顶点位置;pfinal为变形头发顶点位置,porig为基础头发顶点位置;pfinal=porig+cdmap;

保存变形后头发顶点位置,将基础头发模型头发顶点数据中的顶点位置,替换为变形头发的顶点位置,并将头发顶点数据重新传入渲染管线中,渲染头发模型,得到变形后的头发模型。

总之,本专利就通过一套算法机制,将导入的头发模型自动化适配到各种脸型上,并导出适配文件。其他应用程序即根据适配文件,还原出对应的头发变化,大大减少了美术人员的开发成本。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1