Inserting heights in TerrainData

Hi.

I'm experimenting with procedural landscape generation and paging terraintiles. Every TerrainTile has a Unity Terrain and is being populated with heights. I am having some difficulties with building the TerrainData object for each terrain.

In this case my goal is a terrain tile of 1km square in size with a resolution of 129. My initial assumption was I could set the desired size and feed the TerrainData object with a 129x129 array of floats.

Naturally. It isn't that easy. For this purpose the SetHeights method is needed but it has no description so I haven't a clue how to use it.

Through some experimentation and studying the exceptions the mapsize seems set to 33, with no way to change it. And I have no idea what the xBase and yBase mean.

Am I looking at this from the wrong angle? It would be great if someone could explain this in more detail.

My initial assumption was I could set the desired size and feed the TerrainData object with a 129x129 array of floats.

That is correct, and yes it's that easy.

myTerrain.terrainData.SetHeights(0, 0, myTerrainData);

Where "myTerrain" is a Terrain and "myTerrainData" is a float[,]. The terrain resolution is not fixed at 33; it's only 33 if you've specifically set it that way (which would result in a very low-res terrain). If the resolution is 129, then you use a 129x129 array of floats. The xBase and yBase are the x and y offset; if you're setting the entire terrain, then they would be 0. If you weren't setting the entire terrain, then the offsets would be non-zero depending on where you wanted to put the section of terrain data.

You need to set up the property called heightmapResolution. This is by default 33 (32+1), and needs to be a power of 2 + 1.