在实际的图块集(tileset)中,邻接图块的成对可能性列表会非常长,所以我们执行一个对称系统,以缩短枚举。在该系统中,每个图块会与它的对称型匹配。
需要注意的是,图块与它们分配到的letter有着相同的对称类型(换句话说,双面组D4的动作与图块和它们对应的letter同构)。这个系统足以枚举对称性的成对邻接图块,这使得图块集的邻接列表短了几倍(在summer tileset中也是如此,尽管画面不对称,系统仍认为这样的tile是对称的)。
需要注意的是,对WFC来说不受约束的节点图块集(所有五个图块都被允许)是没意义的,因为你不会碰到没有地方放置一个图块的情况。我们把有这种属性的图块集称为“简易”。例如,王氏图块集(Wang tileset)是简易的。没有特别的探索法的话,简易图块集无法生成有趣的整体排列,因为简易图块集的图块相关性会很快随距离减弱。 顺便说一下,很多很酷的 Wang tileset 都可以在 cr31的网站上找到。考虑到这个网站上的“双重”2边图块集,Wang tileset是怎样在简易的同时生成节点(没有 t-junction的话这不容易)的呢?答案是,它只能生成很少类型的节点,不能生成任意节点。 更高纬度 WFC算法在更高维度上与二维的工作方式完全相同,虽然表现不尽人意。这些立体模型是用N=2的重叠图块模型,使用5×5×5和5×5×2的块,j2直播,以及附加探索法(高度、密度、曲率等)生成的。
约束合成 WFC算法支持约束。因此,它可以简单地与其它生成算法或与人工创作结合。 ConvChain算法满足加强版的(C2)条件:它生成的输出N×N模型的受限分布与输入的模型分布完全一样。但是,ConvChain不满足(C1):它常常生成明显的人造现象。它能先运算ConvChain,得到一个采样好的构造,然后运算WFC来改正局部人造现象。这和优化器的普遍战略类似:先运行蒙特卡罗方法(Monte-Carlo method)找到接近整体最优的一个点,然后从该点运行梯度下降算法达到更高的精度。 P. F. Harrison的纹理合成算法(texture synthesis algorithm)比WFC快很多,但它在处理很长的关系时比较麻烦。这是WFC的长项,Harrison的算法能支持它的约束。它先用WFC合成一个完美的砖墙蓝图,然后在该蓝图的基础上运行受约束的纹理合成算法。 评论 为什么是最小熵探索法?我注意到,当人们绘制东西时,往往也遵循最小熵探索法。这就是为什么算法如此具有观赏性。 重叠模型与简单图块模型的关系正如高阶马尔科夫链与一阶马尔科夫链的关系。 需要注意的是,任何节点的熵都没法在扩展阶段增加,也就是说,可能性既不会增加,也不会被取消。当扩展阶段熵不能再降低了,观察步骤就被激活。如果观察步骤不能降低熵,就意味着算法已经完成运算。 (责任编辑:本港台直播) |