We may earn an affiliate commission when you visit our partners.
Penny de Byl and Penny Holistic3D

Updated for Unity in 2024

The creation of beautiful virtual terrains isn't just the domain of the artist, but also of the programmer. What if you could use your programming skills in C# to manipulate a mesh to create realistic landscapes, using algorithms developed by researchers studying landscape formation and erosion? Well now you can.

Read more

Updated for Unity in 2024

The creation of beautiful virtual terrains isn't just the domain of the artist, but also of the programmer. What if you could use your programming skills in C# to manipulate a mesh to create realistic landscapes, using algorithms developed by researchers studying landscape formation and erosion? Well now you can.

In this course, Penny introduces procedural terrain generation techniques using her internationally acclaimed holistic teaching style and expertise from over 25 years of teaching, research and work in games and computer graphics. Throughout the course you will follow along with hands-on workshops, designed to teach you the fundamental techniques used for generating realistic virtual landscapes.

Learn how to program and work with:

  • Voronoi Tessellation

  • Midpoint Displacement

  • Perlin Noise

  • Splat Maps

  • Trees and Vegetation

  • Clouds

  • Weather

  • Erosion

  • Water and new to 2024

  • Working with Multiple Terrain Objects

  • Dealing with URP and HDRP

Contents and OverviewThe course begins by examining the nature of a landscape and the design considerations you should include in making decisions on structure, colour and vegetation. You'll learn what makes for a natural looking terrain, so you can replicate this in Unity.

Following on, we will examine some of the most popular algorithms used in generating terrains (including many fractal and tessellation techniques) that can be used together, to form random and yet convincing mountainous vistas.

Once you are confident with landscape formation, we'll move onto texturing the terrain with a variety of images that can be placed via splatmaps onto differing heights and gradients. Then, continue to decorate the terrain with trees, rocks and grass placed with an algorithmic approach before investigating erosion methods, that will add that extra level of realism.

The course concludes with the development of a cloud generation system and an exploration of particle systems for adding rain, snow and other atmospheric effects to the finalised landscape.

Throughout, we'll be developing our own custom Unity editor code that will allow you to build extra functionality and structure into the Unity Inspector, as well as create Editor Windows of your very own.

What students are saying about Penny's courses:

  • Penny is an excellent instructor and she does a great job of breaking down complex concepts into smaller, easy-to-understand topics.

  • Penny's teaching style is exceptionally well-motivated and illustrated.

  • This course is awesome. The lecturer explains everything you need to know and encourages you to experiment and challenge yourself.

Enroll now

What's inside

Learning objectives

  • Use various algorithmic approaches to create procedurally generated content.
  • Manipulated terrain meshes with code to create realistic looking landscapes.
  • Texture terrain meshes procedurally.
  • Discuss the design principles involved in producing aesthetically pleasing terrains.
  • Manipulate the render settings in unity to produce better looking camera results.
  • Create custom unity windows and graphical user interface elements for use inside the editor.

Syllabus

This section includes an introduction to the course and provides extra information for students.
How to Study This Course

H3D has a bustling online student community.  Here's how to get involved.

Read more

How to contact us

This video is a short introduction to the course content.

This article addresses common general questions about my courses.

In this section students will learn how to interact with the Unity Terrain API using C# and discover how data for it is stored.

In this lecture students will learn how to get setup in Unity for different renderer pipelines to create a Terrain object.  An introduction to the built in terrain tools will then be covered including height creation and texturing.

In this lecture students will learn how materials are created and used to colour a terrain.

Landscape Reproduction Challenge

In this video we will discuss the settings that a brush in the terrain tools can have to give differing surface effects in addition to looking at the tiling size of materials.

In this video students will learn how to add trees to a terrain as well as create random variations in the trees.

In this video students will learn how to add extra details, such as grass, rocks or bushes to the surface of a terrain.

In this video students will learn about the design principles that make for a realistic and well balanced looking terrain.

In this lecture students will learn about some of the key terrain values that we will be working with throughout the course and what their values mean.

In this lecture students will learn how to setup their project to create a custom inspector editor that they can use to begin working on procedural generation of the terrain.

In this lecture students will learn how to begin their first procedural generation algorithm to generate random heights on the terrain.

In this lecture students will complete the code to create random heights and be challenged to write code that can reset the terrain heights back to 0.

In this lecture students will learn how to use a greyscale image to set the heights of a terrain from the colour values of the pixels.

In this lecture students will be challenged on their knowledge of heightmap and asked to write methods that work with the height values contained within.

In this lecture students will be challenged to think about how they can refactor the codebase as they are developing it.

In this lecture students will learn about the procedural algorithm that is called noise. They will investigate a variety of techniques to produce it and use it to sculpt a terrain.

In this lecture students will learn about the mathematical theory of noise and how it can be used in generating realistic terrain heights.

In this lecture students will learn how to implement a simple Perlin noise algorithm and explore it's variety of settings for different terrain effects.

In this lecture students will learn about the Brownian Motion algorithm and write up code that combines several Perlin Noise curves into one.

In this lecture we will quickly cover some helpful code that can be used with the GUI Editor to improve the layout.

In this lecture students will learn how to use more than one noise wave to create more interesting looking landscapes.

In this video students will be challenged to create a ridge noise method that will replicated a desert scene with sharpened ridges on sand dunes.

In this section students will learn about the Voronoi Tesselation technique and how phenomena in nature can be explained using the algorithm.

In this video students will learn about voronoi tessellation and how the effect can be seen in all manner of natural phenomena.

In this video students will be challenged to start writing the code for a voronoi algorithm before Penny demonstrates how to add random mountain peaks and build up the slopes.

In this lecture students will learn about differing mathematical formula that can be integrated into terrain generation to add extra interest to a plane landscape.

In this video students will be challenged to add further controls to their voronoi tessellation algorithm and be shown how to use them to make the landscapes appear more realistic.

This lecture will take you through the process of integrating multiple functions into the code to use with the Voronoi peaks.

In this video students will be challenged to modify the Voronoi algorithm to include a Perlin noise calculation to give interest to the sides of peaks.

2024: Midpoint Displacement

In this video students will learn how the midpoint displacement algorithm works.

In this video students will follow along as the code for a diamond step algorithm is added to the terrain generation code.

In this video students will learn how to extend the midpoint displacement algorithm by implementing the square step method.

In this video students will learn how to use a blurring algorithm like that used on images, to smooth a terrain.

In this video students will follow along as the smoothing algorithm is completed.

In this section students will learn about splatmaps and how these data structures are used to store the pixel colours and transparencies off a surface texture.

In this video students will learn how to setup up their project code ready to add textures onto the terrain.  The concept of splatmaps will be introduced and explained.

In this video students will learn how to load a texture to become a splatmap and then paste that texture across the surface of the terrain.

In this video students will learn how to set differing heights for placing the different splatmaps.

In this video students will learn how to use Perlin Noise to overlap textures where they intersect at the height cutoff settings.

In this video students will discover how to blend the alpha values used for the splatmaps in areas where textures overlap.

In this video students will learn how to add tile sizing and offsets to the terrain layers.

In this video students will be challenged to add a normal map to the terrain layer.

In this video students will learn how to make more room in the Inspector by adding a scrollbar for when the terrain editor becomes to large.

In this video students will learn how to add textures on different parts of a terrain based on the steepness.

In this video students will be challenged to come up with a way to set black areas left on a terrain to a default texture.

In this section students will learn how to procedurally add trees onto the surface of their terrain.

In this lecture students will start to begin writing the editor code for placing trees onto the surface of the terrain.

In this lecture students will learn how to set the heights at which trees are placed on the surface of the terrain.

In this video students will learn how to programmatically add a tag to a game object. 

In this video students will learn how to use raycasting to position trees correctly on the terrain.

In this video students will be challenged to use the minimum and maximum values for tree growth at heights and slopes to place the trees on the terrain.

In this section students will learn how to add detailed objects onto the surface of a terrain that represent mass plantings of objects like grass and small bushes.

In this lecture students will learn how to setup their projects to start adding details onto the surface of the terrain.

In this lecture students will learn how to setup the code for determining the heights and slopes for the positioning of details.

In this lecture students will learn about the differing detail scatter modes available on the terrain and how to code for each one.

Working with Detail Properties
In this section students will learn how to add a water plane to the terrain as well as program in several algorithms that simulate a variety of erosion methods.

In this video students will learn how to add a URP water plane into the scene and use the Inspector Editor to position and size it.

Adding Water Via the Terrain Editor

In this video students will learn how erosion moulds the face of a terrain for realistic effects.

In this video student will learn how rain erosion can be simulated on a procedural terrain.

In this video students will learn how thermal effects are added to the erosion of the surface of a terrain.

In this video students will learn how to use the level of the water to erode away the terrain at the shoreline.

In this video students will learn how to create a river system that erodes away at the terrain surface.

In this video students will learn how wind erodes a terrain and how it can be simulated with code.

In this video students will learn how to simulate wind erosion by considering the direction the wind comes from.

In this video students will be challenged to use the techniques learned in this section to develop their own canyon creation tool.

In this section students will learn about extra features they can add to a terrain to make it come alive from fog, to clouds to rain.

In this video students will learn how to add different types of fog to a scene and gain an understanding about how fog and the sky work together.

In this video students will learn about a variety of ways to place clouds into their scene and go through the practical steps to add a cloud plane and skydome.

In this video students will learn how to setup their project to create a cloud toy like function in the terrain editor.

In this video students will learn how to create multiple clouds and work with particle systems to move the clouds across the sky.

In this video students will get the clouds moving across the terrain at different speeds and set them to respawn at the starting location.

In this video students will learn how to apply different colours to the clouds to give them a darker shade on the bottom surface.

In this video students will learn how to use the URP Decal Projector to cast shadows onto the surface of the terrain from the clouds.

In this video students will be challenged to have the clouds set to random sizes between a minimum and maximum value.

In this video students will learn how to get setup to create rain with a particle system.

In this video students will follow along to complete the rain particle system complete with splashback from the terrain.

In this video students will learn how to add a first person controller to their terrain and attach the rain particle system to it.

In this section students will learn how to work with some extra terrain fundamentals such as creating heights across multiple terrain objects and rendering for the best effect.

In this video students will learn how to create multiple terrain objects and then begin adding perlin noise to modify their heights.

In this video students will learn how to put world based Perlin noise height values onto a system with multiple terrains.

In this video students will learn why they can get Perlin height alignment issues when working across multiple terrains.

In this video students will learn how to ensure the seams where terrains meet have exactly the same height values.

In this video students will learn how to avoid the perlin noise mirroring issue that occurs around (0,0,0).

This section contains some final thoughts and words from the instructor.

Here are some final words from the instructor.

This link provides further information on the courses you can look at taking based on your interests and skill level.

In this section students will examine the data structure of the built in Unity Terrain object and gain an appreciation of it by working with the tools manually.

Please note this information.

This lecture examines the data structures involved in the storage of a terrain and then gives an overview of the Unity Terrain object.

In this two part lecture we will step through all the existing terrain creation tools implemented in Unity to give you a better feel for what's possible.

In the second half of this two part lecture we will examine the adding of details to a terrain and finalise our discussion on the terrain object.

Save this course

Save Procedural Terrain Generation with Unity to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Procedural Terrain Generation with Unity with these activities:
Review Unity Terrain Basics
Solidify your understanding of the Unity Terrain system before diving into procedural generation. This will make it easier to understand how the algorithms are manipulating the terrain.
Browse courses on Terrain
Show steps
  • Create a new Unity project and add a Terrain object.
  • Experiment with the built-in terrain tools to sculpt a basic landscape.
  • Familiarize yourself with the Terrain settings in the Inspector.
Read 'Texturing and Modeling: A Procedural Approach'
Gain a deeper understanding of the underlying mathematical principles behind procedural generation. This book will provide a strong theoretical foundation for the course.
View Texturing & Modeling on Amazon
Show steps
  • Obtain a copy of 'Texturing and Modeling: A Procedural Approach'.
  • Read the chapters related to noise functions, fractals, and terrain generation.
  • Take notes on key concepts and algorithms.
Implement Perlin Noise
Reinforce your understanding of Perlin noise by implementing it from scratch. This will help you appreciate its properties and how it can be used to generate realistic terrain.
Show steps
  • Research the Perlin noise algorithm.
  • Implement the algorithm in C#.
  • Visualize the output of the noise function.
  • Experiment with different parameters to see how they affect the noise.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Simple Island Generator
Apply the techniques learned in the course to create a small, self-contained project. This will help you solidify your understanding and develop your problem-solving skills.
Show steps
  • Create a new Unity project.
  • Generate a basic terrain using Perlin noise or midpoint displacement.
  • Add water around the island.
  • Populate the island with trees and vegetation.
Document Your Terrain Generation Process
Improve your understanding and retention by documenting your learning process. This will also help you share your knowledge with others.
Show steps
  • Choose a terrain generation technique from the course.
  • Write a blog post or create a video tutorial explaining the technique.
  • Include code examples and visualizations.
  • Share your content online.
Contribute to a Terrain Generation Library
Deepen your understanding and contribute to the community by contributing to an open-source terrain generation library. This will expose you to real-world development practices and help you learn from others.
Show steps
  • Find an open-source terrain generation library on GitHub or GitLab.
  • Identify a bug or feature request.
  • Implement the fix or feature.
  • Submit a pull request.
Read 'The Algorithmic Beauty of Plants'
Explore the use of L-systems for generating realistic vegetation. This will enhance the realism of your terrains.
Show steps
  • Obtain a copy of 'The Algorithmic Beauty of Plants'.
  • Read the chapters related to L-systems and plant modeling.
  • Experiment with implementing L-systems in Unity to generate trees and other vegetation.

Career center

Learners who complete Procedural Terrain Generation with Unity will develop knowledge and skills that may be useful to these careers:
Terrain Modeler
Terrain modelers create digital representations of terrain for various applications, including games, simulations, and films. This course on procedural terrain generation with Unity directly applies to this role. The course's focus on manipulating terrain meshes with code, texturing terrains procedurally, and adding details like trees and vegetation provides the core skills needed for terrain modeling. Learning about erosion methods and weather effects can also enhance the realism of the models.
Game Developer
A game developer brings virtual worlds to life, and this course on procedural terrain generation with Unity is very relevant. Game developers often need to create expansive and realistic environments, and procedural generation offers a powerful way to do this efficiently. The course's focus on using programming skills in C# to manipulate meshes for landscapes directly translates to the tasks of a game developer. Moreover, learning to work with algorithms like Voronoi tessellation, midpoint displacement, and Perlin noise is helpful for any budding game developer.
Virtual Reality Developer
The role of a Virtual Reality Developer is to construct immersive and interactive experiences, and realistic terrain is often crucial for creating a sense of presence. This course in procedural terrain generation with Unity gives you the tools to create those very landscapes. The course's emphasis on generating realistic virtual landscapes using C# programming aligns perfectly with the needs of a virtual reality developer. By learning to manipulate meshes, texture terrains with splat maps, and add details like trees and erosion effects, you'll be well-equipped to build compelling VR environments. This course may also be useful in the creation of custom Unity editor code.
Simulation Engineer
Simulation Engineers use computer models to simulate real-world phenomena, and terrain often plays a key role in these simulations. This course in procedural terrain generation with Unity contributes to that skillset. The ability to create realistic and customizable terrains using procedural techniques is highly valuable for a simulation engineer. Learning to generate landscapes with algorithms like Voronoi tessellation, midpoint displacement, and Perlin noise allows for the creation of diverse and complex simulation environments. The course may also provide specific techniques for modeling weather and erosion.
Technical Artist
A Technical Artist bridges the gap between artists and programmers, optimizing artistic content for game engines and other platforms. This course on procedural terrain generation with Unity certainly helps prepare for this role. Technical artists often use procedural techniques to create and manage large amounts of terrain data efficiently. A course on manipulating meshes, texturing terrains with splat maps, and adding details like trees and vegetation is directly applicable to the tasks of a technical artist. In addition, the course may also cover the creation of custom Unity editor tools for terrain generation.
Level Designer
Level designers craft engaging and immersive game environments. If this is your passion, this course on procedural terrain generation with Unity may prove useful. While level design often involves hand-crafting specific areas, procedural generation can be used to create the initial layout and terrain, which can then be refined by the designer. The course's focus on using algorithms to generate realistic landscapes, texture terrains, and add details like vegetation provides a solid foundation for level design. Using custom Unity editor code may also prove useful in designing levels.
Geospatial Analyst
Geospatial analysts work with geographic data to analyze spatial patterns and relationships. Although not directly focused on real-world data, this course on procedural terrain generation with Unity may be useful as it provides skills in generating and manipulating digital terrain models. Geospatial analysts can use these skills to create visualizations, simulations, and models based on terrain data. The course's coverage of algorithms like Voronoi tessellation and midpoint displacement may be helpful in understanding and generating different types of terrain features. This course may also provide additional skills that can be applied to this role.
Architectural Visualization Specialist
Architectural visualization specialists create realistic renderings and animations of architectural designs. This course on procedural terrain generation with Unity may be useful in creating the surrounding environments for these visualizations. By learning to generate realistic landscapes, texture terrains, and add details like vegetation, you can create more compelling and immersive architectural presentations. The course's coverage of weather effects could also enhance the realism of the visualizations.
Environmental Artist
Environmental artists create the visual elements of game environments, including terrain, vegetation, and atmosphere. This course on procedural terrain generation with Unity may be helpful. Environmental artists can use procedural techniques to create vast and detailed landscapes efficiently. Learning to manipulate terrain meshes, texture terrains with splat maps, and add details like trees and erosion effects is highly relevant to this role. The knowledge of using custom Unity editor code may be useful in expanding the capabilities of one's workflow.
3D Modeler
3D modelers create three-dimensional representations of objects and environments. This course on procedural terrain generation with Unity can be useful. While 3D modelers typically work on individual assets, understanding how to generate terrain procedurally can be a valuable skill for creating larger environments or landscapes. The course's coverage of manipulating meshes, texturing, and adding details provides a foundation for 3D modeling in general.
Software Engineer
Software Engineers design, develop, and test software applications. This course on procedural terrain generation with Unity may be useful for those interested in specializing in graphics or game development. The course provides hands-on experience with C# programming, algorithm implementation, and Unity development, which are all valuable skills for a software engineer. The knowledge of using custom Unity editor code may prove useful.
Data Visualization Specialist
Data visualization specialists create visual representations of data to help people understand complex information. This course on procedural terrain generation with Unity is not a core skill, but it may be useful. While the course focuses on terrain generation, the underlying principles of using algorithms and code to create visual representations can be applied to data visualization. Learning to manipulate meshes and create textures may be helpful in creating interactive and engaging data visualizations.
Science Communicator
Science communicators explain scientific concepts to the public through various media. While this course on procedural terrain generation with Unity is not a direct fit, it could be useful for creating interactive visualizations of geological or geographical concepts. The course's coverage of terrain generation algorithms and weather effects could be used to create engaging educational content.
Remote Sensing Specialist
Remote sensing specialists analyze data collected from satellites and other remote sensors to study the Earth's surface. This course on procedural terrain generation with Unity is not typically required. However, the skills learned in this course may translate to the creation of visualizations from remote sensing data. In particular, the ability to generate terrain models and apply textures could be useful for creating realistic representations of the Earth's surface.
Animator
Animators create moving images using various techniques. This course on procedural terrain generation with Unity may be useful as a supplementary skill. While not directly related to animation, understanding how to generate terrain procedurally can be helpful for creating backgrounds and environments for animated scenes. The course's coverage of weather effects and vegetation can also enhance the realism of animated environments.

Featured in The Course Notes

This course is mentioned in our blog, The Course Notes. Read one article that features Procedural Terrain Generation with Unity:

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Procedural Terrain Generation with Unity.
Provides a comprehensive overview of procedural techniques applicable to terrain generation. It covers various algorithms and methods for creating realistic textures and models. While not Unity-specific, the underlying principles are directly transferable and provide a strong theoretical foundation. This book is valuable as additional reading to deepen your understanding of the algorithms used in the course.
Explores the use of L-systems for modeling plant growth. While not directly related to terrain generation, it provides valuable insights into procedural modeling and can inspire new ways to generate vegetation for your terrains. This book is more valuable as additional reading to expand your knowledge of procedural generation techniques.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser