Difference between revisions of "An Advanced Terrain and Megatexture"
Line 65: | Line 65: | ||
*The heightmap saved above is imported and rendered at a lower (usable) resolution to the ''Mesh Output'' node creating an OBJ mesh. | *The heightmap saved above is imported and rendered at a lower (usable) resolution to the ''Mesh Output'' node creating an OBJ mesh. | ||
− | = | + | = High to Low poly = |
[[Image:AdvMega Dags.jpg|thumb|320px|right|Polygon Dags to Delete]] | [[Image:AdvMega Dags.jpg|thumb|320px|right|Polygon Dags to Delete]] | ||
− | This stage will briefly explain how the | + | This stage will briefly explain how the high poly mesh exported from World Machine, can be reduced down to the low poly game mesh. |
*Load the OBJ exported from [[#World Machine: Adding Flow|World Machine]] into your preferred 3d Application. | *Load the OBJ exported from [[#World Machine: Adding Flow|World Machine]] into your preferred 3d Application. | ||
*Rotate so it's orientated correctly. | *Rotate so it's orientated correctly. | ||
Line 85: | Line 85: | ||
=== Perturbate Image (Normal Map) === | === Perturbate Image (Normal Map) === | ||
+ | The Perturbate Image is an image that is [[#Construct the Megatexture|applied to the megatexture]], and corrects the low poly mesh normal to match that of the high poly. | ||
+ | *Load the high and low poly into | ||
Revision as of 16:07, 5 December 2007
This guide will show you step by step, on how to create a detailed Megatextured Terrain.
Contents
Introduction
For this tutorial you must:
- Have a modelling package that can export as LWO, ASE or OBJ
- Have basic modelling skills
- Have basic mapping skills, as in A Simple First Map
This tutorial covers:
- Steps to create a detailed terrain mesh.
- How to assign the Megatexture
- How to add the terrain mesh to a map
- How to make a Megatexture
- How to compile a Megatexture
- How to add Water to a map
Programs used in this tutorial are:
- Mudbox
- World Machine
- Lightwave
- Maya (only used briefly)
Other similar programs can be used instead of these, but wont be covered in this tutorial.
This tutorial does not cover in detail:
- How to use Mudbox / ZBrush / World Machine / Blender / Lightwave / Maya / 3DSMax
If you already have a terrain mesh, and do not want to use Mudbox and World Machine, skip to Prepare Terrain for Megatexture .
Mudbox: Shape the Terrain
These are the basic steps for sculpting a terrain in Mudbox.
- Create a plane, and subdivide (but still keep a low tessellation).
- Change any tools you use to have the edit Direction set to Y axis.
- Create a new Layer, and sculpt the rough layout for the terrain.
- Subdivide again to as detailed as you want (or can).
- Create another layer, and sculpt more details into the terrain.
- Export to OBJ.
Convert Mesh to Heightmap
This step is needed if you want to import your current terrain mesh into World Machine.
- Firstly, rotate the terrain mesh. In Lightwave, rotate -90° around the X axis. For 3ds Max & Maya, rotate +90° around the X axis.
- Cap any holes in the mesh, and triangulate. Using a machine with an nVidia graphics card, run the following command in the ETQW console to get the heightmap (where [model] is pointing to the relative path of the .lwo, .obj or .ase mesh):
RenderBumpFlat –floatHeightmap -size 2048 2048 [model]
- An .r32 (raw 32-bit) heightmap will be saved into the same folder as your model, and this heightmap can be used in World Machine.
World Machine: Adding Flow
World Machine (World Machine Blog) is used to add erosion flow lines to the terrain. It's also useful as the flow maps can be exported to help create masks for texture distribution later in Terrain Editor. These are the basic steps made to build the World Machine device nodes.
- Blend the heightmap made from the Mudbox mesh with perlin Noise to help the Erosion filters.
- Use a snow filter around the rocks (mask used), so rocks look like they are sitting in soil.
- Pass the heightmap through two Erosion nodes, which are set up differently, and combined give a natural flowing look. Both Erosion nodes are masked around the rocks, so they will keep their shape. The first Erosion node is setup as Channeled Erosion with an Inverse Filter, calving large flow lines into the terrain. The Second is a Channeled Erosion set with No Filter , adding finer detailed flow lines.
- The heightmap output of the erosion is split so the heightmap can be saved (and later used to create a mesh), and further filters created (sediment and normal map) to help make masks for texture distribution later.
- Flow and Deposition maps from the Erosion nodes are passed through Simple Transformation nodes that brighten the output saved.
- The heightmap saved above is imported and rendered at a lower (usable) resolution to the Mesh Output node creating an OBJ mesh.
High to Low poly
This stage will briefly explain how the high poly mesh exported from World Machine, can be reduced down to the low poly game mesh.
- Load the OBJ exported from World Machine into your preferred 3d Application.
- Rotate so it's orientated correctly.
- The outer mesh border will look like it's been dragged down (an artifact from the mesh being built from a heightmap). So remove this by selecting the mesh border polygons and delete.
- Triangulate and save out as OBJ, so it can be loaded into Lightwave.
- In Lightwave use a plug-in called qemLOSS3(once installed, found in the Utilities tab) to reduce the polygons to a reasonable amount (Enemy Territory : Quake Wars used around 32,000 polygons for the 32,768 unit width terrain). If you have trouble running qemLOSS3, apply a different material other than the default.
- Fix edges that are triangulated in the wrong direction.
- Smooth subdivide the mesh, and run your mesh through qemLOSS3 again (to the same polycount as before). This will give a smoother terrain, easier for gameplay.
- Again fix edges that are triangulated in the wrong direction.
UV the Terrain
This process is written for Maya, other 3d packages will have to modify the process.
- To achieve relaxed UV borders use a mel script called worldSpaceUVLine - it can be found on Highend3D. Copy the .mel into your My Documents\maya\#.#\scripts folder and run by typing worldSpaceUVLine; in the Maya command line.
- Snap all 4 corners to the UV 0-1 square. Select all the edge uv for one side, and in the worldSpaceUVLine tool select the corresponding UV layout direction (U for horizontal, V for vertical), and press the align UV’s on selected line button. Repeat for each side.
- Make sure all holes in the mesh are capped, and run the Relax UVs tool, with the option Edge Weights set to World Space, and Pin UV Border selected. Keep repeating Relax UVs until you see no more UV movement.
Perturbate Image (Normal Map)
The Perturbate Image is an image that is applied to the megatexture, and corrects the low poly mesh normal to match that of the high poly.
- Load the high and low poly into