22 May WorldCreator: Fix for Custom Heightmaps
As I mentioned in my software review for WordCreator there is a major bug when it comes to working with imported heightmaps that makes the software crash, destroy the custom map, or simply disable every filter and erosion tools.
In this post I’d like to illustrate how and why this happens, and provide a solution for those who are suffering the nasty consequences of this bug and pray for a way to fix it.
Working with Custom Height Maps
When you first open the program an automatic terrain appears on the screen.
This terrains is randomly generated by applying a grey-scale noise filter.
The noise algorithm corresponds to a specific seed number (in this case, seed number 1416793) that can be remembered for future reuses.
By changing the seed number we can generate different types of terrain… but they will all be randomly generated.
This option won’t work for us if we already have a specific landscape distribution in mind.
As we saw in the WorldCreator review post, with the new isoline tools we can actually “draw” the mountain profiles we want, but it requires a lot of test and error to get the exact look that we are looking for.
In a situation like this, there is only one thing we can do to have total control over the terrain we want to create:
Drawing a custom heightmap, or loading an existing one (if we are trying to replicate a land that actually exists.)
I was specially interested in the custom map import option and I jumped into it—excited to see what I could achieve.
For this example I imported a custom height map I created previously in a paint software.
(To learn how to create custom heightmaps, check out this post.)
To begin the process, I opened a new project and clicked on File – Terrain Import – Image Import (BMP, JPG, PNG, TIF, TGA.)
The map size was 1024 x 1024 pixels (imported maps must always be proportion 1:1.)
The image loaded correctly, and it looked very jagged and uneven because of the quality of my imported map.
Nonetheless, I could tweak the terrain’s height and width measurements, and by clicking “Generate” the map would update with the desired size.
The real problem happened when I tried to apply the erosion filters to the terrain.
I chose a Smoothing filter to apply to my terrain, and nothing seemed to change. I increased the strength of the filter to its maximum, but still nothing.
I tried applying erosion filters such as Soft Fluvial Wide. But just as with the smoothing filter, everything just stayed the same.
I contacted the support team to ask them for a solution, and all they said was
<<In order to work with custom height maps, the filters can only be applied from the post-processing tab.>>
I did as instructed and applied the same smoothing filter through the Post tab, and it didn’t do anything noticeable until I raised the filter to it’s maximum strength.
I could then begin to see the smoothing effect, but since I was already in the maximum level, the only way of making the terrain smoother would be to repeat the filter on top of itself, doubling the calculation time.
I decided to play with the options and add a few more forming and erosion filters.
I started by applying a Mountain Full Ridge filter and the result was bad and unrealistic. I also had to increase the strength levels here or else the filters would still be almost unnoticeable.
There is another bug that sometimes when changing the height or width of the landscape, the terrain disappears and becomes flat.
This is regrettably undoable, making the user lose all the work he or she had so far.
When it came to add materials I discovered that the Selector Mask was truly awful.
At this point, is when I lost all hope of ever being able to use this software.
The Reason why this Bug happens
When a filter is applied to a heightmap, this filter modifies the original gray-scale map and overwrites it with it’s new information.
This changes are undoable, and if we suddenly decided to change the parameters—or remove the filter completely—the gray-scale map that was conforming our terrain would have already been altered and returning it to it’s original state would be impossible to do.
For this reason, the program limits the use of filters on custom maps to a post-process filtering only.
The post-process tab’s filters do not modify the original map, so it is theoretically possible to restore the map back to it’s original state (unless the software crashes; or we change the height and it deletes the map completely…)
For that reason, the WorldCreator software works best with the random noise generator or the isoline terrain tool.
This kind of terrain information is indestructible, because it is based in mathematical operations. This way, it can always be recalculated into it’s original state no matter how many filters had been applied, or how many resolution changes had been made.
How to fix this Bug
The solution for this bug it’s actually quite simple, but it requires a few steps to get it through and to understand a little bit how the software works.
As I explained in the section above, the filters are actually destroying the custom map we added to the scene. This changes cannot be undone because there is no “back-up” map to restore our map in case of necessity.
This method and great solution was provided not by the Cloddy support team, but by a user of the software named Vertexmill in the BiteTheBites forum in this post.
I think his explanation is very clear and easy to understand, so I will quote him below:
Solution provided by Vertexmill
When you import your grayscale map from an external app, it comes with a certain resolution. WorldCreator blocks this resolution (by default) by the enabled “Protect Terrain up to Level” checkbox.
I.e. if your map is 2K, this resolution will be blocked at the 2048 level. Of course, if you try to apply any filters in this situation, you get nothing. Just because it’s blocked.
You may try to decrease the protection level to make your terrain more “responsive” to your actions. But this will destroy the initial form of the terrain, and you’ll get a whole mess.
Hence, you may leave the protection level as it is, but to increase the resolution in the Dimension section, e.g. from 2K to 4K. This will work, and you’ll be able to apply filters to your terrain. But! You’ll be able to work only with the levels, those are higher than the protected one. And this is also not good, because high levels are “responsible” only for subtle features of the landscape. By other words, your terrain would not be changed much, only some minor touches would appear.
Thus, a correct work pattern is to import a terrain at a lowest possible level / resolution, which represents just a basic form. And this basic form is not a subject to change. Then to leave the protection level as it is, and to increase the Dimension to the desired level. All the levels, which are higher then the basic form represented by the lowest / protected resolution, will be free to work with.
P.S. I’ve used to import 512×512 maps, left this level protected, and increased the dimension to 2-4K. For my purposes it was Ok, but I’d say that even 512 is a very high level for a basic form. If you need more flexibility, you need lesser resolution to be imported / protected.
That’s it! Quite simple, right?
Testing the Solution
I followed Vertexmill’s instructions and imported the same map as before; only this time reduced to 256 x 256 pixels.
Then, I increased the resolution inside WorldCreator to 1024 x 1024 and locked the minimum resolution to 256. I also increased the “Random noise up to level” to 8.
I then applied the same filters in the same order as the time before, and this time the filters worked!
I also noticed the options are more advanced in the Filters tab than in the Post tab, it took less time to compute and the results were extremely more believable and realistic than before!!
Having a good selector mask to work with, I could play around with the materials tab a little bit.
Using a default gradient and a plain color for the erosion effect I got a cool result, that has much to say if compared to the previous method.
Join the discussion
Did you have the same problems with custom heightmaps as I did?
Did vertexmill’s solution helped you?
hank you for reading this post! If you liked the contents, don’t keep it to yourself… Tell your friends! Thanks to your support I can create amazing projects. Check them out on my web/social media and tell me what you think!
See you there!