没有人勾边,海岸线从哪里来?
插图中的岛从高度网格开始,而非轮廓线。宽阔波形决定大形,小波形添加细节,向边缘降低的偏置让周围边框留在水下。最终表面与海平面相交的位置,就出现海岸线。它是规则的结果,不是手工描出的线。
海岸线,是表面与阈值相遇的地方。
先有高度,再有边界
高度场为每个水平位置指定一个高程。网格每边有420个样本。最初,它只是几个方向、不同相位的平滑余弦波相加。这些波是数值构件,不是模拟海浪、风或地质抬升。
随机生成器用种子813选择方向和相位。相同种子配合相同计算,就能再现同一高度场。种子不会让结果在物理上更真实,只会让选择可重复。比较修改时,这很有用,因为不至于无意中把所有配料同时换掉。

多个尺度分担工作
四组波的空间频率分别与1、2、4、8成比例,每组有六个方向不同的波。高频组使用较小幅度,因此小起伏装饰大结构,而不是把它们淹没。这与常见多尺度噪声思路相似,但这里明确使用有限个余弦波的和。
最宽的波决定大山丘和凹地的位置,细波让表面与边缘更丰富。如果全是小尺度项,结果会繁杂却缺乏整体形态;如果只保留宽波,地形和海岸就更平滑。两种极端没有谁必然错误,它们服务于不同视觉目标。

让中央占一点优势
单靠无偏置起伏,不一定产生被水包围的岛。我们加入径向项:在归一化坐标中,用0.48减去中心距离平方的0.9倍。它抬高中部、压低周边。波动场先乘以0.58,再加上这个项。
接着用零海平面比较表面:正值格点是陆地,负值在水下。脚本检查当前种子下每个边界样本都低于海平面。这是对本次生成结果的验证,并不证明任意系数或任意种子都会产生同样类型的岛。

换个水位,重画海岸
等高线图保持地形不变,画出海平面为−0.1、0和0.1时的边界。轮廓移动,是因为选中了不同高度,而不是重新生成陆地。低矮鞍部可能在一个阈值下连接区域,在另一个阈值下让它们分开。
这有助于理解等高线地图,但这里单位是任意的。相差0.1不代表0.1米,也不是海岸洪水预测。把玩具高度场变成真实灾害模型,需要实测高程、垂直基准、水文和不确定性信息,插图中没有这些内容。
像地图,不代表有地质过程
真实地形留下侵蚀、沉积、构造运动、岩石强度和水流的历史。平滑随机场不会仅因为颜色像景观,就自动重现这些机制。河网和尖锐山脊,尤其能暴露简单高度配方与合理地质形态之间的差异。
对游戏或插画,这种限制可能完全可以接受。设计者也许更需要好看的轮廓、可通行坡面或鲜明地标,而非地球科学模拟。下一步应明确测试这些目标。一张漂亮高度图,不能证明角色走得过去,也不能证明雨水会按预期排走。
可重复,让视觉探索更清楚
剖面图把一条水平线上的波动贡献、径向偏置和最终高度分开,展示彩色地形图融合在一起的配料。保留种子、只改一个系数,更容易把海岸变化归因于某个具体选择。
这是一种不限于景观的创作方法:定义连续场,结合几个可理解的影响,再选出边界。结果可以丰富,却不必神秘。海岸看似被发现,是因为它间接浮现;但每个弯折,依然来自可以检查和修改的规则。
