欢迎光临散文网 会员登陆 & 注册

[Unity] 运行时程序化生成 技术概览及学习资料

2023-03-24 14:57 作者:StriteR  | 我要投稿

| 引言

       前几天投稿的一份技术玩具分享视频收到了很多朋友的鼓励,也一并收到了很多想对此进行学习的私信/留言,所以将自己对Oskar Stålberg作品的学习历程进行分享.

         此篇为整理各种技术的相关学习资料的专栏,作为各项技术的学习资料索引,由于篇幅较多并且各项技术都有对应深度,后续根据反馈的形式进行更细致的说明.

| 开源工程?

    https://github.com/striter/Unity3D-ToolChain_StriteR

    此工程为作者学习积累Unity制作游戏相关知识的积累库,保持技术迭代,开源,并作为技术需求的前置实验场所,大多数该工程用到的技术及细节都有可以运行的[前置场景/脚本],可作为学习工程使用,即.scene结尾的标题都可以在工程内找到对应文件.

    于视频展示的场景是ThePlanet.scene

| 前置

此项为Oskar Stålberg在实现各种景致优美的程序化生成游戏后参与的各项Talk,将其独立游戏生涯制作的两款游戏技术细节铺开.

Bad North : https://www.youtube.com/watch?v=6JcFbivo8dQ
Townscaper : https://www.youtube.com/watch?v=1hqt8JkYRdI

以及一个中文版的Townscaper技术全面概览

https://zhuanlan.zhihu.com/p/280013345

| 核心算法 - MarchingCube

使用MarchingCube构建的建筑底座

以下两个场景都可于开源工程 使用关键词搜索检索到对应的场景代码.

推荐先学习2D版本.

MarchingSquare.scene

MarchingCube.scene

推荐视频:

https://www.youtube.com/watch?v=M3iI2l0ltbE  (一个使用MarchingCube生成地形的案例)

| 网格 显示几何

几何网格(球形):

ProceduralMesh.scene

https://catlikecoding.com/unity/tutorials/procedural-meshes/

| 波函数坍塌 WaveFunctionCollapse

使用波函数坍缩构建的建筑装饰物.

2D版本的波函数坍塌 WaveFunctionCollapse.scene

推荐视频(以及熟肉版本): https://www.youtube.com/watch?v=2SuvO4Gi7uY

推荐文章:

  • https://cowlevel.net/article/1964746

  • https://www.gameres.com/835537.html

关于WFC算法在该工程的结合比较复杂,后续具体单独开篇细讲.

| 生物集群 BOIDS

使用BOIDS构建的鸟群行为

        通过[聚集,分离,同向]三个属性影响[速度]以模拟集群生物的行为,需要进行状态混搭进行更多的行为控制.

https://zhuanlan.zhihu.com/p/376047988

| 渲染

写实水体渲染 + 大气散射

水体渲染:

各种文章效果拼凑而来.

基础颜色及透明度由深度决定.

高光是由法线流动叠加出的效果

Grestner wave用于水波效果.

反射用的是屏幕空间平面反射的改版(将平面改成了圆)

再加一点深度插值决定的浮沫(Foam)

大气渲染:

https://www.youtube.com/watch?v=DxfEbulyFcY&list=PLFt_AvWsXl0ehjAfLFsp1PGaatzAwo0uK&index=4

| 拓展阅读

类Townscaper的不规则平面网格构建:

六边形网格前置学习

  • https://www.redblobgames.com/grids/hexagons/

  • https://observablehq.com/@sanderevers/hexmod-representation

通过对生成的六边形网格进行 切分/合并/细分/平滑等操作形成最终的平面网格

  • https://andersource.dev/2020/11/06/organic-grid.html

  • https://www.kchapelier.com/hexagrid-relaxing/


一些推荐的技术博客:

  • https://www.redblobgames.com/ (数学,算法基础作者)

  • https://iquilezles.org/articles/ (渲染,算法,ShaderToy 大佬)

  • https://catlikecoding.com/unity/tutorials/ (教程,算法,渲染,以及一些很新的东西)





[Unity] 运行时程序化生成 技术概览及学习资料的评论 (共 条)

分享到微博请遵守国家法律