Learn how to create procedural rocks. This includes generating a high-resolution rockusing a custom rock generation tool. Once you have the high-resolution rock, you will create a low resolution version of that rock and use it to bake out displacement maps which retain the detail of the high-resolution rock. 

After that, you will procedurally texture the high-resolution rock andoutput its diffuse and roughness with another texture bake. Then, using TOPS, you will procedurally generate variations of the rock and automatically bake out all maps and geometries.

Finally, you will add a LOP variant generator so that all of the generated rocks can be added into a single USD variant to be used in Solaris. This tutorial shows techniques that extend beyond rock generation and can lend themselves to a wide range of applications.

1 | Geometry Generation

In this part you will use various techniques to generate a high-resolution rock geometry. Thiswill require a plethora of VOP-based noises to add levels of detail to the rock. In between certain noises, you will learn how to clean up the geometry to avoid intersections and floating geometry.

Length: 28:35

2 | Tool Generation

In this part you will learn to create a tool out of the high-resolution rock set-up that was created in Part 1. The tool will manage the high-resolution rock by giving you access to the parameters of the noises. Additionally, the tool will output not only the high-resolution rock, but also a proxy rock and a low-resolution rock.

Length: 17:43

3 | Texture Baking & Displacement

In this part you will learn how to bake out a displacement map of a high-resolution geometry using a low-resolution version of it. The texture can be reapplied to the low-resolution rock to regain the detail of the high-resolution rock.

Length: 10:12

4 | Procedural Texturing

In this part you will learn how to procedurally generate textures for a high-resolution rockusing curvature, noises and various other techniques. Using the high-resolution rock will allow for a detailed texture which can be baked out as a texture map and used in conjunction with the displacement map to increase the level of detail on the low-resolution rock.

Length: 22:33

5 | PDG Rock Generation

In this part, you will learn how to use TOPS to automatically generate variations of our existing rock. By feeding values into our rock generation tool through TOPS, various wedges can be generated and each one will output a different output. Using this, you will beable to add your displacement and diffuse/roughness ROP texture bake nodes into the TOPnetwork. This will automatically generate the corresponding textures for each rock variation.

Length: 25:54

6 | LOP Variant Generation

In the final part of the 'Procedural Rocks Tutorial Series', you will learn how to combine all existing geometry and texture maps into assets which can be further fed into a variant generating system which will produce a single USD asset which contains all of the rock variations as variants. This can be used in Solaris to instance rocks on a terrain.

Length: 22:02



Visual Effects artist for over 4 years and Houdini tutorial content creator. Co-founder of Nine Between, a South African Visual Effects Studio. Currently based in Johannesburg, South Africa.

More from Moeen Sayed


  • GSO 3 years, 5 months ago  | 

    Excellent, thanks.

    • Moeen 3 years, 5 months ago  | 

      No problem, thanks for watching :)

  • BenjaminMarkus 3 years, 5 months ago  | 

    Hey Moeen! I just did the first 4 lessons here, but I've gone through your whole VEX isn't scary series and the VEX project, and I have to say that I think you're one of the best tutorial content creator's on the SideFX site. You're work is extremely clear and easy to follow and you do an excellent job explaining things even when you're going a little faster. Thanks a lot for this.

    • Moeen 3 years, 5 months ago  | 

      Hey Benjamin, that means a lot to me. Thanks for leaving such a great comment, cheers!

  • DGinz001 3 years, 5 months ago  | 

    Hey Moeen,

    First of all thank you for sharing your knowledge. Really great series of tutorials. For some reason this setup is working painfully slow for me. Every change I make to the rock using the proxy takes a couple of seconds to calculate. In the tutorial it seems like you are changing parameters pretty fast and without any lag. Did you just cut all the lag out in edit or are you working on a super computer? My computer is pretty fast: Threadripper 2950X 16 cores. 128 GB ram. 4x GPS's... (I never had lags like these).
    Did I do something wrong that causes the lag or is it just that this setup is slow?



  • Vladimir Shelest 3 years, 5 months ago  | 

    DGinz001, I think you forgot to stop the render at Render view and when you change some parameters in shading, camera or etc it is start to recalculate your scene and render it again.

  • Vladimir Shelest 3 years, 5 months ago  | 

    Hi Moeen,
    I found one strange problem during baking displacement.
    When I bake displacement from hires geo without shading it's baking fine, but when I bake a hires geo with shading with displacement noise I get a small black dots in a displacement map in the area where we have a moss. Looks like you also have this artefacts. Check part05 - 24:52.
    I've tried to change a settings to avoid this problem but nothing helps.

  • FlyingHawk 3 years, 5 months ago  | 

    hi, can you share scene file? thank you

  • dunnieboy 3 years, 1 month ago  | 

    was thinking the same ... this setup worked well until I got to the solaris stuff and then ... well ... would be good to have some reference.

  • ManiAnim 2 years, 10 months ago  | 

    hi thanks for this...Im having problems cooking my TOP network, it throws and error and fails every time:

    Warning on child node /obj/topnet1/ropgeometry1/ropfetch1:
    Work item 'ropgeometry1_ropfetch1_32' lists file 'P:/Projects/MANI/MANI_PROJECT/HoudiniProjects/HoudiniProjects/theLastWarrior/wedgeAssets/loRes_rock_geo/rock.1.bgeo.sc' as an expected output file, but it wasn't found when the item cooked.

    Could this be a network problem?

    • ManiAnim 2 years, 10 months ago  | 

      Ive got this all to work except for the writing of usd files

  • AnnieDufresne 2 years, 8 months ago  | 

    Same here, wasn't found when the item cooked.

  • paudvil 1 year, 10 months ago  | 

    Hello, I am having an issue where my displacement isn't showing correctly. :S could you perhaps help me out to find why is this happening? :S

Please log in to leave a comment.