I'm creating some terrain zones in the style of retro 3D RPGs, specifically like Everquest. I downloaded a tool that extracts terrain models from Everquest, and after importing and some tweaking here's an example of one of them:

enter image description here

It looks like the way they did it is to have a large grid as the terrain, and assign each cell in the grid to a specific texture. And there's different textures like grass, dirt, grass-dirt transition, modular paths (like 10 textures with a dirt path drawn over grass), etc, all as separate materials.

So I've adapted that and created a workflow to make the same thing. It gets the job done, but I feel like it's a pretty tedious process for what are relatively low-fidelity models. I'm hoping there's something that can be improved about it:

  1. I make a rectangular grid in Blender, where each cell will be assigned to a texture

  2. I make all of my textures, including modular paths and what not: enter image description here

All of these textures are separate because in an atlas I end up getting texture bleeding when there's any kind of interpolation.

  1. I create my 15+ materials in blender, one for each texture. This is kind of tedious, because for each material I have to assign a shader, roughness, interpolation, image texture, etc.

  2. Reset all the polygons through the UV menu so that each cell/quad takes up the entire 256x256 texture.

  3. I apply the base grass texture to all the cells, and then from there I will assign individual cells to the different path materials to create paths for the terrain. This is also a tedious process, it's like using a tilemap to create a 2D world but a lot slower since it's individual materials that I have to assign to individual polygons.

  4. Tweak some stuff, randomize heights for vertices, etc and I can get something that I'm happy with and looks really similar.

If it's not obvious, I'm pretty new to Blender, so I definitely feel like I'm missing something that can cut down on how long it takes to make this super simple terrain. As I said, it's basically like creating 2D worlds using tilemaps, so if I have an option to just do that in another program and then in Blender somehow put it all together, that could work as well. But I don't know -- any help would be greatly appreciated!

  • $\begingroup$ maybe there is an add-on for that...or you can use python $\endgroup$
    – Chris
    Oct 17, 2021 at 4:58
  • 3
    $\begingroup$ Something like this might have what you're looking for - jeiel.itch.io/sprytile - (specifically the Tilemap features) $\endgroup$ Oct 17, 2021 at 7:36
  • $\begingroup$ If you use a texture atlas with all tiles you only need one material. Create a grid of square planes with 2 array modifiers. UV unwrap it so it can display exactly 1 tile of the image. In the Image Texture node set the interpolation method to Closest to prevent bleeding. In the Object > Link/Transfer Data you can copy the UV map, modifers, and link the material to all square planes. Use a custom property for the tile index and in the material calculate the mapping. i.sstatic.net/6fGZe.jpg $\endgroup$
    – Blunder
    Oct 18, 2021 at 0:59
  • $\begingroup$ To copy the custom properties see blender.stackexchange.com/questions/24001/…. The square planes can be shrinkwrapped on a large plane (Map 1 Forest in the example). This large plane can be subdivided (modifier) and displaced (modifier) to give the map some height: i.sstatic.net/hDv4a.jpg Last but not least, you can bake the texture of all tile planes to the large map plane and add some particle trees $\endgroup$
    – Blunder
    Oct 18, 2021 at 1:03


Browse other questions tagged .