{"id":21597598,"url":"https://github.com/aadit3003/procedurally-generated-terrains","last_synced_at":"2025-04-11T00:53:11.705Z","repository":{"id":130393278,"uuid":"402884584","full_name":"Aadit3003/procedurally-generated-terrains","owner":"Aadit3003","description":"Adventures in procedurally generated terrain, using the Unity engine. Used Perlin Noise with octaves to create a semi-realistic landscape.","archived":false,"fork":false,"pushed_at":"2021-09-06T17:04:02.000Z","size":19809,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T00:53:00.494Z","etag":null,"topics":["perlin-noise","procedural-generation","voxel"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aadit3003.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-09-03T19:59:37.000Z","updated_at":"2024-10-04T05:35:08.000Z","dependencies_parsed_at":"2023-03-15T20:15:41.224Z","dependency_job_id":null,"html_url":"https://github.com/Aadit3003/procedurally-generated-terrains","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadit3003%2Fprocedurally-generated-terrains","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadit3003%2Fprocedurally-generated-terrains/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadit3003%2Fprocedurally-generated-terrains/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadit3003%2Fprocedurally-generated-terrains/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aadit3003","download_url":"https://codeload.github.com/Aadit3003/procedurally-generated-terrains/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322609,"owners_count":21084336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["perlin-noise","procedural-generation","voxel"],"created_at":"2024-11-24T18:09:27.045Z","updated_at":"2025-04-11T00:53:11.685Z","avatar_url":"https://github.com/Aadit3003.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Procedurally Generated Terrain\nThis project demonstrates procedural generation through a terrain (mesh) made in Unity, using Perlin Noise. Procedural generation is a method of algorithmically creating data, that combines human-generated assets and computer-generated pseudo-randomness.\n\n# Perlin Noise\nPerlin noise is a gradient noise that generates a coherent pseudo-random visual pattern. It was developed by Ken Perlin in 1983, to produce natural appearing textures in CGI for the sci-fi film *Tron*. Since all the details in Perlin noise are of the same size, multiple scaled copies can be used to create a variety of procedural textures.\n\n*Perlin Noise:*\u003cbr/\u003e\n\u003cimg src=\"https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/91f311ccbc27a468bb44cd03acfb859d1bde4556/Demo%20Images/1_vs239SecVBaB4HvLsZ8O5Q.png\" width=\"200\"\u003e\u003cbr/\u003e\n*Random Noise:*\u003cbr/\u003e\n\u003cimg src=\"https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/08b27199a1ddac58ab63126e37afd365ed9a9e5b/Demo%20Images/1_H6lwuHlprj1GYqRmav_Y2A.png\" width=\"200\"\u003e\u003cbr/\u003e\n\nThe following mesh was made by generating the Y co-ordinate using the PerlinNoise function from Unity’s Scripting API (Shaded using Unity's Universal Rendering Pipeline). \u003cbr/\u003e\n\n- *(75x75) vertex Mesh with 1 layer of Perlin Noise:* \u003cbr/\u003e\n\u003cimg src=\"https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/91f311ccbc27a468bb44cd03acfb859d1bde4556/Demo%20Images/Perlin.PNG\" width=\"500\"\u003e\u003cbr/\u003e\n\n# Octaves\nTo produce more realistic surfaces, multiple layers of Perlin Noise, (know as ‘octaves’) are used. Different parameters such as Scale, Octaves, Lacunarity and Persistence can be used to control the appearance of the mesh. For example, here are some (75x75) vertex meshes with different numbers of octaves: \u003cbr/\u003e\n(Parameters: Scale= 26, Lacunarity= 0.5, Persistence= 2)\n\n- **1 octave:** \u003cbr/\u003e\n\u003cimg src=\"https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/91f311ccbc27a468bb44cd03acfb859d1bde4556/Demo%20Images/1.PNG\" width=\"400\"\u003e\u003cbr/\u003e\n\n- **2 octaves:** \u003cbr/\u003e\n\u003cimg src=\"https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/91f311ccbc27a468bb44cd03acfb859d1bde4556/Demo%20Images/2.PNG\" width=\"400\"\u003e\u003cbr/\u003e\n\n- **3 octaves:** \u003cbr/\u003e\n\u003cimg src=\"https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/91f311ccbc27a468bb44cd03acfb859d1bde4556/Demo%20Images/3.PNG\" width=\"400\"\u003e\u003cbr/\u003e\n\n- **4 octaves:** \u003cbr/\u003e\n\u003cimg src=\"https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/91f311ccbc27a468bb44cd03acfb859d1bde4556/Demo%20Images/4.PNG\" width=\"400\"\u003e\u003cbr/\u003e\n\n# Terrains and Colour Maps\nA simple terrain can be obtained from these meshes by applying a Colour Map according to the vertex height (Y-Coordinate). Naturally, using a higher number of vertices in the mesh would produce a more realistic landscape. For the purposes of this demo, a (75x75) vertex mesh was used.\n- *Procedurally Generated Terrain* \u003cbr/\u003e\n ![Terrain gif](https://github.com/Aadit3003/Procedurally-Generated-Mesh/blob/91f311ccbc27a468bb44cd03acfb859d1bde4556/Demo%20Images/Animation.gif)\n\n# Applications\nProcedural generation is a branch of media synthesis and is often used to create textures and 3D models. Some of its modern applications include:\n### Open-World Video Games\nOpen-world games use procedural generation systems to create their pixel or voxel-based biomes. The most well-known example of this is **Minecraft**, which allows the player to also adjust generation parameters. Additionally, **No Man's Sky** features a universe with 18 quintillion procedurally generated planets, each of which is regenerated using a single random seed number in a deterministic engine.\n### CGI in Films\nProcedural generation is used to rapidly create visually interesting and accurate CGI. Recently, it was used in \u003cbr/\u003e\n **The Mandalorian** which used the modified Unreal Engine 4 to create gorgeous alien landscapes. It was also used in **The Lord of the Rings** trilogy for crowd-related visual effects such as giant armies.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faadit3003%2Fprocedurally-generated-terrains","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faadit3003%2Fprocedurally-generated-terrains","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faadit3003%2Fprocedurally-generated-terrains/lists"}