我正在研究一个连续世界的程序生成。
最近我被建议使用高度图组合来对我的景观施加一些限制。
下一步是将两个程序生成的片段彼此连接起来,以便平滑过渡。
更准确地说,这是基于前一个片段生成下一个片段。我想知道最好的方法是什么(无论是结合高度图还是其他方式)。
如果我使用Diamond Square或Mid Displacement或任何基于封闭点的算法来生成高度,我会考虑将第一块边的值分配给第二块边,并将它们用作这些点的"随机"值。通过这种方式,过渡将是平滑的,因为第二部分中的所有其他点都已经考虑了从第一部分中获取的边缘点。
不幸的是(或幸运的是)我使用了一个单纯形噪声算法来生成高度,正如你所知道的,这是一个基于梯度的算法。
那你推荐什么呢?
你可以用和上一个问题相同的方法。
如果你的世界被一些网格划分,并产生世界chunks
,我会让所有的块更大,这样它们就会重叠它们的邻居。然后你可以调整你的高度图通过一些矩形梯度在边缘处达到0
。最后,当你对所有重叠块的调制值求和时,你应该得到一个高度图和另一个高度图之间的平滑过渡。
你仍然需要用块尺度因子和梯度数据进行实验,以获得最佳的转换和性能。幸运的是,这些操作可以通过简单的渲染在GPU上完成。