GKNoiseMap

来源:互联网 发布:托福听力评分标准知乎 编辑:程序博客网 时间:2024/06/05 11:17

GKNoiseMap

一个简单的噪点数据,你可以直观地查看数据和展示噪点纹理。

概括

使用程序噪点涉及三个主要步骤,以下是GameplayKit中三个主要噪点类型:
1.噪点发生器(GKNoiseSource类)表示生成噪点的核心算法和参数。
2.噪点对象(GKNoise实例)表示通过噪点发生器生成的噪点场。你可以从一个噪点发生器创建噪点,然后加工或组合噪点来创建更多复杂的噪点图案。噪点对象都是轻量级的:GameplayKit延迟了产生噪点的计算,并应用噪点处理操作,直到你准备好创建输出。
3.GKNoiseMap对象是噪点生成和处理的具体输出。创建噪点图执行由你创建的GKNoiseSource和GKNoise对象描述的计算,根据噪点对象的3D噪点场的切片填充具有特定大小的2D网格,并使用噪点值。
你可以用不同方式使用噪点图,这里有几个小例子:
创建类似于云,石头和木纹等自然现象的纹理图像。你也可以使用噪点纹理作为普通地图,使照明下的表面看起来更自然。(请参阅SKTexture textureWithNoiseMap:方法。)
生成类似于自然地形的程序游戏世界地图。你可以通过使用过程噪点作为其底层代表来创建无限大小的游戏世界,并通过仅针对玩家当前位置周围的区域创建噪点图(及其视觉表示)来有效地管理存储和内存。(见SKTileMap类。)
增加一定程度的随机性,否则太平滑。 例如,你可以使游戏角色以抖动的方式移动,或将手持运动效果应用于游戏相机。
噪点映射的内容是浮点值的字段,默认情况下,范围为-1.0到1.0。你可以使用valueAtPosition: 和 interpolatedValueAtPosition: 方法单独访问这些值,或者使用上述方法从整个噪点图的值创建SpriteKit资源。
噪点图是有限的和二维的,但是你创建的噪点是三维的,无限的。您可以创建有趣的效果,通过在创建噪点图之前,将三维噪点变换为噪点例如:
• 通过使用圆柱形噪点发生器并应用rotateBy:方法,你可以通过柱面切片进行采样创建拥有木纹的圆柱体。
• 通过使用Perlin噪点发生器并在多个样本之间应用moveBy:方法,你可以为模拟云形成,波浪和随着时间流逝而消散的噪点图进行动画化。
从噪点图生成的纹理图像的例子
图一 从噪点图生成的纹理图像的例子

Topics

创建噪点图(Creating a Noise Map)

- initWithNoise:

通过从指定的噪点对象采样来初始化噪点图。

- initWithNoise:size:origin:sampleCount:seamless:

使用指定的参数从指定的噪点对象中采样来初始化噪点图。

- init

在整个噪点值为零的情况下初始化噪点图。

+ noiseMapWithNoise:

通过从指定的噪点对象采样来初始化噪点图。

+ noiseMapWithNoise:size:origin:sampleCount:seamless:

使用指定的参数从指定的噪点对象中采样来初始化噪点图。

访问噪点值(Accessing Noise Values)

- valueAtPosition:

返回噪点图离散样本网格中指定位置的值。

- interpolatedValueAtPosition:

返回噪点图中指定位置的值,不在离散样本网格上位置的插值结果。

- setValue:atPosition:

设置噪点图中指定位置的值。

检查噪点图(Inspecting a Noise Map)

size

相对于其创建的噪点对象的单位坐标空间,噪点图中包含的噪点样本的“切片”大小。

origin

噪点图中包含的噪点样本的“切片”位置相对于其创建的噪点对象的单位坐标空间的位置。

sampleCount

整数网格的宽度和高度,其噪点图包含采样噪点值。

seamless

一个布尔值,指示噪点图的输出是否可以在所有方向无缝重复。

关系

继承

NSObject


原创粉丝点击