Home Technical Talk

Procedural heightmaps for surface displacement

armagon
polycounter lvl 11
Offline / Send Message
armagon polycounter lvl 11
I've just come across this procedural workflow breakdown:

http://unigine.com/articles/130605-procedural-content-generation/

And i'm fascinated how they're using noise generators to create heightmaps and then displace those heightmaps into surfaces. However, i'm curious about the details of the displacement: how can this be done in zBrush? And what about the tiling?

Replies

  • Eric Chadwick
    Options
    Offline / Send Message
    Great article!

    Something like this can be done in Zbrush, just not as easily as in Filter Forge or Substance Designer. Zbrush is not a node-based system, so when you make a sculpt you are making a unique design.

    But with node-based systems, after you make the node layout you can press a button to make an instant variation of it, by changing the underlying patterns.

    For example, this is a simple one I made.
    https://filterforge.com/filters/1543.html
    The "Filter Controls" at bottom right shows a list of the things you can change to make new variations, very quickly.

    There are ways to tile patterns in Zbrush
    http://wiki.polycount.com/wiki/EnvironmentSculpting

    In Zbrush you can easily extract height maps, to use for displacement. But you can't easily change your sculpt into an entirely new pattern, while keeping all the original levels of detail.

    The benefit of Zbrush though is you have total control. You can make exactly the pattern you want. Node-based editors make this a bit harder, they work better with procedural patterns. You can feed it a unique pattern, and have it add details to that, but it's not as easy to edit specific details.
  • armagon
    Options
    Offline / Send Message
    armagon polycounter lvl 11
    I guess i have expressed myself badly: i'm not really asking how to generate the procedural heightmaps and flows that lead into the final texture maps, but how to make use of them inside modeling tools. Given a heightmap or texture set created by a procedural tool (like substance or filter forge), how can i effectively use it inside zBrush? Or Max/Maya?

    I see they're using the rock cliffs heightmap, for example, to create those very good-looking cliff models. How did they do it? Apply a displacement map to a cylinder? And how is it possible to do that?
  • Eric Chadwick
    Options
    Offline / Send Message
    OMFG. I don't want to sound like a dick, but you need to learn how to do a little research. http://www.catb.org/esr/faqs/smart-questions.html#before

    Displacement in those programs has been explained many many times before.

    If you don't understand something, after following the instructions in that link, then please do ask, and I'll be glad to help (along with many others too). We want to help, but you need to learn too, and trust me this is the best way. Put your brain in gear.
  • armagon
    Options
    Offline / Send Message
    armagon polycounter lvl 11
    I do understand how to apply a map to a plane, like this, but it's a whole different beast using a heightmap to create geometry. For example, from this heightmap:

    http://unigine.com/articles/130605-procedural-content-generation/full/19_oilrush_canyons_side_heightmap.jpg

    How you can create the circular geometry found here:

    http://unigine.com/articles/130605-procedural-content-generation/full/18_oilrush_canyons.jpg

    Are they creating a low-poly mesh with the desired shape and using the heightmap to create fine detail, or is it something else? That's what i'm looking for.
  • m4dcow
    Options
    Offline / Send Message
    m4dcow interpolator
    armagon wrote: »
    I do understand how to apply a map to a plane, like this, but it's a whole different beast using a heightmap to create geometry. For example, from this heightmap:

    http://unigine.com/articles/130605-procedural-content-generation/full/19_oilrush_canyons_side_heightmap.jpg

    How you can create the circular geometry found here:

    http://unigine.com/articles/130605-procedural-content-generation/full/18_oilrush_canyons.jpg

    Are they creating a low-poly mesh with the desired shape and using the heightmap to create fine detail, or is it something else? That's what i'm looking for.

    These aren't being done procedurally (the geometry anyway), the talk about re-topologizing the icebergs. and basically they are using displacement maps on the sides of those objects to create geometry and then welding the sides to the top.

    They mention possibly doing actual procedural 3d in Houdini, but they aren't doing that here. Basically it looks like they are generating procedural textures with filter forge, to create a displacement map where they can preview a bunch of different rough shapes, and then choose the ones they like to iterate upon (re-topologize) then they have some more specific height maps (cliff face, rocks etc..) which they use to add more detail.
  • Eric Chadwick
    Options
    Offline / Send Message
    armagon wrote: »
    Are they creating a low-poly mesh with the desired shape and using the heightmap to create fine detail, or is it something else? That's what i'm looking for.

    It looks like you didn't read the article, as they explain exactly this process, and with pictures, in the icebergs section.
  • armagon
    Options
    Offline / Send Message
    armagon polycounter lvl 11
    Displacement of a flat high-poly mesh. After optimizing the geometry, it was used for baking of all necessary textures (ambient occlusion, normals, and cavity).

    How do they make the high-poly tile after displacement? Even if the original heightmap used for displacing was seamless, the conversion to mesh would mess with the borders, right?

    Regarding the low-poly meshes, it wasn't clear if it was hand-made or generated.
  • Eric Chadwick
    Options
    Offline / Send Message
    Ah that's a good question.

    If you download their iceberg displacement map (clicking on the thumbnail goes to a 2048x1024 jpg) it is not seamless left to right. That's strange, since Filter Forge makes tiled maps by default, so in theory it should be perfect, but I guess they didn't set this up correctly?

    Here's their map being displaced in 3ds Max. I duplicated the model to put it next to itself, and I offset the UV so the map should be seamless where the models meet (blue arrows).

    Red arrows point to the edge of their map (where it doesn't tile). Blue arrows point to the edge of the geometry (where it should tile, because that edge is inside the same map).

    j9SAGfj.jpg

    They probably didn't worry about the seam because they cleaned up the models after displacement. Anyhow if the map was seamless then each iceberg would have to be tiled in whole units, which wouldn't look very good. Some would look thin, others would look fat.
Sign In or Register to comment.