objective-c – iOS:从非图像数据生成图像(Godus like landscape)

前端之家收集整理的这篇文章主要介绍了objective-c – iOS:从非图像数据生成图像(Godus like landscape)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以在看到 Godus的图像时,我想知道如何生成一个简单,非交互式的2D图像,具有不同高度或不同高度的不同颜色,如下图所示.

我只想到在没有房屋,树木对象和单位的情况下生成地形的基本颜色层面.我没有想到创建一个可以解决这个问题的图形引擎,而是一种在屏幕上生成平面图像的简单方法.

问题是双重的:

1,什么样的数据可以用于这种一代?我正在考虑ASCII艺术,它是一种容易创建和修改,以快速改变地形,但是很难提供高度信息.

2,在准备好数据之后,现有的框架,类,方法方法可用于解决生成.

Godus:

ASCII艺术(北欧与挪威,挪威为#,芬兰为欧洲,俄罗斯为%

(取自MapBox文档:http://mapbox.com/developers/utfgrid/#map_data_as_ascii_art)

解决方法

如果你想创建一个简单的2D,轮廓图像,我会尝试以下:

>创建一些高度数据.我只是使用灰度图像,而不是ascii.您可以在MS Paint中编写基本的高度图,或任何类似的.
>平滑数据.例如,应用模糊,或使用平滑滤镜增加分辨率.
>考虑将所有高度数据压缩到某一点以下 – 如果您想要的话,这表示水位.
>量化数据.你量化得越多,轮廓越少越明显.
>通过调色板查找应用假着色.例如:低洼地区蓝色,水,然后黄色,沙,绿色为草,棕色为地球,灰色为岩石,白色为雪.

重要的部分是放大/平滑滤波器,它为您的轮廓创建更有趣的形状,实际上创建轮廓的量化本身.

你可以玩这个阶段.例如,您可以向地形引入一些噪音,使其看起来更自然,如果您的源数据非常干净.或者你可以增加平滑度,如果你想要一切都很圆滑.

如果你想使用ascii,你可以直接从中生成位图,这不是棘手的.你用作例子的ascii是按国家而不是地形分开的,所以虚假着色和轮廓可能会做错事.你可以用它作为一个简单的地形发生器的输入,也许只是有几个字符来表示你想要的土地,海洋,山脉等.

这是我敲下的一个非常基本的例子,这只是我建议的技术的一个应用.我没有使用任何框架或库,只是一些简单的图像处理功能,以及我发现的欧洲高度图:

猜你在找的C&C++相关文章