Exemplo n.º 1
0
        public void FlipTexture()
        {
            var texture = new Texture2D(2, 2);

            texture.SetPixels(new [] { Color.white, Color.black, Color.black, Color.black });
            texture.Apply();
            ToolboxHelper.FlipTexture(texture, true);
            var horizontalFlip = texture.GetPixels();

            Assert.That(horizontalFlip[1], Is.EqualTo(Color.white));

            ToolboxHelper.FlipTexture(texture, false);
            var verticalFlip = texture.GetPixels();

            Assert.That(verticalFlip[3], Is.EqualTo(Color.white));
        }
Exemplo n.º 2
0
        // Unity PNG encoder does not support 16bit export, change will come later 2019
        public static void ExportTerrainHeightsToTexture(TerrainData terrainData, Heightmap.Format format, string path, bool flipVertical, Vector2 inputLevelsRange)
        {
            RenderTexture oldRT   = RenderTexture.active;
            int           width   = terrainData.heightmapTexture.width - 1;
            int           height  = terrainData.heightmapTexture.height - 1;
            var           texture = new Texture2D(width, height, terrainData.heightmapTexture.graphicsFormat, TextureCreationFlags.None);

            RenderTexture.active = terrainData.heightmapTexture;
            texture.ReadPixels(new Rect(0, 0, width, height), 0, 0);

            //Remap Texture
            Color[] pixels = texture.GetPixels();
            for (int i = 0; i < pixels.Length; i += 4)
            {
                pixels[i].r     = (pixels[i].r * 2) * (inputLevelsRange.y - inputLevelsRange.x) + inputLevelsRange.x;
                pixels[i + 1].r = (pixels[i + 1].r * 2) * (inputLevelsRange.y - inputLevelsRange.x) + inputLevelsRange.x;
                pixels[i + 2].r = (pixels[i + 2].r * 2) * (inputLevelsRange.y - inputLevelsRange.x) + inputLevelsRange.x;
                pixels[i + 3].r = (pixels[i + 3].r * 2) * (inputLevelsRange.y - inputLevelsRange.x) + inputLevelsRange.x;
            }
            texture.SetPixels(pixels);
            texture.Apply();

            //Flip Texture
            if (flipVertical)
            {
                ToolboxHelper.FlipTexture(texture, true);
            }

            byte[] bytes;
            switch (format)
            {
            case Heightmap.Format.TGA:
                bytes = texture.EncodeToTGA();
                path  = path + ".tga";
                break;

            default:
                bytes = texture.EncodeToPNG();
                path  = path + ".png";
                break;
            }

            File.WriteAllBytes(path, bytes);
            RenderTexture.active = oldRT;
        }