ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

波函数坍缩 地图生成-算法过程可视化(2D)

2021-07-25 11:33:17  阅读:269  来源: 互联网

标签:Slot 图案 波函数 坍缩 2D 算法 可视化


波函数坍缩(Wave Function Collapse)生成 ,是一个随机程序化的生成算法,比较经典的是用在游戏场景的地图生成。想要了解详细的解读可以参考《波函数坍缩算法》的无限城市… ,当前文章是WFC 2D版本的实现。

点击 查看可视化样例
这有一个可视化的程序,它可以 逐步、暂停 、回放 整个计算过程 ,以便于你理解 wfc 算法。
演示

基本概念

  • Slot (孔位)

每个都对应地图上的一个确定坐标位置,初始状态,每个Slot 都包含成为任何一种图案(Model)可能性,这种可能性用"熵"来表示,经过坍缩最终成为一个确定的图案。
多种图案

  • entropy (熵)

这里指的是信息熵,当值越大时,图案的可能性就越多,演示程序为了方便将展示"熵"值进行了单位化(范围 0-1)。
单位化 熵 值

  • Model (图案模型)

具体的图案,包含有:图片资源、旋转角度、权重值(概率)、四条边信息。
model 信息

  • EdgeInfo (边信息)

每条边都有connectId ,用于判断两条边是否能够相互连接。
边连接

伪代码

一.坐标区域中 获取当前熵最小(多个则随机)且还没坍缩完成的Slot;
二.如果无法获取有效的slot,表明所有slot坍缩完毕,则计算完成,退出计算;
三.将得到的Slot坍缩成具体的对象;
四.将以坍缩过的Slot开始,对周围邻居删除与Slot不可连接(边 连接ID 不匹配)的Model,邻居的熵值会降低,将以降熵了的Slot开始,再次重复;
五.传播计算过程出错,则进行状态回退;  //wfc 算法不是每次都成功的,需要进行回退(上一次缓存的状态),保障最终的成功;
六.传播完成后,缓存当前状态;
七.再从 步骤"一" 开始循环;

数据编辑器

  • 编辑工具文档 : https://github.com/anseyuyin/wfc2D/blob/main/demos/2DMapEditor/README.md
  • 素材编辑工具

WFC2D项目

波函数坍缩算法 2D 版本的实现。
github 链接 : https://github.com/anseyuyin/wfc2D
语言环境: typescript 、 javascript
项目包含了

标签:Slot,图案,波函数,坍缩,2D,算法,可视化
来源: https://blog.csdn.net/pangzhu789/article/details/119079141

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有