Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
I'll take you through a simple example, using this public domain image from wikimedia. I assume you are familiar with the basics of GIMP.
This is our source image. I've already resized it/rotated to approximately how I'd like the tiles to come out like. Cropping is usually not necessary.
First, we want to describe which parts of the map are solid, and which are not:
This is is the source map. I created this simply by fiddling with the
Brightness/Contrast, though you can use any standard GIMP techniques. I also converted to grayscale with
Image > Mode > Grayscale, but kept the dimensions the same as the source. Finally, I smoothed the image by applying a
Gaussian Blur, then more
Anyway, having defined the source, we also need an output map that defines what the result should be. Unlike Resynthesizers "Texture Transfer" feature, Resynth Tileset requires a specific layout of 47 tiles. Fortunately, I've also provided a tool to generate good examples of this layout. Run
Filters > Tileset > Generate Resynth Tileset Output Map. I used parameters that give 100x100px tiles, which a bit of black inset into each tile, and a bit of curvature:
This gives our output map:
Now let's open all three images in GIMP, and fire up
Filters > Tileset > Resynth Tileset:
I've filled in the top 3 options. The rest can be left at the defaults. Hit go and make a cup of tea, and come back to:
Success! This image is now ready to to be loaded into any program that uses tilesets, such as Tiled, where you can assemble the individual tiles into a map.
Tips for best results
It helps to understand that this plugin is just running Resynthesizer for every tile. You'd do well to take a look at the texture transfer examples to get an idea what is going on under the hood. There's quite a lot of flexibility in the usage of the source and output maps.
As Babbage knows, any algorithm is only as good as the data going into it. Resynthesizer does not resize, rotate or do any other operations to your source, so you should be careful to do those in advance. Even though it looks like magic, it doesn't actually fabricate any data that is not in your image, so make sure your source has plenty of examples of different sorts of borders. My island sample image has a nice full outer border, but it would be even better if it had some inner curves too. You may need to paste several rotated copies of your image side by side to get the desired range.
Resynthesizer works best where there is little detail that cannot be easily inferred from the nearby neighbourhood. You may need to increase this setting based on the size of your image and features. If you have large scale features (for example the entire border of the island), you should make sure they are reflected in the source/output map so you have control over them, not Resynthesizer. In the tutorial the distance from the beach edge to the actual coast was near the neighbourhood distance, which has led to some difficulty stitching it convincingly.
You may getter better results by starting with a high res image and resize at the end. Conversely, you may find better results working at final resolution.
Note I smoothed the source map in the tutorial before using it. This tells Resynthesizer that the fine details are part of the style it should be copying, instead of something it needs to slavishly reproduce as dictated by the output map. I found it gave better results for that image. You can also turn down the
map weightparameter, but this can give some screwy results.
Tinkering with the output map
As mentioned above, the source and output maps don't need to be black and white - anything will. That means, e.g. you could color certain parts of the source map red, and they will only appear where there is red in the output map. But by far the easiest edit is to just tweak the white outline. The tileset generator makes a rather regular looking output map, but as long as you stick inside the box, you can adjust it to a more natural looking border.
Like Resynthesizer itself, you can color parts of your source and source map transparent (or alternatively, have an active selection while running the tool), and they will be ignored. We could use this, for example, to ignore the landing strip in the top left of the tutorial image, as such an obvious feature will make it easy to spot the tile based nature of the map.