1 / 35

Terrain

Terrain. SET09115 Intro to Graphics Programming. Breakdown. Basics What do we mean by terrain? How terrain rendering works Generating terrain Working with height maps Rendering realistic terrain Texturing. Recommended Reading. Non specific

ailis
Download Presentation

Terrain

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Terrain SET09115 Intro to Graphics Programming

  2. Breakdown • Basics • What do we mean by terrain? • How terrain rendering works • Generating terrain • Working with height maps • Rendering realistic terrain • Texturing

  3. Recommended Reading • Non specific • Reimer has a tutorial on terrain rendering in XNA • http://www.riemers.net/ • The principles are essentially the same

  4. Basics

  5. Review • Texturing is the process of applying image data to a surface • Wall can be defined using simple geometry • Image of a brick wall can be added to make it a brick wall • Image of wooden wall can be added to make it a wooden wall • Texturing is the third part of what can be considered core 3D rendering • Geometry, Lighting, Texturing

  6. Review • Shaders are small programs that run on the GPU • Shaders allow us to implement effects that we may wish for in our rendered scene • Lighting, texturing being the most basic • Three types of shader • Vertex • Geometry • Fragment (or pixel)

  7. What is Terrain Rendering? • Terrain rendering is the process of rendering realistic world surfaces • Can be real-world or alien world • The goal of terrain rendering is to provide an outdoor environment for your game • Even cityscapes can have underlying terrain • Terrain rendering generally focuses on the development of hills, valleys, mountains, etc. • These can be procedurally generated

  8. Example

  9. How Terrain Rendering Works • Terrain rendering utilises base triangle meshes, manipulated by a height map, with relevant lighting and texturing added • Four key concepts • Generation of a triangle grid • Reading of texture data to set vertex heights • Generation of normals for each vertex • Texturing / colouring of vertices based on height / change in height

  10. Triangle Grid • The basic part of a terrain is a large, flat grid of triangles • A 2D array of 3D vertices • Each vertex initially has a height of 0 • The heights of each vertex are manipulated, leading to a terrain like effect

  11. Height Map • To get the heights of an individual vertex, we use a height map • Each pixel of the texture represents a height value of the terrain • Dark low, light high

  12. Texturing and Lighting • Finally, we add texturing and lighting to the terrain to get the effect we want • Normals have to be generated (or read from an image) • Textures can be blended

  13. Question?

  14. Generating Terrain

  15. Height Map Examples

  16. Terrain Mesh • The goal is to create a triangle mesh that represents the terrain to be rendered • Each vertex has a height based on the colour of the height map • Some smoothing may be required

  17. Texture Data • As you know, a texture is just a 2D array of pixels • Each pixel has an RGB(A) value associated with it when it is read in • These pixels can be analysed to determine there colour • We can use the intensity calculation from last week • This value can then be used to set the individual y components of our vertices

  18. Creating a Height Map • Sometimes you will want to create a height map from real world data • You can normally acquire height data from somewhere • Sometimes you may want your artist to generate your height map • Think Sim City or similar • You can also generate this map yourself • Procedural • Bryce (http://www.daz3d.com/i/products/bryce?)

  19. Filtering and Smoothing • Depending on how you get your height data, you might have a limited range • For example, if you used the red component, you only have 255 unique values • Technique is to take these values as large steps, and then filter based on the neighbouring vertex heights • Take the average of the vertex and its eight neighbours

  20. Generating Normals • For each vertex, we have to also generate the normals • Generally, we calculate based on the neighbouring vertices • Use cross product to generate • Can also use normal maps • Coming up next week

  21. Lighting a Terrain • Once we have a terrain and the normals, we can go about lighting it • Use the same techniques as before • Ambient light • Diffuse light • Specular light (depends on the terrain) • We can also use occlusion maps and other light maps to help provide more realistic lighting • Longer to generate

  22. Example

  23. Questions?

  24. Rendering Realistic Terrain

  25. Colouring by Height • Simplest method to increase believability of the terrain is to colour vertices based on height • Easily done in the shader • Choose a number of colours and based on height use that colour

  26. Colouring by Height Change • We can also colour based on the change of height • Steeper slopes have different colours • Usually we want to combine this with colouring by height to provide a more realistic terrain • Height used to determine base colour • Steepness used to determine colour to blend with

  27. Texturing by Height • We can perform the same operation as colouring using textures • Normally we want to blend textures between heights • Looks too artificial otherwise

  28. Texturing by Height Change • We can also take into account the change in height as a blend factor for the terrain • Provide cliff faces • This will provide the most realistic terrain using standard techniques

  29. Using Multiple Terrain Maps • Sometimes we want to use multiple terrain maps to provide other features • For example a road • Blending textures allows us to create realistic features in our terrain

  30. Grass and Vegetation • One final step in generating terrain is adding vegetation • Trees • Grass • We won’t be doing this in the practical, but if you are interested you should do some further reading • Common technique for adding grass is billboarding • Common technique for adding trees is instancing

  31. Billboarding • Billboarding involves rendering sprites in world space • As sprites are 2D, they always face the camera • Gives a weird effect when moving • Billboarding is often used in particle effects

  32. Example

  33. Questions?

  34. To do this week… • Practical this week is on lighting • Ambient, diffuse, specular, phong • Long practical, with lots of shade usage • Terrain will be the last practical we do • Three weeks time • If you are interested, there are numerous tutorials online so you don’t have to wait

  35. Summary • Terrain rendering is one of the commonest techniques used in 3D games • Realistic outdoor environments being the goal • Generating terrain is actually quite easy • Height map • Triangle mesh • Terrain textures • You normally want to optimise as well • Sub grids of the terrain for culling

More Related