|
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.
(comments are locked)
|
That is correct, and yes it's that easy.
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. Thanks but I still get exceptions when I try to feed it my 129x129 array. It seems the resolution is set to 33 by default when a TerrainData is constructed, but where do I change this? heightmapWidth and heightmapHeight are read-only. I've found a heightmapResolution property but this is not documented in the script reference. Is it safe to use? This is the exception I am getting: Exception: X or Y base out of bounds. Setting up to 129x129 while map size is 33x33 UnityEngine.TerrainData.SetHeights (Int32 xBase, Int32 yBase, System.Single[,] heights) [0x00000]
Aug 15 '10 at 08:49 AM
sanderman0
@Sanderman: since TerrainData.heightmapResolution isn't documented, it shouldn't be used in a webplayer because it can break in the future. Generally you'd create the TerrainData asset in the editor the usual way, then you can reference it in a script. (If you need to dynamically generate different terrain resolutions from script, that's not really feasible though.)
Aug 15 '10 at 09:27 AM
Eric5h5
(comments are locked)
|
