Uniform Range on Exported Heightmaps?

Hello! Long time Gaea owner, infrequent user, first time caller…

My use case: I want to create a set of terrains for export as heightmaps for use in creating Affinity brushes, which will in turn be used to create a continent-sized heightmap of a fantasy setting.

The elevations on this continent range from 0 to 9000 meters, with different orogenies having, just as in the real world, different individual elevation ranges. But I’d like to create a limited number of brushes to stamp these features.

Ideally, each brush’s heightfield has the full range of a 16bit grayscale, and using leveling or other means, I can adjust the min-max elevation on a per-layer basis in Affinity.

The challenge – and where Gaea comes in (finally getting to it) – is to make sure the heightmaps exported from Gaea all share that full range of possible elevations.

Is this possible to do within Gaea, in the graph? Or should I manipulate (autolevel, perhaps) the imported heightmap in Affinity?

Hello. There is an “Autolevel” modifier that you can use on pretty much any node. It sets the terrain height the way it fills the entire range from 0 to 1.

It’s located in the bottom right modifier panel after any node:

Or you can drag out Adjust node and enable it there:

But note that any additional node creates extra cache for exporting, so using modifiers is more efficient than making new nodes for each action.

Autolevel works well as long as you’re not using Subdivision for exporting (so you’re good for exports up to 4K-8K, no worries there).

P. S. I’m using Gaea 3 in the screenshots, so the interface is slightly different, but it’s the same in Gaea 2.

Hey @mwsmedia,

This is totally possible:

  • Choose Terrain Definition based roughly on the real-world scale of the feature you are designing.

[!note]

  • If your 9000m ( scale or height) is the constant then you can build your collection into that.
  • If it differs though choose a good terrain definition representing what you’re trying to create each time.
  • Make your terrain
  • AutoLevel at the very end to convert the data cleanly into a normalised 0-1 data.
  • Export as a 16-bit heightmap.

In Affinity, control the final vertical amplitude separately.

This should give you a clean collection where your scale is represented well during the creation and your normalised process only occurs at the end.

You might see in Gaea after the auto level it stretches a lot, this should be fine for your workflow if you’re aiming to Keep height controls in Affinity.

For a super quick test

  • add a mountain node
  • auto level it
  • Mark for export that final node with (F3) and set the data to build as .exr ( or whatever you need that’s 16bit in Affinity.
  • Build

That should quickly allow you to validate the data is correct before you commit to building your first brush.

Thanks – using autolevel results in some nastly spikiness in the terrain – since I’m exporting for the purposes of a heightmap, can I disregard the visual distortion?

Yes, you will be setting the height relative in Affinity.

As far as I understand the purpose of autolevelling in cases like yours, it is meant to utilise the full bit range (data density of the image) to pack as much info into the texture as possible, since [0;1] fits five times more than [0;0.2].
So I see it in the way, your terrain occupies [0;0.2] range (20% of the project height), you autolevel it, export, and then clamp in further app (Affinity) to 20% ([0;2]) to use for your needs.

If I’m misunderstanding something about your intentions, let us know what your goals are. =)

Yeah, you’ve got it… the extreme appearance of the autoleveled result in Gaea threw me off, but I guess it’s doing just what it should: holding on to every bit of data, and dutifully displaying it. Thanks!

Thanks!

I just found out I could only mark one reply as “solution,” but rest assured I appreciate your reply as well!