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.
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.
H3D has a bustling online student community. Here's how to get involved.
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 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 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 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.
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 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 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 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.
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.
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 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 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).
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.
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.
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.
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.