Download

Procedural Noise Generator [Support]

Pronoise.png

Welcome to the support thread for the Procedural Noise Generator Blueprint available on the Unreal Marketplace. Feel free to ask any questions and post suggestions.

What is it?

This Blueprint performs the Perlin noise algorithm to the parameters specified by the user. The output is used to transform the height of individual tiles on a grid. Tiles were chosen as it is the most stable example and should be supported by all versions of UE4. Tiles also display minor height changes more clearly than something like a generated mesh. This could be extended to any UE object that supports transformation at runtime.

The Blueprint is self contained, no extensions, plugins or code.

Why?

Mostly to test what Blueprints are capable of, and provide the capability to non-programmers.

If performance is a concern, see Nativizing Blueprints.

Getting Started

The easiest way to start modifying is by changing the default Blueprint settings, or the initial parameters of one of the scene functions.

These variables affect the noise output rendered to the scene.

4f90e1ce3b521f590e5087e69f74592de6fc2d29.png

This output can be modified further, after processing the algorithm but before rendering, by adjusting scene macros as demonstrated with the various scenes.
If your math capabilities are better than mine you should be able to produce very interesting results.

modifier.PNG

See it in action on YouTube:

Marketplace link:

Some useful links on Perlin noise:

http://www.redblobgames.com/maps/terrain-from-noise/

http://flafla2.github.io/2014/08/09/perlinnoise.html
http://eastfarthing.com/blog/2015-04-21-noise/
http://ryebot.com/2016/10/10/perlin-2d-lookup.html
http://angelcode.com/dev/perlin/perlin.html
http://clockworkchilli.com/blog/6_procedural_textures_in_javascript

Creative demo of procedural noise used to create terrain in html5:

webgl_noise.PNG

http://alteredqualia.com/three/examples/webgl_terrain_dynamic.html

In Ken Perlin’s own words:

http://mrl.nyu.edu/~perlin/doc/oscar.html

Then I can use this to make a whole map for my game?

Depends on your game. A Civilization type map might be 100 x 50 tiles, no problem, should generate in less than a second. Skyrim type map, way too big for Blueprints to handle, maybe. You could have a master noise array for the lowest LOD, break up the map into cells with their own noise arrays, but I have not experimented with that yet.

The links above provide a thorough explanation of the concept and principles of procedural noise generation. This project provides implementation of the algorithm in Blueprints, but is not a turn key solution. The noise values still need to be applied against objects, whether a grid of tiles or vertices on a procedural mesh.

I know in Unreal procedural generation typically refers to replicating instances of an object. This is different. This Blueprint creates (height) data algorithmically as opposed to manually, which is the textbook definition of procedural generation. Changing the seed, and/or other variables, provides near infinite possibilities from a single Blueprint. As such, you should only need one instance of this Blueprint. To change the map, you change the parameters and regenerate, not replicate.

Simplest explanation: as it loops through the grid it spits out a single value for each coordinate, which is typically used as a height value for a tile, vertex, mesh section or converted to a grayscale value.