三维随机分形地形生成(11)
发布时间:2021-06-07
发布时间:2021-06-07
如果你还没运行过例子程序,现在或许是时候打开看看了。它从两次迭代生成的曲面开始。曲面是用线框绘制的,只是简单的将数组中的值用线段边接起来。数组中的值被当作 Y 值,而 X 和 Z 坐标是在数组分析时即时生成的。通过将一个方形分成两个三角形可以轻易的使用三角形绘制出这个曲面。三角形通常都是很好的图元,因为它总是凸性的平面。
用 View Opeions 对话框调节 RAndom seed 值。这会导致生成不同的曲面。调
高 iterations 值给曲面增加细节。代码限制这个值到 10 ,这对于我 32M 内存的
PentiumPro 系统有点多,看起来是黑的(或许五年以后,人们会在新的处理器和更高分辨率的显示器上运行这个程序,会对我为什么将它限制到 10 十分奇怪的……)。
第一个 H 值控制表面粗糙度,默认值为 0.7 。试着设得更高或更低看看结果如何。
是的这个算法偶尔会产生局部尖刺或皱折。但我偏爱尖或皱折不明显依赖于观察角度或飞过它的速度这种超自然的效果
蓝天白云
现在我们知道如何生成表面。我们可以生成并着色大量的三角形,也可以生成一个高分辨率的纹理图并将它应用到低分辩率的表面。不管怎样,效果相当好。那么,我们怎么生成头上的天空呢?它比你想象得要简单。
diamond-square算法拼嵌完成的数组非常适于表示云天的纹理图。与把数组看作一套高度图上的y值相反,把它看成云的不透明度数据。最小数组值代表最蓝。天空中最晰的部分,最大的值代表最白,天空中云最重的部分。分析数组并生成如下的纹理图是相当琐碎的
: