public void CreateHeightMap() { // Set up noise rigged = new RiggedMultifractal(frequency, lacunarity, octaves, seed, quality); perlin = new Perlin(frequency, lacunarity, persistence, octaves, seed, quality); billow = new Billow(frequency, lacunarity, persistence, octaves, seed, quality); //ModuleBase moduleBase = perlin; // Apply noise to the meshes foreach (Transform child in transform) { MeshFilter meshFilter = child.GetComponent <MeshFilter> (); Vector3[] vertices = meshFilter.sharedMesh.vertices; Vector3[] normals = meshFilter.sharedMesh.normals; Color[] colorMap = new Color[vertices.Length]; for (int i = 0; i < vertices.Length; i++) { float magnitude = (float )perlin.GetValue(vertices[i].x / scale, vertices[i].y / scale, vertices[i].z / scale); //float magnitude = (float )rigged.GetValue(vertices[i].x / scale, vertices[i].y / scale, vertices[i].z / scale); vertices [i] = Vector3.MoveTowards(vertices [i], (vertices [i] + normals [i]), magnitude * heightMultiplier); colorMap [i] = gradient.Evaluate((magnitude + 1) * 0.5f); } meshFilter.sharedMesh.vertices = vertices; meshFilter.sharedMesh.colors = colorMap; meshFilter.sharedMesh.RecalculateNormals(); } }
private ModuleBase chooseModuleBase(NoiseType moduleType) { ModuleBase moduleBase; switch (moduleType) { case NoiseType.Billow: moduleBase = new Billow(); break; case NoiseType.RiggedMultifractal: moduleBase = new RiggedMultifractal(); break; case NoiseType.Voronoi: moduleBase = new Voronoi(); break; case NoiseType.Checker: moduleBase = new Checker(); break; case NoiseType.Cylinders: moduleBase = new Cylinders(); break; case NoiseType.Spheres: moduleBase = new Spheres(); break; case NoiseType.Mix: Perlin perlin = new Perlin(); RiggedMultifractal rigged = new RiggedMultifractal(); moduleBase = new Add(perlin, rigged); break; case NoiseType.RiggedMChecker: Checker checker = new Checker(); RiggedMultifractal rigged2 = new RiggedMultifractal(); moduleBase = new Add(checker, rigged2); break; default: moduleBase = new Perlin(); break; } return(moduleBase); }
public override void OnVertexBuildHeight(PQS.VertexBuildData data) { switch (indexer) { case Indexer.Billow: bill1 = new Billow(frequency, lacunarity, persistence, Convert.ToInt32(octaves), seed, mode); if (onlyOnOcean) { if (data.vertHeight < internalRadius) { if (bill1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } } if (!onlyOnOcean) { if (bill1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } if (addNoise) { var Simp2 = new Simplex(seed, octaves, persistence, frequency); if (bill1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight = Simp2.noise(data.directionFromCenter) * noiseDeformity; } } break; case Indexer.Perlin: perl1 = new Perlin(frequency, lacunarity, persistence, Convert.ToInt32(octaves), seed, mode); if (onlyOnOcean) { if (data.vertHeight < internalRadius) { if (perl1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } } if (!onlyOnOcean) { if (perl1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } if (addNoise) { var Simp2 = new Simplex(seed, octaves, persistence, frequency); if (perl1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight = Simp2.noise(data.directionFromCenter) * noiseDeformity; } } break; case Indexer.RiggedMultifractal: rig1 = new RiggedMultifractal(frequency, lacunarity, Convert.ToInt32(octaves), seed, mode); if (onlyOnOcean) { if (data.vertHeight < internalRadius) { if (rig1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } } if (!onlyOnOcean) { if (rig1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } if (addNoise) { var Simp2 = new Simplex(seed, octaves, persistence, frequency); if (rig1.GetValue(data.directionFromCenter) > cutoff) { data.vertHeight = Simp2.noise(data.directionFromCenter) * noiseDeformity; } } break; case Indexer.Simplex: simp1 = new Simplex(seed, octaves, persistence, frequency); if (onlyOnOcean) { if (data.vertHeight < internalRadius) { if (simp1.noise(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } } if (!onlyOnOcean) { if (simp1.noise(data.directionFromCenter) > cutoff) { data.vertHeight += deformity + offset; } } if (addNoise) { var Simp2 = new Simplex(seed, octaves, persistence, frequency); if (simp1.noise(data.directionFromCenter) > cutoff) { data.vertHeight = Simp2.noise(data.directionFromCenter) * noiseDeformity; } } break; } }