Jump to content
bobbybob

Workflow for creating terrain

Recommended Posts

Workflow for creating terrain

I am trying to create a realistic mountain terrain, but I can't find many resources on it.

There is Alex Dracott's "Generating HeightField Terrain Textures" and "GDC 2017 - Houdini 16 Terrain Tools" but it leaves me with some questions that you guys maybe have the answer to.

When I look at Alex Dracott, and other artists terrains, it looks like the vertical side of the mountains is texturered very nice, but how is this possible? The vertical sides of a hightfield will always have very low resolution, because the UV's a projected down on the surface in the Y direction.

One though I had, was to create the UV's based on the quads that make up the heightfield, but this will involve some kind of remeshing, because the mesh also are scaled (Stretched).

Extreme example of UV stretching
<stretched_uvs.PNG>

 

Another thing is the texturing. In Alex Dracott's video, he uses cop to create colored noise from masks and applies them back as textures, but what is the practice for texturing a big terrain with textures/materials? I have been playing around with substance painter, and projection, to "draw" materials, is there another way? Is it normal to export the heightfield mask and generate materials in a more procedural way via substance designer, for these big areas, or it more common to create the material from scratch without any masks in something like substance designer?

And last, is it normal to create some kind of LOD system for such a project, or using UDIMS, to get the details we want when getting near curtain areas of the terrain?

Maybe I am lost, and not even near what a real world workflow looks like, but I am sure that someone on the forum has experience with this.

 

 

stretched_uvs.PNG

Share this post


Link to post
Share on other sites

hi, here are some answers:

as far as I am understand it heightfield will always have the same resolution across its entire area since it is a volume. so you shouldn't need to care about that (at least I've never noticed any resolution issues). 

when it comes to texturing, I wouldn't even think about using uvs and traditional approach of texturing things as that's very painful process for things like terrains (unles you have a very good reason to do so). what I am doing is just using various masks generated by erosion sim, combined with position based procedural patterns and running it through Mantra. to me, this procedural approach seem to be quite convenient and fast. if you need to, you can always bake into uv textures and export do different renderer/realtime engine.

 

cheers.

  • Like 1

Share this post


Link to post
Share on other sites

Stretching of UVs on extreme vertical changes will always be the weakness of a system using Y Projection UVs. In Alex's example, he doesn't have any vertical displacements nearly as extreme as your example, so that would be why you don't see the degradation you're seeing. The other weakness isn't just UV degradation, but also the lack of much terrain detail in highly sloped areas.

I recently completed a project that had very large terrains, with a few extremely vertical mountains. The workflow that I found to work best for this situation is to separate the extreme mountains and map them individually (or sculpt extra detail into them as we did), while keeping as much of the remaining terrain as possible as heightfields. You can use some of the heightfield masks to isolate the large elevation changes, but I was manually selecting areas where the mountains were for separation. This worked in my case as the output was highly driven by concept art, so it needed to be very manually directed.

As for texturing, I found exporting the heightfield masks to be very useful. I did a small amount of processing in COPs, but not much, as I preferred to use Nuke to do essentially the same processing. There wasn't much direct texturing work we did with the masks, as we mostly used them to drive scattering of trees, grass, etc. We did use painted texture maps for the rocks and such, and masked them in via shaders.

Let me know if you have any specific questions about workflow etc.! 

  • Like 1

Share this post


Link to post
Share on other sites

Thank for the answer @coltonmiland @davpe

I am still in doubt how to texture the terrain. Is it possible to generate masks from the heightfield to blend materials, to break up tiling patterns? DO you use very big textures for cliffs. Normally cliffs have very sharp and contrasted features, that makes it very easy to see tiling, how can we go about solving this? Again, is it normal to use some kind of LOD setup? If the texture have to cover big areas of the cliff, it would be possible to use a single texture, if the cliff is far away, but if the cliff get's closer, we are able to see the low texture resolution. If we then scale down the textures, we are getting tiling patterns?

I just can't find any sources on this, and find myself pretty stock. It would be possible to create a lot of custom textures, and do a lot of mapping work, but it would be great if there was some kind of known workflow for this problem

Share this post


Link to post
Share on other sites

hi, 

I can only repeat what I have said before. for texturing, use masks you get from heightfield erode, plus you can generate your own hi-res masks in shader using mesh masks with shader noises and position data. you can do full terrain texturing procedurally in Mantra. Of course it depends how much detail you need, how specific look you want and how much time you have. Using triplanar textures to finalize shading/displacement is a good idea. For general rock displacement detail Worley/Manhattan/Chebyshev noise patterns are good but it takes some practice to get to good results but you'll get great deal of flexibility and no tiling issues. Best for large areas. Otherwise triplanar projection of multiple sculpt maps is good too. Ideal is to use both. Painting huge textures is a bad idea in my opinion. Too much manual work, resources required for data handling, plus youre f*cked if somebody decides to make more significant changes to the terrain. Dunno what level of realism are you aiming at and whether you're pathtracing or using realtime engine. This may impact your workflow to some extent (Ive got minimal experience with realtime stuff). I personally never used LODs for this but I don't see any reason why you couldn't use it if you need it. \

cheers.

  • Like 1

Share this post


Link to post
Share on other sites

I am a terrain noob, but besides triplanar projection (or PxrRoundCube in RenderMan) you can also look into writing some custom code to break up texture repetition, as in this IQ article or detail textures in this David Rosen article:

 

http://www.iquilezles.org/www/articles/texturerepetition/texturerepetition.htm

https://www.gamasutra.com/blogs/DavidRosen/20091225/86222/Detail_Textures.php

 

Note these techniques are both for real-time so might not give you the fidelity you are looking for.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×