如何通过机器学习生成游戏地形?
一、介绍
我叫FranciscoMúrias,最近,我一直在探索Houdini以及机器学习在内容生成中的潜力。我在波尔图大学(葡萄牙)攻读计算机科学学士学位,在那里我学习了编程。然后,在Teesside大学(英格兰)攻读3D游戏艺术硕士学位,在那里学习了Houdini,Unreal Engine等工具,并有机会在毕业论文期间探索机器学习在游戏中的一些应用。
二、机器学习与地形生成
机器学习就是使用样本数据来“训练”一个拟合的计算机算法,从而获得“映射功能”,该算法可以将一组输入大致的解析为有用的输出。机器学习在游戏和CG中广泛应用,艺术家和程序员不断为它寻找新的用途。节省艺术家的时间,专注于更有创造性的事情。
现实地形生成是一个非常复杂的问题,在过去的三十年中,研究人员研究了各种生成地形的方法,这些方法各有优缺点。我这个项目是探索如何仅基于简单的草图就可以实时生成详细的,带有实际腐蚀效果的地形。
地形在游戏中一般都是通过高度图来表示,非常适合机器学习。而且我们还拥有现实世界的地形数据,USGS拥有几乎整个美国陆地的准确地形高度图。所以这两个因素使它成为机器学习应用程序实验的理想用例。
使用工具生成的一些示例:
三、GAN
GAN就是条件生成对抗网络模型,根据自动处理的真实世界地形数据(通过Houdini收集)进行训练,运行神经网络模型并在实时3D预览中展示结果。通过从训练数据中学到的特征来生成任意数量的真实虚拟地形,而无需手动定义任何过程规则或参数属性。
cGAN系统由两个相互竞争的网络组成:一个不断合成新地形的生成器,以及一个将生成的地形与真实示例进行比较的鉴别器。这两个网络相互竞争,学习如何制作更适合训练示例的地形。
为了收集用于训练模型的训练数据,我使用了Houdini 的PDG使该任务自动化。
1.读取设定的坐标
2.从USGS服务器下载文件
3.解压缩文件
4.将高度信息分成小块
5.处理每个图块以计算峰谷线
6.将结果映射到匹配的图像并保存
整个数据收集管道均基于SideFX的ML数据准备示例,该示例采用了一种出色的方法,并且可以教您如何使用PDG系统。
四、交互工具
我构建了一个自定义工具,使用户能够绘制峰谷线,机器学习算法会自动实时生成最终地形。
使用ModernGL开发的自定义3D预览器可以快速迭代和可视化结果。这是我的第一个主要Python应用程序,我发现Python是启动和构建这种自定义应用程序的绝佳语言。它拥有一个优秀的社区和一个活跃的Discord服务器,那里挤满了愿意帮助您入门的人。
最后使用Gaea生成细节,最后就可以将生成的地形导入任何游戏引擎,并用作3D地形的基础。
五、挑战
我相信该工具证明了ML应用在游戏中的巨大潜力。该项目未来开发的目标是概括同一网络中不同要素的地形生成,并在创作阶段用不同类型的草图区分它们。同时我会继续研究ML,并扩展ML在游戏中的使用。
六、总结
这位老哥用机器学习快速生成一个低精度的高度图,然后通过gaea的侵蚀获取各种分布图,值得学习借鉴,感兴趣的可以按照这个思路整一个。