![c501bc5737b4620286f73fd36d4f4701.gif](https://img-blog.csdnimg.cn/img_convert/c501bc5737b4620286f73fd36d4f4701.gif)
游戏会拥有很多角色,大部分角色能在场景中走动,人物行走图是最常用到的美术资源。然而对于很多开发者来说,绘制一两张人物图尚有可能,绘制十几帧的动画工作量太大。于是研究了一套“自动生成人物行走图”的程序,只要输入一张正面图,程序就能够自动的把侧面和背面图画出来,而且每个面向生成“抬起左脚”“抬起右脚”几帧动画。
![38fbe7e5ed45927a5d93f8a12d33e4ff.png](https://img-blog.csdnimg.cn/img_convert/38fbe7e5ed45927a5d93f8a12d33e4ff.png)
效果
以下gif图片的5个人物行走图都是由工具生成,可见效果还是不差的。生成出来的图片可能会带一些噪点,这些很容易处理掉。
![4c039b8daa9bccece40e54fb765096f1.gif](https://img-blog.csdnimg.cn/img_convert/4c039b8daa9bccece40e54fb765096f1.gif)
上面人物行走动画帧就是使用下面这几张图生成出来的,将这几张图分别输入到程序中即可。使用这项技术,游戏开发者将只需绘制一张正面图,其他交给程序去生成,可以大大减少美术成本。
![0a657fb0ea71e8143ff409b9453517da.png](https://img-blog.csdnimg.cn/img_convert/0a657fb0ea71e8143ff409b9453517da.png)
下面展示几张生成出来的行走帧动画,目前生成的是4*4的图片,程序也可以生成各种规格的行走帧。
![e06ba37e1f918991fa29d9b600c28e72.png](https://img-blog.csdnimg.cn/img_convert/e06ba37e1f918991fa29d9b600c28e72.png)
![c2cae0e2dcf07b4463d91ffc70eaab28.png](https://img-blog.csdnimg.cn/img_convert/c2cae0e2dcf07b4463d91ffc70eaab28.png)
算法和训练
具体还是根据《Image-to-Image Translation with Conditional Adversarial Nets》这篇论文,算法与上一篇的侧面图完全一样,只是将侧面图的方法扩展到背面以及各个行走帧,具体可以见上一篇文章。总共训练了9个生成器,对应下图的“0 2 3 4 5 7 C D F”,其中2和0相同,4和6相同,C和E相同,“8 9 A B”是“4 5 6 7”的水平翻转。
![63bb83f50300ee9499ea6baf09585ea6.png](https://img-blog.csdnimg.cn/img_convert/63bb83f50300ee9499ea6baf09585ea6.png)
不足
生成器对于颜色鲜艳的像素图效果比较好,对颜色暗淡的图片效果较差,原因已经在上一篇文章中有过分析。后续再看看怎样改进。
另外因为训练量比较大,此次只是训练了40个epoll,如果多训练到200个epoll,边缘躁动等问题说不定能够随之得到优化。
下一步
下一步准备把生成器开放出来,让大家可以自己上传图片,然后试试效果。也试图和Unity、Laya等游戏工具结合起来。
又到广告时间了,如果想学习网络游戏开发,我的《Unity3D网络游戏实战(第2版)》非常适合您。书中用一个大实例详细介绍网络游戏的开发的全过程,还对网络编程有详细的讲解。
![454fb61932da8da7abc3316f1d9a6dea.png](https://img-blog.csdnimg.cn/img_convert/454fb61932da8da7abc3316f1d9a6dea.png)