From 03bc3a222905896dbbbbc4b4da8c5cea61c5a792 Mon Sep 17 00:00:00 2001 From: "Matthias Puchstein (s0wlz)" Date: Sat, 13 Dec 2025 18:02:07 +0100 Subject: [PATCH] fixed the script --- Assets/Editor/GeoTileImporter.cs | 516 ++++++++++++------ .../height_png16/dgm1_32_328_5511.png.meta | 10 +- .../height_png16/dgm1_32_328_5512.png.meta | 10 +- .../height_png16/dgm1_32_328_5513.png.meta | 10 +- .../height_png16/dgm1_32_328_5514.png.meta | 10 +- .../height_png16/dgm1_32_328_5515.png.meta | 10 +- .../height_png16/dgm1_32_329_5511.png.meta | 10 +- .../height_png16/dgm1_32_329_5512.png.meta | 10 +- .../height_png16/dgm1_32_329_5513.png.meta | 10 +- .../height_png16/dgm1_32_329_5514.png.meta | 10 +- .../height_png16/dgm1_32_329_5515.png.meta | 10 +- 11 files changed, 388 insertions(+), 228 deletions(-) diff --git a/Assets/Editor/GeoTileImporter.cs b/Assets/Editor/GeoTileImporter.cs index 19bf67b..c214822 100644 --- a/Assets/Editor/GeoTileImporter.cs +++ b/Assets/Editor/GeoTileImporter.cs @@ -1,178 +1,338 @@ -using System; -using System.Globalization; -using System.IO; -using UnityEditor; -using UnityEngine; - -public class GeoTileImporter : EditorWindow -{ - // Default paths (your desired layout) - private string tilesCsvPath = "Assets/GeoData/tile_index.csv"; - private string heightmapsDir = "Assets/GeoData/height_png16"; - - // Terrain settings - private float tileSizeMeters = 1000f; - private int heightmapResolution = 1025; - private string parentName = "Geo_Terrain_Tiles"; - - private bool deleteExisting = false; - - [MenuItem("Tools/Geo Tiles/Import Terrain Tiles (PNG16)")] - public static void ShowWindow() - { - var win = GetWindow("Geo Tile Importer"); - win.minSize = new Vector2(560, 260); - } - - private void OnGUI() - { - GUILayout.Label("Inputs", EditorStyles.boldLabel); - tilesCsvPath = EditorGUILayout.TextField("tile_index.csv", tilesCsvPath); - heightmapsDir = EditorGUILayout.TextField("height_png16 dir", heightmapsDir); - - GUILayout.Space(10); - GUILayout.Label("Terrain", EditorStyles.boldLabel); - tileSizeMeters = EditorGUILayout.FloatField("Tile size (m)", tileSizeMeters); - heightmapResolution = EditorGUILayout.IntField("Heightmap resolution", heightmapResolution); - parentName = EditorGUILayout.TextField("Parent object name", parentName); - deleteExisting = EditorGUILayout.ToggleLeft("Delete existing terrains under parent", deleteExisting); - - GUILayout.Space(10); - if (GUILayout.Button("Import / Rebuild")) - ImportTiles(); - - EditorGUILayout.HelpBox( - "Creates one Unity Terrain per CSV row and positions tiles on a meter grid.\n" + - "Y-offset is set to global_min and Terrain height to (global_max-global_min) for real elevations.", - MessageType.Info); - } - - private void ImportTiles() - { - if (!File.Exists(tilesCsvPath)) - { - Debug.LogError($"CSV not found: {tilesCsvPath}"); - return; - } - if (!Directory.Exists(heightmapsDir)) - { - Debug.LogError($"Heightmap dir not found: {heightmapsDir}"); - return; - } - - var parent = GameObject.Find(parentName); - if (parent == null) parent = new GameObject(parentName); - - if (deleteExisting) - { - for (int i = parent.transform.childCount - 1; i >= 0; i--) - { - DestroyImmediate(parent.transform.GetChild(i).gameObject); - } - } - - var ci = CultureInfo.InvariantCulture; - var lines = File.ReadAllLines(tilesCsvPath); - - if (lines.Length < 2) - { - Debug.LogError("CSV has no data rows."); - return; - } - - // Determine origin from min xmin/ymin so SW-most tile starts at (0,0) - double originX = double.PositiveInfinity; - double originY = double.PositiveInfinity; - - for (int i = 1; i < lines.Length; i++) - { - var parts = lines[i].Split(','); - if (parts.Length < 9) continue; - - originX = Math.Min(originX, double.Parse(parts[1], ci)); - originY = Math.Min(originY, double.Parse(parts[2], ci)); - } - - int imported = 0; - - for (int i = 1; i < lines.Length; i++) - { - var parts = lines[i].Split(','); - if (parts.Length < 9) continue; - - string tileId = parts[0]; - double xmin = double.Parse(parts[1], ci); - double ymin = double.Parse(parts[2], ci); - double globalMin = double.Parse(parts[5], ci); - double globalMax = double.Parse(parts[6], ci); - int outRes = int.Parse(parts[7], ci); - - if (outRes != heightmapResolution) - Debug.LogWarning($"Tile {tileId}: CSV out_res={outRes}, importer expects {heightmapResolution}."); - - float heightRange = (float)(globalMax - globalMin); - - string pngPath = Path.Combine(heightmapsDir, $"{tileId}.png").Replace("\\", "/"); - var tex = AssetDatabase.LoadAssetAtPath(pngPath); - if (tex == null) - { - Debug.LogError($"Missing heightmap for {tileId}: {pngPath}"); - continue; - } - - // Ensure readable + uncompressed + linear for height usage - var texImporter = (TextureImporter)AssetImporter.GetAtPath(pngPath); - if (texImporter != null) - { - bool changed = false; - - if (!texImporter.isReadable) { texImporter.isReadable = true; changed = true; } - if (texImporter.textureCompression != TextureImporterCompression.Uncompressed) - { - texImporter.textureCompression = TextureImporterCompression.Uncompressed; - changed = true; - } - if (texImporter.sRGBTexture) { texImporter.sRGBTexture = false; changed = true; } - - if (changed) texImporter.SaveAndReimport(); - } - - var terrainData = new TerrainData - { - heightmapResolution = heightmapResolution, - size = new Vector3(tileSizeMeters, heightRange, tileSizeMeters), - }; - - var pixels = tex.GetPixels(); - int w = tex.width; - int h = tex.height; - - if (w != heightmapResolution || h != heightmapResolution) - Debug.LogWarning($"Tile {tileId}: PNG is {w}x{h}, expected {heightmapResolution}x{heightmapResolution}."); - - var heights = new float[h, w]; - for (int y = 0; y < h; y++) - for (int x = 0; x < w; x++) - heights[y, x] = pixels[y * w + x].r; - - terrainData.SetHeights(0, 0, heights); - - var go = Terrain.CreateTerrainGameObject(terrainData); - go.name = tileId; - go.transform.parent = parent.transform; - - float ux = (float)(xmin - originX); - float uz = (float)(ymin - originY); - - go.transform.position = new Vector3(ux, (float)globalMin, uz); - - // Reasonable default (also helpful later on Quest) - var terrain = go.GetComponent(); - terrain.drawInstanced = true; - - imported++; - } - - Debug.Log($"Imported {imported} terrain tiles under '{parentName}'."); - } -} +// Assets/Editor/GeoTileImporter.cs +// Robust terrain tile importer for Unity (URP or Built-in). +// - Parses CSV header -> column name mapping (order-independent) +// - Validates required columns exist +// - Imports 16-bit PNG heightmaps (tries Single Channel R16 + ushort pixel read; falls back safely) + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using UnityEditor; +using UnityEngine; + +public class GeoTileImporter : EditorWindow +{ + private string tilesCsvPath = "Assets/GeoData/tile_index.csv"; + private string heightmapsDir = "Assets/GeoData/height_png16"; + + private float tileSizeMeters = 1000f; + private int heightmapResolution = 1025; + + private string parentName = "Geo_Terrain_Tiles"; + private bool deleteExisting = false; + + [MenuItem("Tools/Geo Tiles/Import Terrain Tiles (PNG16)")] + public static void ShowWindow() + { + var win = GetWindow("Geo Tile Importer"); + win.minSize = new Vector2(620, 300); + } + + private void OnGUI() + { + GUILayout.Label("Inputs", EditorStyles.boldLabel); + tilesCsvPath = EditorGUILayout.TextField("tile_index.csv", tilesCsvPath); + heightmapsDir = EditorGUILayout.TextField("height_png16 dir", heightmapsDir); + + GUILayout.Space(10); + GUILayout.Label("Terrain", EditorStyles.boldLabel); + tileSizeMeters = EditorGUILayout.FloatField("Tile size (m)", tileSizeMeters); + heightmapResolution = EditorGUILayout.IntField("Heightmap resolution", heightmapResolution); + + GUILayout.Space(10); + GUILayout.Label("Scene", EditorStyles.boldLabel); + parentName = EditorGUILayout.TextField("Parent object name", parentName); + deleteExisting = EditorGUILayout.ToggleLeft("Delete existing terrains under parent", deleteExisting); + + GUILayout.Space(12); + if (GUILayout.Button("Import / Rebuild")) + ImportTiles(); + + EditorGUILayout.HelpBox( + "Creates one Unity Terrain per CSV row and positions tiles on a meter grid.\n" + + "Absolute elevation mapping: Terrain Y = global_min, Terrain height = (global_max - global_min).\n" + + "CSV is header-driven (order-independent).", + MessageType.Info); + } + + private static void EnsureHeightmapImportSettings(string assetPath) + { + var ti = (TextureImporter)AssetImporter.GetAtPath(assetPath); + if (ti == null) return; + + bool changed = false; + + if (!ti.isReadable) { ti.isReadable = true; changed = true; } + if (ti.sRGBTexture) { ti.sRGBTexture = false; changed = true; } + + if (ti.textureCompression != TextureImporterCompression.Uncompressed) + { + ti.textureCompression = TextureImporterCompression.Uncompressed; + changed = true; + } + + if (ti.textureType != TextureImporterType.SingleChannel) + { + ti.textureType = TextureImporterType.SingleChannel; + changed = true; + } + + var ps = ti.GetDefaultPlatformTextureSettings(); + if (ps.format != TextureImporterFormat.R16) + { + ps.format = TextureImporterFormat.R16; + ti.SetPlatformTextureSettings(ps); + changed = true; + } + + if (changed) ti.SaveAndReimport(); + } + + private static string NormalizeHeader(string s) + => (s ?? "").Trim().ToLowerInvariant(); + + private static Dictionary BuildHeaderMap(string headerLine) + { + var map = new Dictionary(); + var cols = headerLine.Split(','); + for (int i = 0; i < cols.Length; i++) + { + var key = NormalizeHeader(cols[i]); + if (string.IsNullOrEmpty(key)) continue; + if (!map.ContainsKey(key)) + map[key] = i; + } + return map; + } + + private static bool HasAll(Dictionary map, params string[] required) + { + foreach (var r in required) + if (!map.ContainsKey(NormalizeHeader(r))) + return false; + return true; + } + + private void ImportTiles() + { + Debug.Log($"[GeoTileImporter] START\n csv={tilesCsvPath}\n pngDir={heightmapsDir}"); + + if (!File.Exists(tilesCsvPath)) + { + Debug.LogError($"[GeoTileImporter] CSV not found: {tilesCsvPath}"); + return; + } + if (!Directory.Exists(heightmapsDir)) + { + Debug.LogError($"[GeoTileImporter] Heightmap dir not found: {heightmapsDir}"); + return; + } + + var parent = GameObject.Find(parentName); + if (parent == null) parent = new GameObject(parentName); + + if (deleteExisting) + { + for (int i = parent.transform.childCount - 1; i >= 0; i--) + DestroyImmediate(parent.transform.GetChild(i).gameObject); + } + + var ci = CultureInfo.InvariantCulture; + var lines = File.ReadAllLines(tilesCsvPath); + + Debug.Log($"[GeoTileImporter] Read {lines.Length} lines."); + if (lines.Length < 2) + { + Debug.LogError("[GeoTileImporter] CSV has no data rows (need header + at least 1 row)."); + return; + } + + var headerLine = lines[0].Trim(); + var headerMap = BuildHeaderMap(headerLine); + Debug.Log($"[GeoTileImporter] Header: {headerLine}"); + Debug.Log($"[GeoTileImporter] Header columns mapped: {string.Join(", ", headerMap.Keys)}"); + + // Required columns (order-independent) + string[] required = { "tile_id", "xmin", "ymin", "global_min", "global_max", "out_res" }; + if (!HasAll(headerMap, required)) + { + Debug.LogError("[GeoTileImporter] CSV missing required columns. Required: " + + string.Join(", ", required) + + "\nFound: " + string.Join(", ", headerMap.Keys)); + return; + } + + int IDX_TILE = headerMap["tile_id"]; + int IDX_XMIN = headerMap["xmin"]; + int IDX_YMIN = headerMap["ymin"]; + int IDX_GMIN = headerMap["global_min"]; + int IDX_GMAX = headerMap["global_max"]; + int IDX_RES = headerMap["out_res"]; + + // Compute origin from min xmin/ymin + double originX = double.PositiveInfinity; + double originY = double.PositiveInfinity; + + int validRowsForOrigin = 0; + for (int i = 1; i < lines.Length; i++) + { + var line = lines[i].Trim(); + if (string.IsNullOrWhiteSpace(line)) continue; + + var parts = line.Split(','); + // Robust: just ensure indices exist in this row + int needMaxIndex = Math.Max(Math.Max(Math.Max(Math.Max(IDX_TILE, IDX_XMIN), IDX_YMIN), IDX_GMIN), Math.Max(IDX_GMAX, IDX_RES)); + if (parts.Length <= needMaxIndex) + { + Debug.LogWarning($"[GeoTileImporter] Origin scan: skipping line {i + 1} (too few columns: {parts.Length}). Line: '{line}'"); + continue; + } + + try + { + double xmin = double.Parse(parts[IDX_XMIN], ci); + double ymin = double.Parse(parts[IDX_YMIN], ci); + originX = Math.Min(originX, xmin); + originY = Math.Min(originY, ymin); + validRowsForOrigin++; + } + catch (Exception e) + { + Debug.LogWarning($"[GeoTileImporter] Origin scan parse failed line {i + 1}: '{line}'\n{e.Message}"); + } + } + + if (validRowsForOrigin == 0 || double.IsInfinity(originX) || double.IsInfinity(originY)) + { + Debug.LogError("[GeoTileImporter] Could not compute origin (no valid rows parsed). Check CSV numeric format."); + return; + } + + Debug.Log($"[GeoTileImporter] Origin: ({originX}, {originY}) from {validRowsForOrigin} valid rows."); + + int imported = 0, skipped = 0; + + for (int i = 1; i < lines.Length; i++) + { + var line = lines[i].Trim(); + if (string.IsNullOrWhiteSpace(line)) continue; + + var parts = line.Split(','); + int needMaxIndex = Math.Max(Math.Max(Math.Max(Math.Max(IDX_TILE, IDX_XMIN), IDX_YMIN), IDX_GMIN), Math.Max(IDX_GMAX, IDX_RES)); + if (parts.Length <= needMaxIndex) + { + skipped++; + Debug.LogWarning($"[GeoTileImporter] Skipping line {i + 1} (too few columns: {parts.Length}). Line: '{line}'"); + continue; + } + + string tileId = parts[IDX_TILE].Trim(); + + double xmin, ymin, gmin, gmax; + int outRes; + try + { + xmin = double.Parse(parts[IDX_XMIN], ci); + ymin = double.Parse(parts[IDX_YMIN], ci); + gmin = double.Parse(parts[IDX_GMIN], ci); + gmax = double.Parse(parts[IDX_GMAX], ci); + outRes = int.Parse(parts[IDX_RES], ci); + } + catch (Exception e) + { + skipped++; + Debug.LogWarning($"[GeoTileImporter] Parse failed line {i + 1} tile '{tileId}': {e.Message}\nLine: '{line}'"); + continue; + } + + if (outRes != heightmapResolution) + Debug.LogWarning($"[GeoTileImporter] Tile {tileId}: out_res={outRes} but importer expects {heightmapResolution}."); + + float heightRange = (float)(gmax - gmin); + if (heightRange <= 0.0001f) + { + skipped++; + Debug.LogWarning($"[GeoTileImporter] Tile {tileId}: invalid height range (global_max <= global_min). Skipping."); + continue; + } + + string pngPath = Path.Combine(heightmapsDir, $"{tileId}.png").Replace("\\", "/"); + if (!File.Exists(pngPath)) + { + skipped++; + Debug.LogError($"[GeoTileImporter] Missing PNG for {tileId}: {pngPath}"); + continue; + } + + EnsureHeightmapImportSettings(pngPath); + + var tex = AssetDatabase.LoadAssetAtPath(pngPath); + if (tex == null) + { + skipped++; + Debug.LogError($"[GeoTileImporter] Could not load Texture2D asset: {pngPath}"); + continue; + } + + if (tex.width != heightmapResolution || tex.height != heightmapResolution) + Debug.LogWarning($"[GeoTileImporter] Tile {tileId}: PNG {tex.width}x{tex.height}, expected {heightmapResolution}x{heightmapResolution}."); + + var terrainData = new TerrainData + { + heightmapResolution = heightmapResolution, + size = new Vector3(tileSizeMeters, heightRange, tileSizeMeters), + }; + + int w = tex.width; + int h = tex.height; + var heights = new float[h, w]; + + bool usedU16 = false; + try + { + var raw = tex.GetPixelData(0); + if (raw.Length == w * h) + { + for (int y = 0; y < h; y++) + for (int x = 0; x < w; x++) + heights[y, x] = raw[y * w + x] / 65535f; + usedU16 = true; + } + } + catch + { + // fallback below + } + + if (!usedU16) + { + var pixels = tex.GetPixels(); + for (int y = 0; y < h; y++) + for (int x = 0; x < w; x++) + heights[y, x] = pixels[y * w + x].r; + } + + terrainData.SetHeights(0, 0, heights); + + var go = Terrain.CreateTerrainGameObject(terrainData); + go.name = tileId; + go.transform.parent = parent.transform; + + float ux = (float)(xmin - originX); + float uz = (float)(ymin - originY); + go.transform.position = new Vector3(ux, (float)gmin, uz); + + var terrain = go.GetComponent(); + terrain.drawInstanced = true; + + Debug.Log($"[GeoTileImporter] Imported {tileId} @ XZ=({ux},{uz}) Y={gmin} heightRange={heightRange} usedU16={usedU16}"); + imported++; + } + + Debug.Log($"[GeoTileImporter] DONE. Imported={imported}, Skipped={skipped} under '{parentName}'."); + + if (imported == 0) + Debug.LogError("[GeoTileImporter] Imported 0 tiles. Scroll up for warnings/errors (missing columns, parse issues, missing PNGs)."); + } +} diff --git a/Assets/GeoData/height_png16/dgm1_32_328_5511.png.meta b/Assets/GeoData/height_png16/dgm1_32_328_5511.png.meta index 58faa62..b63acd7 100644 --- a/Assets/GeoData/height_png16/dgm1_32_328_5511.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_328_5511.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_328_5512.png.meta b/Assets/GeoData/height_png16/dgm1_32_328_5512.png.meta index 99c9a80..4b2f761 100644 --- a/Assets/GeoData/height_png16/dgm1_32_328_5512.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_328_5512.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_328_5513.png.meta b/Assets/GeoData/height_png16/dgm1_32_328_5513.png.meta index 4d2d3e9..d9bde72 100644 --- a/Assets/GeoData/height_png16/dgm1_32_328_5513.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_328_5513.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_328_5514.png.meta b/Assets/GeoData/height_png16/dgm1_32_328_5514.png.meta index 48910cd..70d55ce 100644 --- a/Assets/GeoData/height_png16/dgm1_32_328_5514.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_328_5514.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_328_5515.png.meta b/Assets/GeoData/height_png16/dgm1_32_328_5515.png.meta index 4d168ae..3d8f156 100644 --- a/Assets/GeoData/height_png16/dgm1_32_328_5515.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_328_5515.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_329_5511.png.meta b/Assets/GeoData/height_png16/dgm1_32_329_5511.png.meta index 105e573..5f327e7 100644 --- a/Assets/GeoData/height_png16/dgm1_32_329_5511.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_329_5511.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_329_5512.png.meta b/Assets/GeoData/height_png16/dgm1_32_329_5512.png.meta index fa82368..10ddb5d 100644 --- a/Assets/GeoData/height_png16/dgm1_32_329_5512.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_329_5512.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_329_5513.png.meta b/Assets/GeoData/height_png16/dgm1_32_329_5513.png.meta index 592cf2f..249c4de 100644 --- a/Assets/GeoData/height_png16/dgm1_32_329_5513.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_329_5513.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_329_5514.png.meta b/Assets/GeoData/height_png16/dgm1_32_329_5514.png.meta index af037f9..424c1f9 100644 --- a/Assets/GeoData/height_png16/dgm1_32_329_5514.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_329_5514.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/GeoData/height_png16/dgm1_32_329_5515.png.meta b/Assets/GeoData/height_png16/dgm1_32_329_5515.png.meta index 5cc7cdb..7459a14 100644 --- a/Assets/GeoData/height_png16/dgm1_32_329_5515.png.meta +++ b/Assets/GeoData/height_png16/dgm1_32_329_5515.png.meta @@ -7,7 +7,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 1 - sRGBTexture: 1 + sRGBTexture: 0 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 10 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -71,8 +71,8 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 + textureFormat: 9 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0