I really like how you've articulated your entire process. This was a very enriching read. A Well deserved feature!
Great article! Thanks for the awesome read.
Wow, this is so cool! Nice job!
Sebastian Zapata did an overview of his workflow, which utilized World Machine to build stunning virtual spaces. He also gave some basic tips on how to use similar terrains for real-time environments.
I’m a digital artist specialized in texture and shader creation for architectural visualization and visual effects. Currently, I’m the founder and main texture artist of Friendly Shade an upcoming texture and material library for 3d artists focused mostly on high-detailed photoscanned textures and shaders for a huge range of render engines.
I started in 2014 freelancing with products and architectural visualization projects, then I moved to animations for advertising videos and started studying photogrammetry 1 year later. In 2016, when I had a good level of knowledge on photogrammetry I started scanning my own assets and building my own library.
My father is a graphic designer and artist, and that’s been a huge influence for me since a child. When I was 11 my father taught me Adobe Photoshop and Flash (from Macromedia in that moment) because he realised how much I enjoyed painting in MS Paint and wanted to introduce me to something more “advanced”. At the age of 13 I learnt Google SketchUp by my own and since then I’ve been always so obsessed with 3d graphics.
In 2012 I first saw an animation made with Blender on YouTube and I felt in love with it, it’s been my main 3d tool since then, but not the only one; I’m always hungry of new tools and really ambitious when it comes to quality in my renders. That’s why I always like to add more and more tools to my workflow whenever it’s necessary.
I’ve been following this software for quite a while, and I was planning to study it but due all the time my work was demanding, it had not been possible until now.
One of cool things of World Machine is its relatively easy way to create terrains from procedural textures and the quality and level of detail you can achieve from them. A good computer is always necessary to build good terrains, since these are simulations and it takes a while to build the geometry and color depending on the complexity of the terrain so CPUs and GPUs are involved here as well as the RAM which is necessary when we are going to create large color and height maps. For example, this terrain I made was build from 16k maps and they took roughly 24gb of RAM.
Of course we can always use other methods like photogrammetry or sculpting, but World Machine saves some time and can always be combined with sculpting whenever it’s needed, especially in those stretched areas where the height map lacks of detail. As I didn’t sculpt or textured anything with image-based textures, one of the things I most like about this project is everything including the water is procedural. Every geometry and color is generated by the computer.
Well, in the first place I think what’s most important here is to understand the nature of things, for example how the mountains are formed, what causes each of the properties we see in them, where they are located, etc. Secondly, references are indispensable in order to copy patterns and colors. World Machine is a node based terrain generator, we have procedural textures generators (create), combiners and filters (modify) and outputs (save the terrain). Generators are nodes that produce the basic terrain. The generator can be plugged directly to the output, or plugged into a filter/combiner node to change its shape or influence the terrain. You can always select a node in order to preview how the model is affected until that specific node.
The height details and color is a combination of nodes or “devices” as called by World Machine. These start from basic noise patterns to give randomness to both displacement and color maps and then we give them the shapes with natural filters like Erosion, Coast Erosion, Thermal Erosion, Snow, etc. which are the ones that given them that natural shape and color at the same time. All the filters and noises can be tweaked in a custom menu and then combined each other with devices called combiners. Below is an illustration on how I made my terrain:
The variation of color comes up from a combination of perlin noise (randomness) and erosion output data like flow and deposition (height maps). The result is later colorized with default world colors by World Machine or it’s also possible to make a custom color palette with a color ramp or loading an image-based color palette.
This landscape I made is 35x35km at 16,384×16,384px. However, it can be any size, the problem here is the bigger the area, the bigger the resolution of the texture need to be in order to keep the same meter/pixel scale. Otherwise we will lose detail as we increase in Km size. Now, the bigger the resolution of the texture, the more RAM is needed in order to calculate all these information and it will take longer (I’ve not made any serious tests but whenever I increased the resolution it seemed to increase the processing times exponentially).
The water shader was built by me in Blender for a previous personal project I didn’t finish. It’s completely procedural like the mountain and it’s a combination of Glass, Transparent, Volume Scatter and Volume Absortion shaders. The textures involved are the procedural Noise Texture and Voronoi textures. Below is the node setup in Cycles/Blender:
Do you think it would be possible to add this whole production into the modern real-time engine?
Of course it’s possible, but there are differences between how these renders are presented in a 3D modeling software like 3Ds Max or Blender and how the real-time engines work. It’s necessary to optimize the model in order to use it in real-time depending on how the game works. For example, splitting the terrain into modules so the game can load them separately whenever they are in the range of view of the camera, and/or using LOD (level of detail) for each module by controlling polygon counts and texture sizes easily. Also in te case of textures, we can bake normals instead of using only a height map to control the whole model details like a did. That way we can reduce the polygon count to something reasonable for a game without sacrificing all the details. And there are other many ways depending on the type of game and how it’s coded.