private Vector3[] WarpVertices(Vector3[] inputVertices) { Vector3[] vertices = inputVertices; System.Random random = new System.Random(); int seed = random.Next(0, int.MaxValue); INoise perlin = new PerlinNoise(seed, 2.0f); FractalNoise fractal = new FractalNoise(perlin, 3, 1.0f); for (int i = 0; i < vertices.Length; i++) { Vector3 vec3 = vertices[i]; float x = vec3.x + (vec3.x * 5 * random.Next(100, 140) / 100); float y = vec3.y - (vec3.x * 7 * random.Next(100, 140) / 100); float z = vec3.z - (vec3.y * 4.5f * random.Next(100, 140) / 100); vec3 = new Vector3(x, y, z).normalized; float scale = 50f; int sign = random.Next(1, 2) == 1 ? 1 : -1; x = vec3.x + sign * (fractal.Sample1D(vec3.x) * scale); y = vec3.y + sign * (fractal.Sample1D(vec3.y) * scale); z = vec3.z + sign * (fractal.Sample1D(vec3.z) * scale); vertices[i] = new Vector3(x, y, z).normalized; } return(vertices); }