Question

I wish to:

Make regular 2d perlin noise constrain into a quantized, straight line version of itself, where the straight lines are 60°

Maybe i can quantize the input of the perlin noise function to be on the 3 60° axes?

Perhaps i could rewrite 2d simplex noise so that it works from 3 axes of the x-z plane instead of just xz axes?

A less good solution is to take 3 irregular saw waves and multiply them on the 3 axes.

Goal: I am testing perlin landscapes displayed using isometric 60° Regular Triangle Mesh (i.e. hexagons). it's nicer than square mesh and a more efficient use of space. It would look very nice using lofi hex based perlin noise mointains, because on a 50 degree line for example, the vertices make zig zags, so if i can control the angles of the perlin noise, i can control the quality of the hexagon based world.

Was it helpful?

Solution

ok i have made honeycomb perlin noise LOL!

its same as perlin3d, except abs(vtx.xyz) is Mathf.Abs(vtx.x) , Mathf.Abs(vtx.x*.5-vtx.z*.866) , Mathf.Abs(vtx.x*.5+vtx.z*.866) ... here are pics of perlin noise using 60'deg axes:

60' without cubic interpolation without cubic interpolation

60' with cubic interpolation with cubic interpolation

OTHER TIPS

OK, here is another more interesting option... rather than using a square x y grid onto which random values are generated and interpolated, simply turn the x y grid into a hexagon grid by shifting every second row by 0.5 sideways and making the each row 0.866, this creates a triagle lattice instead of a square one, with a random point on every interstection of the regular triangle grid.

Afterwards, it would be necessary to interpolation in between 3 points. it would be some kind of flat triangle mountains.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top