- Home /
Get Terrain textures
I want to give a script of mine a special Editor. Therefore, I want to get all Textures that are available for a terrain (just like in the terrain inspector). How can I access the count of all terrain textures and the textures as Texture2D (for displaying purposes)?
Here is a comment with just as little detail as the API !
http://docs.unity3d.com/Documentation/ScriptReference/TerrainData-splatPrototypes.html
I am just looking at my own terrain modifying project now, so have my head buried in these references. Something I am pulling apart to learn from is the Terrain Toolkit by sixtimesnothing. $$anonymous$$ight be worth grabbing just to read their code (as I am right now!) : http://www.sixtimesnothing.com/terraintoolkit
Edit : as I said, it's uncanny how I am reading up this stuff right now. Here's a short script to read the splatPrototypes :
#pragma strict
public var terrain : Terrain;
var terrainData : TerrainData;
var terrainSize : Vector3;
var heightmapWidth : int;
var heightmapHeight : int;
var heightmapScale : Vector3;
var splatPrototypes : SplatPrototype[];
function Start()
{
ReadTerrainData();
}
function ReadTerrainData()
{
// check if there is no terrain in the inspector, then use the current active terrain
if ( !terrain )
{
terrain = Terrain.activeTerrain;
}
terrainData = terrain.terrainData;
terrainSize = terrain.terrainData.size;
heightmapWidth = terrain.terrainData.heightmapWidth;
heightmapHeight = terrain.terrainData.heightmapHeight;
heightmapScale = terrain.terrainData.heightmapScale;
splatPrototypes = terrain.terrainData.splatPrototypes;
Debug.Log( splatPrototypes.Length );
// should make this into a for-loop for each bit of info in splatPrototypes for splatPrototypes.Length !
Debug.Log( splatPrototypes[0].texture );
Debug.Log( splatPrototypes[0].tileSize );
Debug.Log( splatPrototypes[0].tileOffset );
}
Answer by AlucardJay · Mar 24, 2013 at 03:38 PM
Actually, I think that is the answer to your question :
#pragma strict
public var terrain : Terrain;
var splatPrototypes : SplatPrototype[];
function Start()
{
ReadTerrainData();
}
function ReadTerrainData()
{
// check if there is no terrain in the inspector, then use the current active terrain
if ( !terrain )
{
terrain = Terrain.activeTerrain;
}
splatPrototypes = terrain.terrainData.splatPrototypes;
Debug.Log( "splatPrototypes.Length = " + splatPrototypes.Length );
for ( var i : int = 0; i < splatPrototypes.Length; i ++ )
{
Debug.Log( i );
Debug.Log( "texture : " + splatPrototypes[i].texture );
Debug.Log( "tileSize : " + splatPrototypes[i].tileSize );
Debug.Log( "tileOffset : " + splatPrototypes[i].tileOffset );
}
}
Your answer
Follow this Question
Related Questions
terrainData.heightmapTexture float value range 2 Answers
Is there a way to paint tessellation or displacement textures on a terrain? 1 Answer
Sample Color on Terrain 0 Answers
SetAlphaMaps Opacity Gradient 0 Answers
SetPixel() on Terrain 0 Answers