LoginSignup
1
1

More than 5 years have passed since last update.

【Unity】terrainDataのalphamapの解像度を下げる

Last updated at Posted at 2017-02-25

Unityのterrainを使って地形を作った場合、地形にどのようにテクスチャを貼り付けるかはalphamapという画像データに記録されています。
このalphamapの解像度を下げたい場合に、インスペクターを使って解像度を下げるとデータが失われるようです。

そこで、解像度を下げるスクリプトを書いてみました。

//4096から1024へ下げる使い捨てスクリプト
public class hogehoge : MonoBehaviour {
    public TerrainData terrainData;
    // Use this for initialization
    void Start () {
        //αマップを書き換え。
        float[,,] oldMap = terrainData.GetAlphamaps(0, 0, terrainData.alphamapWidth, terrainData.alphamapHeight);
        float[,,] newMap = new float[1024, 1024, 4];
        for(var x = 0; x < 1024; x++)
        {
            for(var y = 0; y < 1024; y++)
            {
                var oldMapX = Mathf.Min(x * 4, terrainData.alphamapWidth-1);
                var oldMapY = Mathf.Min(y * 4, terrainData.alphamapHeight - 1);
                newMap[x,y,0] = oldMap[oldMapX,oldMapY,0];
                newMap[x, y, 1] = oldMap[oldMapX, oldMapY, 1];
                newMap[x, y, 2] = oldMap[oldMapX, oldMapY, 2];
                newMap[x, y, 3] = oldMap[oldMapX, oldMapY, 3];

            }
        }
        //αマップを差し替える。
        terrainData.alphamapResolution = 1024;
        terrainData.SetAlphamaps(0, 0, newMap);
        terrainData.RefreshPrototypes();
    }
}

4096から1024への決め打ちで解像度を下げる使い捨てのコードですのでご注意ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1