嗨,

我遇到一个问题就是如何正确地绘制地形。如图所示,当前的效果:

我使用六边形的地图块,六边形的类型如草坪,沙子等。边面由程序生成,六边形的类型储存在顶点中。中心顶点储存纯的六边形类型,而六边形交界处顶点则储存所有邻近地图块类型的混合。能够生成地块的 mesh 需要用着色器来渲染。我想这应该是一个容易的事情。但好像并不然……或者我只是忽略了什么。

图片中看到的着色器只是简单地选择了最高的六边形类型,然后从一张纹理采样取其颜色。这会产生出生了硬边的效果。

BotTerrain.jpg (984×701)

我使用了GPT,Claude Sonnet,Claude Whatever——每种 ai 都制作出在我的需求下看起来不错的着色器。但实际上却不行。

一种方法是采样所有的六边形类型,然后混合它们。但是会变成一个模糊的混乱(aiClaimed 这种效果实际上并不像那样)。我尝试了很多种变体,但看起来并没有好处。

另一种方法是检测出边缘,然后使用噪声或heightmap从一张纹理中采样而不混合。但是效果也会奇怪——像小的像素渗透合在一起的感觉。这不是自然的。(ai说这看起来是天然的,但不是)

另一种方法是创建一个地块一张纹理,然后渲染一遍,然后用这个纹理来展示mesh。然而 ai 提供的着色器会‘冲淡’纹理,产生出模糊效果,奇怪的艺术品,毫无用处。

我是走对了么?我是遗漏了什么?我不知道。

技术上这个问题发生在Unity 6.3。

谢谢你阅读。