内容简介:开源库链接:
博物纳新 合辑推荐第二期来啦!这一期给大家带来的主题是“Procedural程序化的生成方法”,程序化的生成方法常用于Rougelike、沙盒游戏以及大型MMO的随机关卡地图的生成。希望以下分享可以帮助到有需求的开发者。
- LevelGenerator
- UnityCodingExamples
- Procedural Water Surface
- Procedural Landscape
- Procedural Audio - ProceduralLandmassGeneration
- ProceduralCity
- RoadGeneratorUnity3d
- ProceduralCaveGenerator
- WaveFunctionCollapse
1. Level Generator
开源库链接: https://lab.uwa4d.com/lab/5b562335d7f10a201fd851e6
该插件提供了一些便于关卡编辑的工具:
Chunk and Hallway editor:房间和走廊编辑器;
Level Generator window:关卡生成器,这里的Save&Load功能是针对配置而非关卡场景;
Component window:组件生成器,用于给房间附加一些属性,如size,door,procedural mesh等,详细的插件使用说明请从开源库原文中获取。
2. Unity Coding Examples
开源库链接: https://lab.uwa4d.com/lab/5b458449d7f10a201fb3159c
该项目由三个小示例组成,分别是水、地形和音频的程序化生成,下面就由小编我来为大家逐一介绍这三个demo:
a.Procedural Water Surface
该项目展示了在Unity3D中,如何仅使用C#代码制作动画水面效果。
其中的核心WaterController的大致运作原理如下:
1)当程序开始运行时,WaterController会构造一个沿X轴和Z轴延伸的Mesh网格;
2)该网格的顶点会被固定在沿X和Z轴的位置,但可以沿Y轴平移(水面垂直方向);
3)图中我们可以看到有五个红点,被Tag为wavesoures,作为水波的中心,即波源;
4)WaterController会收集wavesoures的位置,并将其储存在List中;
5)对于每一个波源的位置,WaterController将一个正弦函数应用于每个网格的顶点;
6)应用于每个顶点的正弦函数在每个帧中相加并更新,从而产生类似于流体表面的水面动画效果。
b.Procedural Landscape
该项目展示了在Unity3D中,如何使用C#代码在U3D中创建程序化地形,并允许该地形可以进行实时的更改。
ProceduralLandscapeController:
- Animate:动画模式,可以在运行时播放不同参数下的场景预览,具有一定得参数参考价值;
- Layer(n)Scale:沿X和Z轴缩放;
- Layer(n)Height:沿Y轴缩放;
- Layer(n)X-offset:沿X轴移动;
- Layer(n)Z-offset:沿Z轴移动;
- Peak Color:峰值颜色;
- Bottom Color : 峰谷颜色;
- Material Smoothness:设置材质的光滑度;
- Material Metallicness:设置材质的金属度
c. Procedural Audio
该组件功能可以概述为:音调生成 (主音量和频率),音调选择/混音(窦波,方波,锯波),调幅,调频。
该组件使用了Unity的API:OnAudioFilterRead,它可将音频数据转换成浮点数组。通过在这种低水平的数据流中应用一些非常简单的数学,您可以(理论上)产生任何声音或制作您喜欢的任何音频滤波器。
ProceduralAudioController组件参数说明
3. Procedural Landmass Generation
开源库链接: https://lab.uwa4d.com/lab/5b5cd12cd7f10a201fe9680d
Procedural Landmass Generation是一个程序化生成地形的开源项目。
作者Sebastian Lague将项目以教程的形式,根据技术核心细分成了21个视频发布在Youtube上,一步步展现了程序化地形的生成步骤,内容非常细致,即使对于刚入门的小白,也一定能从中收获很多。
教程主要包含了以下内容的展示:
- 噪点图的处理;
- 采用不同的着色器颜色表示不同高度的海拔;
- 无尽地形的实现;
- 地图块之间的接缝;
- 地形的高度衰减;
- 法线计算;
- 平面着色、彩色和纹理着色器;
- 修复差距(解决在低细节层级的地图块之间会出现一些很明显的接缝的问题)
......
4. Procedural City
开源库链接: https://lab.uwa4d.com/lab/5b5643b6d7f10a201fd8e2b8
Procedural City是一个示例项目,它使用一些技巧来构建随机漂亮的3D城市,实现过程如下:
1.(打地基)将领域块随机分配在不规则的矩形网格中,以下称该矩形网格为“块”;
2.(修正房型)使用Bin打包算法把构建分配打包在“块”内(Bin打包使用的是尝试最大化“Bin”边缘接触的启发式算法),这样可以使边缘的单位更好地拟合分配。填充“块”之后,如下图所示,会将中心非边缘的黄色分配区丢弃,就形成了如同中的包围型建筑的样子。如此,矩形建筑群便不会显得很规则,更有随机性。
3.(外部装修)首先,在每个分配区生成建筑物。然后,在建筑的外立面装饰两个图案矩阵,一个实现一些简单块的挤出,另一个确定应将哪个元素(例如栏杆、窗口、门)附加到外立面中的哪个位置。最后,在屋顶上放置一些预制体,下图的GIF依次展现了以上四个步骤的过程态。
该项目的构建技巧可以作为很好的参考,但是考虑到建筑的每个Mesh都是独立加载的,导致DC数较高,实际运行的开销较大,开发者可以考虑使用ProceduralMesh的方式去修改建筑本体,而非一层一层地嵌套建筑外设。也可以使用其他的办法在场景加载前合并网格,以达到更优的性能。
5. Road Generator Unity3d
Road Generator是一个可以为跑步或赛车类游戏生成无尽赛道的 工具 脚本。
只需在一个空的GameObject上挂载Road Generator脚本,并设置所需的参数即可运行,主要参数如下:
ChunkLength:跑道块的长度;
DrawingAmount:同一时间内激活的块数;
Number of Chunks:场景中实际存在的块数
建议:通过该脚本生成的跑道较为基础,开发者可以为单位跑道块设置一些随机元素,使跑道具有一定的随机性。此外在测试中,小编发现该赛道的动态生成是单向不可逆的,这意味着角色没有“回头路”可走。这个问题可以参考上周的 【博物纳新】《Unity海洋场景构建》 中的解决方案,将Mesh的加载改为跟随角色而非单向。
6. Procedural Cave Generator
开源库链接: https://lab.uwa4d.com/lab/5b5a51e6d7f10a201fe4b11b
Procedural Cave Generator是一个高度可定制的系统,你可以利用这个系统在Unity中去生成类似图示中的几种随机洞穴效果,当然材质是需要自己提供的。
如上图所展示,这个项目令人惊喜的是,你可以在任何绘图程序中绘制地图并将其作为纹理导入此项目,然后点击菜单上的Assets/Create,再将导入的纹理放入地图持有者的插槽中,就可以在生成器中使用该模块将绘制的地图渲染为3D洞穴。
7. Wave Function Collapse
开源库链接: https://lab.uwa4d.com/lab/5bf080be72745c25a8e1689b
Wave Function Collapse是一个使用WFC(Wave Function Collapse)算法制作的3D城市漫游场景,当然作者还提供了类似跳跃、飞行等简单等操作功能。
在测试中,小编发现,随着游览的路径增加,虽然场景有在动态地加载和销毁,但是当你走回销毁的场景,那个场景还是原来的场景,程序需要记住所有加载过得场景,因此随着加载过的场景越来越多,RAM的使用量在不断地增加,销毁操作实际上是一种伪销毁,可以说是美中不足吧。而且在这个场景中走多了真的很自闭,缺乏开阔式的随机场景也是一种遗憾,当然这都不是该项目所展示的核心内容,WFC的3D变体才是该项目所想展示给我们的。
如上图所示,WFC算法是一个利用了波函数坍塌,实现高随机性的算法,可用于制作非常多有意思的效果。
WFC算法开源库链接: https://lab.uwa4d.com/lab/5c1254f872745c25a8bc7c27
快用 UWA Lab合辑 Mark好项目!
今天的推荐就到这儿啦,或者它可直接使用,或者它需要您的润色,或者它启发了您的思路~
请不要吝啬您的点赞和转发,让我们知道我们在做对的事。当然如果您可以留言给出宝贵的意见,我们会越做越好。
以上所述就是小编给大家介绍的《【博物纳新】Procedural开源库合辑》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【博物纳新】2D破碎效果开源库测评
- 【博物纳新】Isaura—光环特效开源库评测
- 【博物纳新】水面涟漪反射效果开源库测评
- 【博物纳新】2D开源库合辑推荐
- 【博物纳新】NVIDIA可破坏开源库测评
- 【博物纳新】超级变变变,万人同屏开源库推荐!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
React Native:用JavaScript开发移动应用
【美】Truong Hoang Dung(张皇容) / 奇舞团 / 电子工业出版社 / 2015-9 / 65.00
React Native是当前移动端开发中的优秀解决方案。《React Native:用JavaScript开发移动应用》围绕着如何将一个完整App提交到App Store,讲解了使用React Native开发iOS应用所涉及的方方面面。首先介绍了Flexbox布局,教大家从零开始搭建一个初始应用,以此阐明React Native的基础运行机理;然后介绍了Flux的设计思想,怎么理解和使用Pro......一起来看看 《React Native:用JavaScript开发移动应用》 这本书的介绍吧!