在传统RPG游戏中,捏脸是不可或缺的一环。 类似《楚留香》(现在叫《一梦江湖》)、《完美世界》、《花与剑》里都有捏脸的玩法。目前主流的玩法都是游戏中拖拽滑杆来控制脸部不同的参数,来实现不同的效果。关于捏脸的具体实现,可以参见我在github上传的一个测试demo,里面介绍了详细的原理和代码。
通常情况下, 游戏玩家捏出来的脸都比较丑。要想捏出比较完美的脸型,往往需要花费比较长的时间,而这正是本篇正要照此要解决的。本文引用的理论大多在网易的一篇论文里都有论述:
Face-to-ParameterTranslationforGameCharacterAuto-Creation

创建 RPG 游戏角色的一个标准工作流程需要配置大量的面部参数,游戏引擎将这些详细的面部参数作为输入然后产生一个 3D 人脸模型。理论上来讲,游戏角色定制可以看成是“单目 3D 人脸重建”或“风格迁移”问题的一个特殊情况。长期以来,生成包含语义结构的 3D 图像在计算机视觉领域都是一个非常困难的任务。但如今,计算机已经可以使用 CNN 自动生成具有新风格的图像,甚至是由单张面部图像生成 3D 重构结果,这都要归功于近年来深度学习的发展。通过深度网络学习的方法, 一张上传图片, 都很好的捏出来的类似的3D脸型。
本文所有的代码实现上传到github, 链接地址。 引擎部分实现使用了Unity2019.2, neural network基于pytorch。此外需要下载预训练的model和依赖的子网络参见本文的附录。
Dataset
深度网络学习往往都需要一个强大的数据集, 比较有名的如微软的coco dataset, 还有南京大学周志华教授的《机器学习》里提到的西瓜数据集。这里我们使用引擎来生成数据集, 大致的原理论述如下:
首先我们随机生成一组捏脸需要使用的参数,然后在使用这些参数在unity中生成不同的脸型,然后将camera的图像渲染到一张RenderTexture, RenderTexture设置的大小是512x512, 格式是R8G8B8A8, 具体参见如表:
| 参数 | Value |
|---|---|
| Dimension | 2D |
| Size | 512 |
| Format | R8G8B8A8_UNORM |
| Depth Buffer | At least 16 bits depth (no stencel) |
| Enable Mipmap | False |
| Wrap Mode | Clamp |
| Filter Mode | Bilinear |
| Aniso Level | 0 |

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/24765.html