From 40209e160b9db550ecce41e50cd64d0356990585 Mon Sep 17 00:00:00 2001 From: yooooger <761181201@qq.com> Date: Mon, 28 Jul 2025 10:56:04 +0800 Subject: [PATCH] yooooger --- Ai_tottle/_cache_tiles/tileset.json | 1 + Ai_tottle/tiles.py | 418 ----- Ai_tottle/tiles1.py | 134 ++ Ai_tottle/tileset_model2.json | 1 - Ai_tottle/tileset_model2_adjusted.json | 2000 ------------------------ _cache_tiles/tileset.json | 1 + 6 files changed, 136 insertions(+), 2419 deletions(-) create mode 100644 Ai_tottle/_cache_tiles/tileset.json delete mode 100644 Ai_tottle/tiles.py create mode 100644 Ai_tottle/tiles1.py delete mode 100644 Ai_tottle/tileset_model2.json delete mode 100644 Ai_tottle/tileset_model2_adjusted.json create mode 100644 _cache_tiles/tileset.json diff --git a/Ai_tottle/_cache_tiles/tileset.json b/Ai_tottle/_cache_tiles/tileset.json new file mode 100644 index 0000000..b2f196e --- /dev/null +++ b/Ai_tottle/_cache_tiles/tileset.json @@ -0,0 +1 @@ +{"asset":{"gltfUpAxis":"Z","version":"1.0"},"root":{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"children":[{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"children":[{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"content":{"uri":"top/Level_14/Tile_+000_+000.json"},"geometricError":60.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"uri":"top/Level_13/Tile_p0006_p0005.b3dm"},"geometricError":120.0,"refine":"REPLACE"}],"geometricError":1101.1357294254199,"refine":"REPLACE","transform":[-0.9773169501866703,-0.21178191348135814,0.0,0.0,0.10390176688103608,-0.4794788953312529,0.8713807501723461,0.0,-0.1845426826423207,0.8516151772098101,0.49060736666817356,0.0,-1178185.498415972,5437011.306290875,3111245.574712541,1.0]}} \ No newline at end of file diff --git a/Ai_tottle/tiles.py b/Ai_tottle/tiles.py deleted file mode 100644 index f6ceba0..0000000 --- a/Ai_tottle/tiles.py +++ /dev/null @@ -1,418 +0,0 @@ -import os -import requests -import numpy as np -from py3dtiles.tileset.content import B3dm -from pyproj import Proj, Transformer -from shapely.geometry import Polygon, Point -from shapely.ops import unary_union -import math -from urllib.parse import urljoin -from pygltflib import GLTF2 - -# 目标区域经纬度坐标(转换为多边形) -region_coords = [ - [102.22321717600258, 29.384100779345513], - [102.22612442019208, 29.384506810595088], - [102.22638603372953, 29.382061071072794], - [102.22311237980807, 29.38186133280733], - [102.22321717600258, 29.384100779345513] # 闭合多边形 -] - -# 创建多边形对象 -region_polygon = Polygon(region_coords) - -# 两个3D Tiles模型的URL -tileset_urls = [ - "http://8.137.54.85:9000/300bdf2b-a150-406e-be63-d28bd29b409f/dszh/1748398014403562192_OUT/B3DM/tileset.json", - "http://8.137.54.85:9000/300bdf2b-a150-406e-be63-d28bd29b409f/dszh/1748325943733189898_OUT/B3DM/tileset.json" -] - -# 坐标系转换 -wgs84 = Proj(init='epsg:4326') # WGS84经纬度 -web_mercator = Proj(init='epsg:3857') # Web墨卡托投影 - -def adjust_z_in_transform(tileset_path, output_path=None, delta_z=0): - import json - import numpy as np - - if not os.path.exists(tileset_path): - print(f"❌ tileset.json 文件不存在: {tileset_path}") - return - - with open(tileset_path, 'r', encoding='utf-8') as f: - data = json.load(f) - - root = data.get('root', {}) - - # 插入默认 transform - if 'transform' not in root: - print("⚠️ 未找到 transform 字段,使用单位矩阵") - root['transform'] = [ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ] - - transform = np.array(root['transform']).reshape(4, 4) - print(f"原始 Z 平移: {transform[3, 2]}") - transform[3, 2] += delta_z - print(f"修正后 Z 平移: {transform[3, 2]}") - - root['transform'] = transform.flatten().tolist() - data['root'] = root - - if output_path is None: - output_path = tileset_path.replace(".json", f"_adjusted_z{int(delta_z)}.json") - - with open(output_path, 'w', encoding='utf-8') as f: - json.dump(data, f, indent=2) - - print(f"✅ 高度调整完成,输出文件: {output_path}") - -def download_tileset(tileset_url): - """下载tileset.json数据""" - try: - response = requests.get(tileset_url) - response.raise_for_status() - return response.json() - except Exception as e: - print(f"下载tileset失败: {e}") - return None - -def extract_vertices(gltf_bytes): - try: - with open("temp.glb", "wb") as f: - f.write(gltf_bytes) - - gltf = GLTF2().load("temp.glb") - - for mesh in gltf.meshes: - for primitive in mesh.primitives: - if not hasattr(primitive.attributes, "POSITION"): - continue - - accessor_idx = primitive.attributes.POSITION - accessor = gltf.accessors[accessor_idx] - buffer_view = gltf.bufferViews[accessor.bufferView] - buffer = gltf.buffers[buffer_view.buffer] - - byte_offset = (buffer_view.byteOffset or 0) + (accessor.byteOffset or 0) - byte_length = accessor.count * 3 * 4 # 3 floats per vertex - - data_bytes = gltf.binary_blob()[byte_offset: byte_offset + byte_length] - vertices = np.frombuffer(data_bytes, dtype=np.float32).reshape((accessor.count, 3)) - - return vertices - - except Exception as e: - print(f"提取顶点数据失败: {e}") - - return np.array([]) - -def find_closest_vertex(vertices, lon, lat): - """找到离目标点最近的顶点""" - if not vertices: - return None - - # 计算距离并找到最近的顶点 - min_distance = float('inf') - closest_vertex = None - - for vertex in vertices: - v_lon, v_lat, v_z = vertex - # 计算经纬度距离(简化为平面距离) - distance = math.hypot(v_lon - lon, v_lat - lat) - if distance < min_distance: - min_distance = distance - closest_vertex = vertex - - return closest_vertex - -def compare_heights(heights1, heights2, tolerance=0.5): - """比较两个高度数据集,找出差异""" - # 找到所有点的并集 - all_points = set(heights1.keys()).union(set(heights2.keys())) - differences = [] - - for point in all_points: - h1 = heights1.get(point, None) - h2 = heights2.get(point, None) - - # 检查是否有一个模型在该点没有数据 - if h1 is None or h2 is None: - differences.append({ - 'point': point, - 'height1': h1, - 'height2': h2, - 'difference': None, - 'type': 'missing_data' - }) - else: - # 检查高度差异是否超过容忍度 - diff = abs(h1 - h2) - if diff > tolerance: - differences.append({ - 'point': point, - 'height1': h1, - 'height2': h2, - 'difference': diff, - 'type': 'height_difference' - }) - - return differences - -def get_b3dm_from_tile_json(json_url): - try: - response = requests.get(json_url) - response.raise_for_status() - data = response.json() - - # 递归查找 b3dm uri - def find_b3dm_uri(node): - if 'content' in node and 'uri' in node['content']: - uri = node['content']['uri'] - if uri.endswith('.b3dm'): - return uri - if 'children' in node: - for child in node['children']: - result = find_b3dm_uri(child) - if result: - return result - return None - - root = data.get('root', {}) - b3dm_uri = find_b3dm_uri(root) - if not b3dm_uri: - print(f"{json_url} 中找不到 content.uri") - return None - - base_url = os.path.dirname(json_url) - full_b3dm_url = urljoin(base_url + '/', b3dm_uri) - return full_b3dm_url - - except Exception as e: - print(f"解析 JSON {json_url} 时出错: {e}") - return None - - -def get_heights_in_region(tileset_url, sample_density=10): - """获取区域内的高度数据""" - tileset_json = download_tileset(tileset_url) - if not tileset_json: - return {} - - tiles_in_region = get_tiles_in_region(tileset_json, tileset_url) - if not tiles_in_region: - print(f"在{tileset_url}中未找到区域内的瓦片") - return {} - - min_lon, min_lat = min(p[0] for p in region_coords), min(p[1] for p in region_coords) - max_lon, max_lat = max(p[0] for p in region_coords), max(p[1] for p in region_coords) - lon_steps = np.linspace(min_lon, max_lon, sample_density) - lat_steps = np.linspace(min_lat, max_lat, sample_density) - - heights = {} - - for tile_info in tiles_in_region: - try: - response = requests.get(tile_info['url']) - response.raise_for_status() - b3dm_data = response.content - - # ✅ 尝试解析为 b3dm - try: - gltf_bytes = parse_b3dm(b3dm_data) - except Exception: - # 可能 tile_info['url'] 是 JSON,不是真 b3dm - print(f"尝试从 {tile_info['url']} 获取真实 b3dm 地址...") - actual_b3dm_url = get_b3dm_from_tile_json(tile_info['url']) - if not actual_b3dm_url: - print(f"跳过:无法从 {tile_info['url']} 获取有效 b3dm") - continue - response = requests.get(actual_b3dm_url) - response.raise_for_status() - b3dm_data = response.content - gltf_bytes = parse_b3dm(b3dm_data) - - # ✅ 模拟解析 glb - vertices = extract_vertices(gltf_bytes) - if not vertices.size: - continue - - # ✅ 应用变换 - transformed_vertices = [transform_point(v, tile_info['transform']) for v in vertices] - transformer = Transformer.from_crs("EPSG:3857", "EPSG:4326", always_xy=True) - wgs84_vertices = [] - for x, y, z in transformed_vertices: - lon, lat = transformer.transform(x, y) - wgs84_vertices.append((lon, lat, z)) - - for lon in lon_steps: - for lat in lat_steps: - if point_in_region(lon, lat): - closest_vertex = find_closest_vertex(wgs84_vertices, lon, lat) - if closest_vertex: - key = (round(lon, 6), round(lat, 6)) - heights[key] = closest_vertex[2] - - except Exception as e: - print(f"处理瓦片 {tile_info['url']} 时出错: {e}") - continue - - return heights - -def get_tiles_in_region(tileset_json, tileset_base_url): - """获取区域内的所有瓦片""" - tiles_in_region = [] - - # 去除 tileset.json 得到根路径 - tileset_root_url = tileset_base_url.rsplit('/', 1)[0] - - def recursive_search(tile, parent_transform=None): - tile_transform = tile.get('transform', [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]) - combined_transform = multiply_matrices(parent_transform, tile_transform) if parent_transform else tile_transform - - if 'boundingVolume' in tile and is_bounding_volume_intersects_region(tile['boundingVolume']): - if 'content' in tile and 'uri' in tile['content']: - # 修复URL拼接 - tile_url = urljoin(tileset_root_url + '/', tile['content']['uri']) - tiles_in_region.append({ - 'url': tile_url, - 'transform': combined_transform - }) - - if 'children' in tile: - for child in tile['children']: - recursive_search(child, combined_transform) - - if 'root' in tileset_json: - recursive_search(tileset_json['root']) - - return tiles_in_region - -def is_bounding_volume_intersects_region(bounding_volume): - """检查边界体是否与区域相交""" - # 简化实现,实际需要根据不同边界体类型实现 - if 'region' in bounding_volume: - # region格式: [west, south, east, north, minHeight, maxHeight] - region = bounding_volume['region'] - bv_polygon = Polygon([ - [region[0], region[1]], - [region[2], region[1]], - [region[2], region[3]], - [region[0], region[3]], - [region[0], region[1]] - ]) - return region_polygon.intersects(bv_polygon) - elif 'box' in bounding_volume: - # 对于box类型,需要转换到经纬度后再判断 - # 这里简化处理,返回True让更细致的检查在后续进行 - return True - elif 'sphere' in bounding_volume: - # 对于sphere类型,简化处理 - return True - return False - -def multiply_matrices(a, b): - """计算两个4x4矩阵的乘积""" - result = [0.0] * 16 - for i in range(4): - for j in range(4): - result[i*4 + j] = a[i*4 + 0] * b[0*4 + j] + \ - a[i*4 + 1] * b[1*4 + j] + \ - a[i*4 + 2] * b[2*4 + j] + \ - a[i*4 + 3] * b[3*4 + j] - return result - -def parse_b3dm(b3dm_data: bytes): - """ - 解析 b3dm 文件,返回 glb 二进制数据 - """ - import struct - - if b3dm_data[:4] != b'b3dm': - raise ValueError("不是有效的 b3dm 文件") - - # 读取 header(28 字节) - header = struct.unpack('<4sIIIIII', b3dm_data[:28]) - _, version, byte_length, ft_json_len, ft_bin_len, bt_json_len, bt_bin_len = header - - glb_start = 28 + ft_json_len + ft_bin_len + bt_json_len + bt_bin_len - glb_bytes = b3dm_data[glb_start:] - - return glb_bytes - -def point_in_region(lon, lat): - """判断点是否在目标区域内""" - return region_polygon.contains(Point(lon, lat)) - -def transform_point(point, matrix): - """应用变换矩阵到点""" - x, y, z = point - x_out = x * matrix[0] + y * matrix[4] + z * matrix[8] + matrix[12] - y_out = x * matrix[1] + y * matrix[5] + z * matrix[9] + matrix[13] - z_out = x * matrix[2] + y * matrix[6] + z * matrix[10] + matrix[14] - return (x_out, y_out, z_out) - -def main(): - sample_density = 20 - - print("正在从第一个3D Tiles模型提取区域高度数据...") - heights1 = get_heights_in_region(tileset_urls[0], sample_density) - - print("正在从第二个3D Tiles模型提取区域高度数据...") - heights2 = get_heights_in_region(tileset_urls[1], sample_density) - - if not heights1 or not heights2: - print("无法获取足够的高度数据进行比较") - return - - # 计算平均高度 - avg1 = np.mean(list(heights1.values())) - avg2 = np.mean(list(heights2.values())) - - print(f"\n模型1 平均高度: {avg1:.2f} 米") - print(f"模型2 平均高度: {avg2:.2f} 米") - - delta = avg1 - avg2 - print(f"高度差: {delta:.2f} 米") - - # 🔧 自动统一高度 - if abs(delta) > 0.5: - print("\n⚙️ 正在统一高度基准(修改模型2的 transform)...") - # tileset_urls[1] 是远程 URL,下载后调整 - try: - ts2_url = tileset_urls[1] - response = requests.get(ts2_url) - response.raise_for_status() - with open("tileset_model2.json", "w", encoding="utf-8") as f: - f.write(response.text) - - adjust_z_in_transform("tileset_model2.json", "tileset_model2_adjusted.json", delta_z=delta) - except Exception as e: - print(f"❌ 调整高度失败: {e}") - else: - print("\n✅ 高度差异在容忍范围内,无需调整") - - # 🔍 差异分析 - print("\n正在分析详细差异点...") - differences = compare_heights(heights1, heights2, 0.5) - - if differences: - print(f"共发现 {len(differences)} 处显著高度差异:") - for i, diff in enumerate(differences[:10], 1): # 仅显示前10条 - lon, lat = diff['point'] - print(f"\n位置 {i}: 经度 {lon}, 纬度 {lat}") - print(f"模型1高度: {diff['height1']:.2f}米") - print(f"模型2高度: {diff['height2']:.2f}米") - if diff['difference'] is not None: - print(f"差异: {diff['difference']:.2f}米") - else: - print("差异: 一个模型在该位置没有数据") - else: - print("两个模型在指定区域高度基本一致 ✅") - - -if __name__ == "__main__": - main() diff --git a/Ai_tottle/tiles1.py b/Ai_tottle/tiles1.py new file mode 100644 index 0000000..983ff12 --- /dev/null +++ b/Ai_tottle/tiles1.py @@ -0,0 +1,134 @@ +import os +import json +import numpy as np +import requests +from urllib.parse import urlparse, urljoin +from pathlib import Path +from pyproj import Transformer +from py3dtiles.tileset.content import B3dm +from py3dtiles.tilers.b3dm.wkb_utils import TriangleSoup + +CACHE_DIR = "./_cache_tiles" +os.makedirs(CACHE_DIR, exist_ok=True) + +def download_file(url, cache_dir=CACHE_DIR): + os.makedirs(cache_dir, exist_ok=True) + filename = os.path.basename(urlparse(url).path) + local_path = os.path.join(cache_dir, filename) + if not os.path.exists(local_path): + print(f"📥 Downloading {url}") + r = requests.get(url) + r.raise_for_status() + with open(local_path, "wb") as f: + f.write(r.content) + return local_path + +def apply_transform(points, transform): + n = points.shape[0] + homo = np.hstack([points, np.ones((n,1))]) + transformed = (transform @ homo.T).T[:, :3] + return transformed + +def extract_positions_from_b3dm(b3dm_bytes, transform=None): + soup = TriangleSoup.from_glb_bytes(b3dm_bytes) + positions = soup.get_positions() # Nx3 numpy + if transform is not None: + positions = apply_transform(positions, transform) + return positions + +def load_tileset_json(path_or_url): + if path_or_url.startswith("http"): + local_path = download_file(path_or_url) + else: + local_path = path_or_url + with open(local_path, "r", encoding="utf-8") as f: + js = json.load(f) + if "geometricError" not in js: + print("⚠️ tileset.json缺少geometricError,自动补 1000.0") + js["geometricError"] = 1000.0 + return js, os.path.dirname(local_path), path_or_url if path_or_url.startswith("http") else None + +def parse_transform(tile_json): + # 返回 4x4 np.array + if "transform" in tile_json: + return np.array(tile_json["transform"]).reshape(4,4) + else: + return np.eye(4) + +def recursive_load(tile_json, base_dir, base_url, bbox, transformer, transform_accum=None): + if transform_accum is None: + transform_accum = np.eye(4) + + points_list = [] + tile_transform = parse_transform(tile_json) + transform_total = transform_accum @ tile_transform + + print(f"\n处理 Tile,当前累计 transform 矩阵:\n{transform_total}") + print(f"Tile 的 bbox (输入): {bbox}") + + content = tile_json.get("content") + if content: + uri = content.get("uri") + if uri and uri.endswith(".b3dm"): + if base_url is not None: + b3dm_url = urljoin(base_url + "/", uri) + b3dm_path = download_file(b3dm_url) + else: + b3dm_path = os.path.join(base_dir, uri) + if os.path.exists(b3dm_path): + with open(b3dm_path, "rb") as f: + b3dm = B3dm.from_array(f.read()) + positions = extract_positions_from_b3dm(b3dm.glb_bytes, transform_total) + print(f"加载 {b3dm_path},原始顶点数量: {len(positions)}") + + lon, lat, elev = transformer.transform( + positions[:,0], positions[:,1], positions[:,2] + ) + print(f"转换后经度范围: {lon.min():.6f} ~ {lon.max():.6f}") + print(f"转换后纬度范围: {lat.min():.6f} ~ {lat.max():.6f}") + + geo_pts = np.vstack([lon, lat, elev]).T + mask = ( + (geo_pts[:,0] >= bbox[0]) & (geo_pts[:,0] <= bbox[2]) & + (geo_pts[:,1] >= bbox[1]) & (geo_pts[:,1] <= bbox[3]) + ) + in_bbox_count = np.sum(mask) + print(f"bbox内点数量: {in_bbox_count}") + + points_list.append(geo_pts[mask]) + + elif uri and uri.endswith(".json"): + if base_url is not None: + child_url = urljoin(base_url + "/", uri) + child_json, child_base_dir, child_base_url = load_tileset_json(child_url) + else: + child_path = os.path.join(base_dir, uri) + child_json, child_base_dir, child_base_url = load_tileset_json(child_path) + pts = recursive_load(child_json, child_base_dir, child_base_url, bbox, transformer, transform_total) + if pts.size > 0: + points_list.append(pts) + + for child in tile_json.get("children", []): + pts = recursive_load(child, base_dir, base_url, bbox, transformer, transform_total) + if pts.size > 0: + points_list.append(pts) + + if points_list: + return np.vstack(points_list) + else: + return np.empty((0,3)) + +def load_tileset_all_points(path_or_url, bbox): + transformer = Transformer.from_crs("EPSG:4979", "EPSG:4326", always_xy=True) + tileset_json, base_dir, base_url = load_tileset_json(path_or_url) + points = recursive_load(tileset_json, base_dir, base_url, bbox, transformer) + print(f"\n总计提取 {len(points)} 个点在区域内") + return points + +if __name__ == "__main__": + bbox = [116.391, 39.905, 116.405, 39.915] + model1_url = "http://8.137.54.85:9000/300bdf2b-a150-406e-be63-d28bd29b409f/dszh/1748398014403562192_OUT/B3DM/tileset.json" + model2_url = "http://8.137.54.85:9000/300bdf2b-a150-406e-be63-d28bd29b409f/dszh/1748325943733189898_OUT/B3DM/tileset.json" + + pts1 = load_tileset_all_points(model1_url, bbox) + pts2 = load_tileset_all_points(model2_url, bbox) \ No newline at end of file diff --git a/Ai_tottle/tileset_model2.json b/Ai_tottle/tileset_model2.json deleted file mode 100644 index efa8690..0000000 --- a/Ai_tottle/tileset_model2.json +++ /dev/null @@ -1 +0,0 @@ -{"asset":{"gltfUpAxis":"Z","version":"1.0"},"root":{"boundingVolume":{"box":[0.014586898120739988,0.007299131083357224,-0.04231168709833355,656.3470322715614,0.0,0.0,0.0,330.0247506780942,0.0,0.0,0.0,142.72717192602244]},"children":[{"boundingVolume":{"box":[0.014586898120739988,0.007299131083357224,-0.04231168709833355,656.3470322715614,0.0,0.0,0.0,330.0247506780942,0.0,0.0,0.0,142.72717192602244]},"children":[{"boundingVolume":{"box":[-154.01464495381612,0.30252991389701833,15.282116289950807,502.320948807875,0.0,0.0,0.0,330.321572635596,0.0,0.0,0.0,127.42695105845866]},"children":[{"boundingVolume":{"box":[-357.0165445266566,20.441542173172706,42.301687053862906,299.12394414008054,0.0,0.0,0.0,246.03885861521542,0.0,0.0,0.0,100.4196335964491]},"children":[{"boundingVolume":{"box":[-458.7273848725646,-79.31805632415339,32.00355543000228,197.41021938650863,0.0,0.0,0.0,143.15115315939582,0.0,0.0,0.0,59.67960344512721]},"children":[{"boundingVolume":{"box":[-546.0426443552399,-180.66853306322682,35.771405309402894,81.30200705701344,0.0,0.0,0.0,41.85739994571006,0.0,0.0,0.0,23.842990746432065]},"children":[{"boundingVolume":{"box":[-546.0426443552399,-180.66853306322682,35.771405309402894,81.30200705701344,0.0,0.0,0.0,41.85739994571006,0.0,0.0,0.0,23.842990746432065]},"content":{"uri":"top/Level_17/Tile_+000_+000.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-546.0426443552399,-180.66853306322682,35.771405309402894,81.30200705701344,0.0,0.0,0.0,41.85739994571006,0.0,0.0,0.0,23.842990746432065]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0000.b3dm"},"geometricError":15.0,"refine":"REPLACE"},{"boundingVolume":{"box":[-560.1662615715377,-37.246002012224096,45.912225251158134,95.81396196945522,0.0,0.0,0.0,101.46915319438125,0.0,0.0,0.0,38.89652170021259]},"children":[{"boundingVolume":{"box":[-560.1662615715377,-37.246002012224096,45.912225251158134,95.81396196945522,0.0,0.0,0.0,101.46915319438125,0.0,0.0,0.0,38.89652170021259]},"content":{"uri":"top/Level_17/Tile_+000_+001.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-560.1662615715377,-37.246002012224096,45.912225251158134,95.81396196945522,0.0,0.0,0.0,101.46915319438125,0.0,0.0,0.0,38.89652170021259]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0001.b3dm"},"geometricError":15.0,"refine":"REPLACE"},{"boundingVolume":{"box":[-363.2208259750151,-68.22772341713915,32.01231128948905,101.90366048895913,0.0,0.0,0.0,132.06082025238157,0.0,0.0,0.0,59.670847585640445]},"children":[{"boundingVolume":{"box":[-363.41724262850147,-169.74592563562376,50.37853369471543,101.70990477547826,0.0,0.0,0.0,30.543776366522394,0.0,0.0,0.0,41.30340463926393]},"content":{"uri":"top/Level_17/Tile_+001_+000.json"},"geometricError":7.5,"refine":"REPLACE"},{"boundingVolume":{"box":[-363.1617321185602,-37.62413498997486,20.203959549989236,101.84513654207768,0.0,0.0,0.0,101.45699523872261,0.0,0.0,0.0,47.8608521608129]},"content":{"uri":"top/Level_17/Tile_+001_+001.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-363.2208259750151,-68.22772341713915,32.01231128948905,101.90366048895913,0.0,0.0,0.0,132.06082025238157,0.0,0.0,0.0,59.670847585640445]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0002.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-458.7273848725646,-79.31805632415339,32.00355543000228,197.41021938650863,0.0,0.0,0.0,143.15115315939582,0.0,0.0,0.0,59.67960344512721]},"uri":"top/Level_15/Tile_p0000_p0000_L15_000.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"},{"boundingVolume":{"box":[-388.7955224712855,151.31915576316504,55.30803144674803,127.81195967248547,0.0,0.0,0.0,87.2696190968025,0.0,0.0,0.0,87.4093263500755]},"children":[{"boundingVolume":{"box":[-490.42790314208435,92.71123164457146,65.04024405874839,26.18601778618188,0.0,0.0,0.0,28.660892607578717,0.0,0.0,0.0,17.570044170586016]},"children":[{"boundingVolume":{"box":[-490.42790314208435,92.71123164457146,65.04024405874839,26.18601778618188,0.0,0.0,0.0,28.660892607578717,0.0,0.0,0.0,17.570044170586016]},"content":{"uri":"top/Level_17/Tile_+000_+002.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-490.42790314208435,92.71123164457146,65.04024405874839,26.18601778618188,0.0,0.0,0.0,28.660892607578717,0.0,0.0,0.0,17.570044170586016]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0010.b3dm"},"geometricError":15.0,"refine":"REPLACE"},{"boundingVolume":{"box":[-362.7999637460317,151.2696259909265,55.31002961224692,101.8164009472317,0.0,0.0,0.0,87.31914886904104,0.0,0.0,0.0,87.40732818457661]},"children":[{"boundingVolume":{"box":[-362.7999637460317,151.2696259909265,55.31002961224692,101.8164009472317,0.0,0.0,0.0,87.31914886904104,0.0,0.0,0.0,87.40732818457661]},"content":{"uri":"top/Level_17/Tile_+001_+002.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-362.7999637460317,151.2696259909265,55.31002961224692,101.8164009472317,0.0,0.0,0.0,87.31914886904104,0.0,0.0,0.0,87.40732818457661]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0011.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-388.7955224712855,151.31915576316504,55.30803144674803,127.81195967248547,0.0,0.0,0.0,87.2696190968025,0.0,0.0,0.0,87.4093263500755]},"uri":"top/Level_15/Tile_p0000_p0000_L15_001.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"},{"boundingVolume":{"box":[-160.21173025087012,-81.45575214056905,17.23384307169181,101.92939002441481,0.0,0.0,0.0,144.89867434325967,0.0,0.0,0.0,75.323481177428]},"children":[{"boundingVolume":{"box":[-160.40846008214197,-182.97491126217048,57.25820753024777,101.7359470721786,0.0,0.0,0.0,43.38236790743949,0.0,0.0,0.0,35.29789610800867]},"children":[{"boundingVolume":{"box":[-160.40846008214197,-182.97491126217048,57.25820753024777,101.7359470721786,0.0,0.0,0.0,43.38236790743949,0.0,0.0,0.0,35.29789610800867]},"content":{"uri":"top/Level_17/Tile_+002_+000.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-160.40846008214197,-182.97491126217048,57.25820753024777,101.7359470721786,0.0,0.0,0.0,43.38236790743949,0.0,0.0,0.0,35.29789610800867]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0020.b3dm"},"geometricError":15.0,"refine":"REPLACE"},{"boundingVolume":{"box":[-160.12809599041066,-38.01400064404669,1.8804069459582706,101.8460361039875,0.0,0.0,0.0,101.45661612246158,0.0,0.0,0.0,59.96753620224911]},"children":[{"boundingVolume":{"box":[-160.12809599041066,-38.01400064404669,1.8804069459582706,101.8460361039875,0.0,0.0,0.0,101.45661612246158,0.0,0.0,0.0,59.96753620224911]},"content":{"uri":"top/Level_17/Tile_+002_+001.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-160.12809599041066,-38.01400064404669,1.8804069459582706,101.8460361039875,0.0,0.0,0.0,101.45661612246158,0.0,0.0,0.0,59.96753620224911]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0021.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-160.21173025087012,-81.45575214056905,17.23384307169181,101.92939002441481,0.0,0.0,0.0,144.89867434325967,0.0,0.0,0.0,75.323481177428]},"uri":"top/Level_15/Tile_p0000_p0000_L15_002.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"},{"boundingVolume":{"box":[-159.73853620610072,165.0201687065703,44.13932742358554,101.845975769311,0.0,0.0,0.0,101.46004725152284,0.0,0.0,0.0,94.17626202971735]},"children":[{"boundingVolume":{"box":[-159.73853620610072,165.0201687065703,44.13932742358554,101.845975769311,0.0,0.0,0.0,101.46004725152284,0.0,0.0,0.0,94.17626202971735]},"children":[{"boundingVolume":{"box":[-159.73853620610072,165.0201687065703,44.13932742358554,101.845975769311,0.0,0.0,0.0,101.46004725152284,0.0,0.0,0.0,94.17626202971735]},"content":{"uri":"top/Level_17/Tile_+002_+002.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-159.73853620610072,165.0201687065703,44.13932742358554,101.845975769311,0.0,0.0,0.0,101.46004725152284,0.0,0.0,0.0,94.17626202971735]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0030.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-159.73853620610072,165.0201687065703,44.13932742358554,101.845975769311,0.0,0.0,0.0,101.46004725152284,0.0,0.0,0.0,94.17626202971735]},"uri":"top/Level_15/Tile_p0000_p0000_L15_003.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-357.0165445266566,20.441542173172706,42.301687053862906,299.12394414008054,0.0,0.0,0.0,246.03885861521542,0.0,0.0,0.0,100.4196335964491]},"uri":"top/Level_14/Tile_p0000_p0000_L14_00.b3dm"},"geometricError":42.99583480988959,"refine":"REPLACE"},{"boundingVolume":{"box":[-108.67300486593547,283.53311983304593,102.3037397365423,50.84614333645564,0.0,0.0,0.0,17.133438044868598,0.0,0.0,0.0,36.317697168625614]},"children":[{"boundingVolume":{"box":[-108.67300486593547,283.53311983304593,102.3037397365423,50.84614333645564,0.0,0.0,0.0,17.133438044868598,0.0,0.0,0.0,36.317697168625614]},"children":[{"boundingVolume":{"box":[-108.67300486593547,283.53311983304593,102.3037397365423,50.84614333645564,0.0,0.0,0.0,17.133438044868598,0.0,0.0,0.0,36.317697168625614]},"children":[{"boundingVolume":{"box":[-108.67300486593547,283.53311983304593,102.3037397365423,50.84614333645564,0.0,0.0,0.0,17.133438044868598,0.0,0.0,0.0,36.317697168625614]},"content":{"uri":"top/Level_17/Tile_+002_+003.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-108.67300486593547,283.53311983304593,102.3037397365423,50.84614333645564,0.0,0.0,0.0,17.133438044868598,0.0,0.0,0.0,36.317697168625614]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0100.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-108.67300486593547,283.53311983304593,102.3037397365423,50.84614333645564,0.0,0.0,0.0,17.133438044868598,0.0,0.0,0.0,36.317697168625614]},"uri":"top/Level_15/Tile_p0000_p0000_L15_010.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-108.67300486593547,283.53311983304593,102.3037397365423,50.84614333645564,0.0,0.0,0.0,17.133438044868598,0.0,0.0,0.0,36.317697168625614]},"uri":"top/Level_14/Tile_p0000_p0000_L14_01.b3dm"},"geometricError":42.99583480988959,"refine":"REPLACE"},{"boundingVolume":{"box":[144.43357464729146,-32.734469614042126,-16.575029155212178,203.74447624388304,0.0,0.0,0.0,298.4317837178314,0.0,0.0,0.0,95.53640331221641]},"children":[{"boundingVolume":{"box":[117.3693277082741,-134.2009831743409,-15.68259770265081,176.68031067247693,0.0,0.0,0.0,196.96641221175352,0.0,0.0,0.0,74.52884852647207]},"children":[{"boundingVolume":{"box":[42.525324616164994,-235.5756078089087,1.9881371120195581,101.83663587335113,0.0,0.0,0.0,95.59363000387728,0.0,0.0,0.0,56.86202082994896]},"children":[{"boundingVolume":{"box":[42.525324616164994,-235.5756078089087,1.9881371120195581,101.83663587335113,0.0,0.0,0.0,95.59363000387728,0.0,0.0,0.0,56.86202082994896]},"content":{"uri":"top/Level_17/Tile_+003_+000.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[42.525324616164994,-235.5756078089087,1.9881371120195581,101.83663587335113,0.0,0.0,0.0,95.59363000387728,0.0,0.0,0.0,56.86202082994896]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0200.b3dm"},"geometricError":15.0,"refine":"REPLACE"},{"boundingVolume":{"box":[42.904128547520884,-38.40397063385555,-26.82735668639782,101.84749689203596,0.0,0.0,0.0,101.45609168824646,0.0,0.0,0.0,63.37699274797126]},"children":[{"boundingVolume":{"box":[42.904128547520884,-38.40397063385555,-26.82735668639782,101.84749689203596,0.0,0.0,0.0,101.45609168824646,0.0,0.0,0.0,63.37699274797126]},"content":{"uri":"top/Level_17/Tile_+003_+001.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[42.904128547520884,-38.40397063385555,-26.82735668639782,101.84749689203596,0.0,0.0,0.0,101.45609168824646,0.0,0.0,0.0,63.37699274797126]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0201.b3dm"},"geometricError":15.0,"refine":"REPLACE"},{"boundingVolume":{"box":[218.7593759919775,-199.39971207747197,12.54896442914685,74.89860235295266,0.0,0.0,0.0,59.131873214772554,0.0,0.0,0.0,13.900161187925164]},"children":[{"boundingVolume":{"box":[218.7593759919775,-199.39971207747197,12.54896442914685,74.89860235295266,0.0,0.0,0.0,59.131873214772554,0.0,0.0,0.0,13.900161187925164]},"content":{"uri":"top/Level_17/Tile_+004_+000.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[218.7593759919775,-199.39971207747197,12.54896442914685,74.89860235295266,0.0,0.0,0.0,59.131873214772554,0.0,0.0,0.0,13.900161187925164]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0202.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[117.3693277082741,-134.2009831743409,-15.68259770265081,176.68031067247693,0.0,0.0,0.0,196.96641221175352,0.0,0.0,0.0,74.52884852647207]},"uri":"top/Level_15/Tile_p0000_p0000_L15_020.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"},{"boundingVolume":{"box":[43.29469604157575,164.6285663358604,-2.326052162078838,101.84808528351982,0.0,0.0,0.0,101.45895445188432,0.0,0.0,0.0,81.29525419140367]},"children":[{"boundingVolume":{"box":[43.29469604157575,164.6285663358604,-2.326052162078838,101.84808528351982,0.0,0.0,0.0,101.45895445188432,0.0,0.0,0.0,81.29525419140367]},"children":[{"boundingVolume":{"box":[43.29469604157575,164.6285663358604,-2.326052162078838,101.84808528351982,0.0,0.0,0.0,101.45895445188432,0.0,0.0,0.0,81.29525419140367]},"content":{"uri":"top/Level_17/Tile_+003_+002.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[43.29469604157575,164.6285663358604,-2.326052162078838,101.84808528351982,0.0,0.0,0.0,101.45895445188432,0.0,0.0,0.0,81.29525419140367]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0210.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[43.29469604157575,164.6285663358604,-2.326052162078838,101.84808528351982,0.0,0.0,0.0,101.45895445188432,0.0,0.0,0.0,81.29525419140367]},"uri":"top/Level_15/Tile_p0000_p0000_L15_021.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"},{"boundingVolume":{"box":[245.93527167609,-38.794199212332046,-38.99284241478125,101.84940588707883,0.0,0.0,0.0,101.45598134292936,0.0,0.0,0.0,59.5949838680728]},"children":[{"boundingVolume":{"box":[245.93527167609,-38.794199212332046,-38.99284241478125,101.84940588707883,0.0,0.0,0.0,101.45598134292936,0.0,0.0,0.0,59.5949838680728]},"children":[{"boundingVolume":{"box":[245.93527167609,-38.794199212332046,-38.99284241478125,101.84940588707883,0.0,0.0,0.0,101.45598134292936,0.0,0.0,0.0,59.5949838680728]},"content":{"uri":"top/Level_17/Tile_+004_+001.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[245.93527167609,-38.794199212332046,-38.99284241478125,101.84940588707883,0.0,0.0,0.0,101.45598134292936,0.0,0.0,0.0,59.5949838680728]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0220.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[245.93527167609,-38.794199212332046,-38.99284241478125,101.84940588707883,0.0,0.0,0.0,101.45598134292936,0.0,0.0,0.0,59.5949838680728]},"uri":"top/Level_15/Tile_p0000_p0000_L15_022.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"},{"boundingVolume":{"box":[246.32478287176878,164.23683355209707,-50.09934874181158,101.84912274481344,0.0,0.0,0.0,101.457676596102,0.0,0.0,0.0,62.00512005581322]},"children":[{"boundingVolume":{"box":[246.32478287176878,164.23683355209707,-50.09934874181158,101.84912274481344,0.0,0.0,0.0,101.457676596102,0.0,0.0,0.0,62.00512005581322]},"children":[{"boundingVolume":{"box":[246.32478287176878,164.23683355209707,-50.09934874181158,101.84912274481344,0.0,0.0,0.0,101.457676596102,0.0,0.0,0.0,62.00512005581322]},"content":{"uri":"top/Level_17/Tile_+004_+002.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[246.32478287176878,164.23683355209707,-50.09934874181158,101.84912274481344,0.0,0.0,0.0,101.457676596102,0.0,0.0,0.0,62.00512005581322]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0230.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[246.32478287176878,164.23683355209707,-50.09934874181158,101.84912274481344,0.0,0.0,0.0,101.457676596102,0.0,0.0,0.0,62.00512005581322]},"uri":"top/Level_15/Tile_p0000_p0000_L15_023.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[144.43357464729146,-32.734469614042126,-16.575029155212178,203.74447624388304,0.0,0.0,0.0,298.4317837178314,0.0,0.0,0.0,95.53640331221641]},"uri":"top/Level_14/Tile_p0000_p0000_L14_02.b3dm"},"geometricError":42.99583480988959,"refine":"REPLACE"},{"boundingVolume":{"box":[114.19426526143644,298.4708851597237,38.176172768969536,172.35793810423678,0.0,0.0,0.0,32.26943438567187,0.0,0.0,0.0,57.208886614730545]},"children":[{"boundingVolume":{"box":[114.19426526143644,298.4708851597237,38.176172768969536,172.35793810423678,0.0,0.0,0.0,32.26943438567187,0.0,0.0,0.0,57.208886614730545]},"children":[{"boundingVolume":{"box":[43.54575920534228,295.33783156966746,47.65350072107526,101.70960468574228,0.0,0.0,0.0,29.13558663098769,0.0,0.0,0.0,47.73666014144533]},"children":[{"boundingVolume":{"box":[43.54575920534228,295.33783156966746,47.65350072107526,101.70960468574228,0.0,0.0,0.0,29.13558663098769,0.0,0.0,0.0,47.73666014144533]},"content":{"uri":"top/Level_17/Tile_+003_+003.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[43.54575920534228,295.33783156966746,47.65350072107526,101.70960468574228,0.0,0.0,0.0,29.13558663098769,0.0,0.0,0.0,47.73666014144533]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0300.b3dm"},"geometricError":15.0,"refine":"REPLACE"},{"boundingVolume":{"box":[215.70874111142518,298.27425970375384,7.701202734918979,70.84072670665546,0.0,0.0,0.0,32.462886302540824,0.0,0.0,0.0,26.73527891188428]},"children":[{"boundingVolume":{"box":[215.70874111142518,298.27425970375384,7.701202734918979,70.84072670665546,0.0,0.0,0.0,32.462886302540824,0.0,0.0,0.0,26.73527891188428]},"content":{"uri":"top/Level_17/Tile_+004_+003.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[215.70874111142518,298.27425970375384,7.701202734918979,70.84072670665546,0.0,0.0,0.0,32.462886302540824,0.0,0.0,0.0,26.73527891188428]},"uri":"top/Level_16/Tile_p0000_p0000_L16_0301.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[114.19426526143644,298.4708851597237,38.176172768969536,172.35793810423678,0.0,0.0,0.0,32.26943438567187,0.0,0.0,0.0,57.208886614730545]},"uri":"top/Level_15/Tile_p0000_p0000_L15_030.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[114.19426526143644,298.4708851597237,38.176172768969536,172.35793810423678,0.0,0.0,0.0,32.26943438567187,0.0,0.0,0.0,57.208886614730545]},"uri":"top/Level_14/Tile_p0000_p0000_L14_03.b3dm"},"geometricError":42.99583480988959,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[-154.01464495381612,0.30252991389701833,15.282116289950807,502.320948807875,0.0,0.0,0.0,330.321572635596,0.0,0.0,0.0,127.42695105845866]},"uri":"top/Level_13/Tile_p0000_p0000_L13_0.b3dm"},"geometricError":85.99166961977917,"refine":"REPLACE"},{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"children":[{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"children":[{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"children":[{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"children":[{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"content":{"uri":"top/Level_17/Tile_+006_+002.json"},"geometricError":7.5,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"uri":"top/Level_16/Tile_p0000_p0000_L16_1000.b3dm"},"geometricError":15.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"uri":"top/Level_15/Tile_p0000_p0000_L15_100.b3dm"},"geometricError":21.497917404944793,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"uri":"top/Level_14/Tile_p0000_p0000_L14_10.b3dm"},"geometricError":42.99583480988959,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[603.3674446128834,161.98264210854686,-128.4739704871484,52.836977828361455,0.0,0.0,0.0,99.98412737202378,0.0,0.0,0.0,14.277241950449422]},"uri":"top/Level_13/Tile_p0000_p0000_L13_1.b3dm"},"geometricError":85.99166961977917,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[0.014586898120739988,0.007299131083357224,-0.04231168709833355,656.3470322715614,0.0,0.0,0.0,330.0247506780942,0.0,0.0,0.0,142.72717192602244]},"uri":"top/Level_12/Tile_p0000_p0000.b3dm"},"geometricError":171.98333923955835,"refine":"REPLACE"}],"geometricError":748.3841316047692,"refine":"REPLACE","transform":[-0.9773257639965924,-0.21174123601338712,0.0,0.0,0.10388876136222207,-0.4795153035876962,0.8713622661601906,0.0,-0.18450332325218474,0.8516047924928104,0.49064019516563984,0.0,-1177933.2762076592,5436940.677128543,3111451.2639461895,1.0]}} \ No newline at end of file diff --git a/Ai_tottle/tileset_model2_adjusted.json b/Ai_tottle/tileset_model2_adjusted.json deleted file mode 100644 index 070c746..0000000 --- a/Ai_tottle/tileset_model2_adjusted.json +++ /dev/null @@ -1,2000 +0,0 @@ -{ - "asset": { - "gltfUpAxis": "Z", - "version": "1.0" - }, - "root": { - "boundingVolume": { - "box": [ - 0.014586898120739988, - 0.007299131083357224, - -0.04231168709833355, - 656.3470322715614, - 0.0, - 0.0, - 0.0, - 330.0247506780942, - 0.0, - 0.0, - 0.0, - 142.72717192602244 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 0.014586898120739988, - 0.007299131083357224, - -0.04231168709833355, - 656.3470322715614, - 0.0, - 0.0, - 0.0, - 330.0247506780942, - 0.0, - 0.0, - 0.0, - 142.72717192602244 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -154.01464495381612, - 0.30252991389701833, - 15.282116289950807, - 502.320948807875, - 0.0, - 0.0, - 0.0, - 330.321572635596, - 0.0, - 0.0, - 0.0, - 127.42695105845866 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -357.0165445266566, - 20.441542173172706, - 42.301687053862906, - 299.12394414008054, - 0.0, - 0.0, - 0.0, - 246.03885861521542, - 0.0, - 0.0, - 0.0, - 100.4196335964491 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -458.7273848725646, - -79.31805632415339, - 32.00355543000228, - 197.41021938650863, - 0.0, - 0.0, - 0.0, - 143.15115315939582, - 0.0, - 0.0, - 0.0, - 59.67960344512721 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -546.0426443552399, - -180.66853306322682, - 35.771405309402894, - 81.30200705701344, - 0.0, - 0.0, - 0.0, - 41.85739994571006, - 0.0, - 0.0, - 0.0, - 23.842990746432065 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -546.0426443552399, - -180.66853306322682, - 35.771405309402894, - 81.30200705701344, - 0.0, - 0.0, - 0.0, - 41.85739994571006, - 0.0, - 0.0, - 0.0, - 23.842990746432065 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+000_+000.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -546.0426443552399, - -180.66853306322682, - 35.771405309402894, - 81.30200705701344, - 0.0, - 0.0, - 0.0, - 41.85739994571006, - 0.0, - 0.0, - 0.0, - 23.842990746432065 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0000.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -560.1662615715377, - -37.246002012224096, - 45.912225251158134, - 95.81396196945522, - 0.0, - 0.0, - 0.0, - 101.46915319438125, - 0.0, - 0.0, - 0.0, - 38.89652170021259 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -560.1662615715377, - -37.246002012224096, - 45.912225251158134, - 95.81396196945522, - 0.0, - 0.0, - 0.0, - 101.46915319438125, - 0.0, - 0.0, - 0.0, - 38.89652170021259 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+000_+001.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -560.1662615715377, - -37.246002012224096, - 45.912225251158134, - 95.81396196945522, - 0.0, - 0.0, - 0.0, - 101.46915319438125, - 0.0, - 0.0, - 0.0, - 38.89652170021259 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0001.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -363.2208259750151, - -68.22772341713915, - 32.01231128948905, - 101.90366048895913, - 0.0, - 0.0, - 0.0, - 132.06082025238157, - 0.0, - 0.0, - 0.0, - 59.670847585640445 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -363.41724262850147, - -169.74592563562376, - 50.37853369471543, - 101.70990477547826, - 0.0, - 0.0, - 0.0, - 30.543776366522394, - 0.0, - 0.0, - 0.0, - 41.30340463926393 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+001_+000.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -363.1617321185602, - -37.62413498997486, - 20.203959549989236, - 101.84513654207768, - 0.0, - 0.0, - 0.0, - 101.45699523872261, - 0.0, - 0.0, - 0.0, - 47.8608521608129 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+001_+001.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -363.2208259750151, - -68.22772341713915, - 32.01231128948905, - 101.90366048895913, - 0.0, - 0.0, - 0.0, - 132.06082025238157, - 0.0, - 0.0, - 0.0, - 59.670847585640445 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0002.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -458.7273848725646, - -79.31805632415339, - 32.00355543000228, - 197.41021938650863, - 0.0, - 0.0, - 0.0, - 143.15115315939582, - 0.0, - 0.0, - 0.0, - 59.67960344512721 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_000.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -388.7955224712855, - 151.31915576316504, - 55.30803144674803, - 127.81195967248547, - 0.0, - 0.0, - 0.0, - 87.2696190968025, - 0.0, - 0.0, - 0.0, - 87.4093263500755 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -490.42790314208435, - 92.71123164457146, - 65.04024405874839, - 26.18601778618188, - 0.0, - 0.0, - 0.0, - 28.660892607578717, - 0.0, - 0.0, - 0.0, - 17.570044170586016 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -490.42790314208435, - 92.71123164457146, - 65.04024405874839, - 26.18601778618188, - 0.0, - 0.0, - 0.0, - 28.660892607578717, - 0.0, - 0.0, - 0.0, - 17.570044170586016 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+000_+002.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -490.42790314208435, - 92.71123164457146, - 65.04024405874839, - 26.18601778618188, - 0.0, - 0.0, - 0.0, - 28.660892607578717, - 0.0, - 0.0, - 0.0, - 17.570044170586016 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0010.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -362.7999637460317, - 151.2696259909265, - 55.31002961224692, - 101.8164009472317, - 0.0, - 0.0, - 0.0, - 87.31914886904104, - 0.0, - 0.0, - 0.0, - 87.40732818457661 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -362.7999637460317, - 151.2696259909265, - 55.31002961224692, - 101.8164009472317, - 0.0, - 0.0, - 0.0, - 87.31914886904104, - 0.0, - 0.0, - 0.0, - 87.40732818457661 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+001_+002.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -362.7999637460317, - 151.2696259909265, - 55.31002961224692, - 101.8164009472317, - 0.0, - 0.0, - 0.0, - 87.31914886904104, - 0.0, - 0.0, - 0.0, - 87.40732818457661 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0011.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -388.7955224712855, - 151.31915576316504, - 55.30803144674803, - 127.81195967248547, - 0.0, - 0.0, - 0.0, - 87.2696190968025, - 0.0, - 0.0, - 0.0, - 87.4093263500755 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_001.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -160.21173025087012, - -81.45575214056905, - 17.23384307169181, - 101.92939002441481, - 0.0, - 0.0, - 0.0, - 144.89867434325967, - 0.0, - 0.0, - 0.0, - 75.323481177428 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -160.40846008214197, - -182.97491126217048, - 57.25820753024777, - 101.7359470721786, - 0.0, - 0.0, - 0.0, - 43.38236790743949, - 0.0, - 0.0, - 0.0, - 35.29789610800867 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -160.40846008214197, - -182.97491126217048, - 57.25820753024777, - 101.7359470721786, - 0.0, - 0.0, - 0.0, - 43.38236790743949, - 0.0, - 0.0, - 0.0, - 35.29789610800867 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+002_+000.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -160.40846008214197, - -182.97491126217048, - 57.25820753024777, - 101.7359470721786, - 0.0, - 0.0, - 0.0, - 43.38236790743949, - 0.0, - 0.0, - 0.0, - 35.29789610800867 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0020.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -160.12809599041066, - -38.01400064404669, - 1.8804069459582706, - 101.8460361039875, - 0.0, - 0.0, - 0.0, - 101.45661612246158, - 0.0, - 0.0, - 0.0, - 59.96753620224911 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -160.12809599041066, - -38.01400064404669, - 1.8804069459582706, - 101.8460361039875, - 0.0, - 0.0, - 0.0, - 101.45661612246158, - 0.0, - 0.0, - 0.0, - 59.96753620224911 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+002_+001.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -160.12809599041066, - -38.01400064404669, - 1.8804069459582706, - 101.8460361039875, - 0.0, - 0.0, - 0.0, - 101.45661612246158, - 0.0, - 0.0, - 0.0, - 59.96753620224911 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0021.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -160.21173025087012, - -81.45575214056905, - 17.23384307169181, - 101.92939002441481, - 0.0, - 0.0, - 0.0, - 144.89867434325967, - 0.0, - 0.0, - 0.0, - 75.323481177428 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_002.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -159.73853620610072, - 165.0201687065703, - 44.13932742358554, - 101.845975769311, - 0.0, - 0.0, - 0.0, - 101.46004725152284, - 0.0, - 0.0, - 0.0, - 94.17626202971735 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -159.73853620610072, - 165.0201687065703, - 44.13932742358554, - 101.845975769311, - 0.0, - 0.0, - 0.0, - 101.46004725152284, - 0.0, - 0.0, - 0.0, - 94.17626202971735 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -159.73853620610072, - 165.0201687065703, - 44.13932742358554, - 101.845975769311, - 0.0, - 0.0, - 0.0, - 101.46004725152284, - 0.0, - 0.0, - 0.0, - 94.17626202971735 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+002_+002.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -159.73853620610072, - 165.0201687065703, - 44.13932742358554, - 101.845975769311, - 0.0, - 0.0, - 0.0, - 101.46004725152284, - 0.0, - 0.0, - 0.0, - 94.17626202971735 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0030.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -159.73853620610072, - 165.0201687065703, - 44.13932742358554, - 101.845975769311, - 0.0, - 0.0, - 0.0, - 101.46004725152284, - 0.0, - 0.0, - 0.0, - 94.17626202971735 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_003.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -357.0165445266566, - 20.441542173172706, - 42.301687053862906, - 299.12394414008054, - 0.0, - 0.0, - 0.0, - 246.03885861521542, - 0.0, - 0.0, - 0.0, - 100.4196335964491 - ] - }, - "uri": "top/Level_14/Tile_p0000_p0000_L14_00.b3dm" - }, - "geometricError": 42.99583480988959, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - -108.67300486593547, - 283.53311983304593, - 102.3037397365423, - 50.84614333645564, - 0.0, - 0.0, - 0.0, - 17.133438044868598, - 0.0, - 0.0, - 0.0, - 36.317697168625614 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -108.67300486593547, - 283.53311983304593, - 102.3037397365423, - 50.84614333645564, - 0.0, - 0.0, - 0.0, - 17.133438044868598, - 0.0, - 0.0, - 0.0, - 36.317697168625614 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -108.67300486593547, - 283.53311983304593, - 102.3037397365423, - 50.84614333645564, - 0.0, - 0.0, - 0.0, - 17.133438044868598, - 0.0, - 0.0, - 0.0, - 36.317697168625614 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - -108.67300486593547, - 283.53311983304593, - 102.3037397365423, - 50.84614333645564, - 0.0, - 0.0, - 0.0, - 17.133438044868598, - 0.0, - 0.0, - 0.0, - 36.317697168625614 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+002_+003.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -108.67300486593547, - 283.53311983304593, - 102.3037397365423, - 50.84614333645564, - 0.0, - 0.0, - 0.0, - 17.133438044868598, - 0.0, - 0.0, - 0.0, - 36.317697168625614 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0100.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -108.67300486593547, - 283.53311983304593, - 102.3037397365423, - 50.84614333645564, - 0.0, - 0.0, - 0.0, - 17.133438044868598, - 0.0, - 0.0, - 0.0, - 36.317697168625614 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_010.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -108.67300486593547, - 283.53311983304593, - 102.3037397365423, - 50.84614333645564, - 0.0, - 0.0, - 0.0, - 17.133438044868598, - 0.0, - 0.0, - 0.0, - 36.317697168625614 - ] - }, - "uri": "top/Level_14/Tile_p0000_p0000_L14_01.b3dm" - }, - "geometricError": 42.99583480988959, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 144.43357464729146, - -32.734469614042126, - -16.575029155212178, - 203.74447624388304, - 0.0, - 0.0, - 0.0, - 298.4317837178314, - 0.0, - 0.0, - 0.0, - 95.53640331221641 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 117.3693277082741, - -134.2009831743409, - -15.68259770265081, - 176.68031067247693, - 0.0, - 0.0, - 0.0, - 196.96641221175352, - 0.0, - 0.0, - 0.0, - 74.52884852647207 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 42.525324616164994, - -235.5756078089087, - 1.9881371120195581, - 101.83663587335113, - 0.0, - 0.0, - 0.0, - 95.59363000387728, - 0.0, - 0.0, - 0.0, - 56.86202082994896 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 42.525324616164994, - -235.5756078089087, - 1.9881371120195581, - 101.83663587335113, - 0.0, - 0.0, - 0.0, - 95.59363000387728, - 0.0, - 0.0, - 0.0, - 56.86202082994896 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+003_+000.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 42.525324616164994, - -235.5756078089087, - 1.9881371120195581, - 101.83663587335113, - 0.0, - 0.0, - 0.0, - 95.59363000387728, - 0.0, - 0.0, - 0.0, - 56.86202082994896 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0200.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 42.904128547520884, - -38.40397063385555, - -26.82735668639782, - 101.84749689203596, - 0.0, - 0.0, - 0.0, - 101.45609168824646, - 0.0, - 0.0, - 0.0, - 63.37699274797126 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 42.904128547520884, - -38.40397063385555, - -26.82735668639782, - 101.84749689203596, - 0.0, - 0.0, - 0.0, - 101.45609168824646, - 0.0, - 0.0, - 0.0, - 63.37699274797126 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+003_+001.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 42.904128547520884, - -38.40397063385555, - -26.82735668639782, - 101.84749689203596, - 0.0, - 0.0, - 0.0, - 101.45609168824646, - 0.0, - 0.0, - 0.0, - 63.37699274797126 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0201.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 218.7593759919775, - -199.39971207747197, - 12.54896442914685, - 74.89860235295266, - 0.0, - 0.0, - 0.0, - 59.131873214772554, - 0.0, - 0.0, - 0.0, - 13.900161187925164 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 218.7593759919775, - -199.39971207747197, - 12.54896442914685, - 74.89860235295266, - 0.0, - 0.0, - 0.0, - 59.131873214772554, - 0.0, - 0.0, - 0.0, - 13.900161187925164 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+004_+000.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 218.7593759919775, - -199.39971207747197, - 12.54896442914685, - 74.89860235295266, - 0.0, - 0.0, - 0.0, - 59.131873214772554, - 0.0, - 0.0, - 0.0, - 13.900161187925164 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0202.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 117.3693277082741, - -134.2009831743409, - -15.68259770265081, - 176.68031067247693, - 0.0, - 0.0, - 0.0, - 196.96641221175352, - 0.0, - 0.0, - 0.0, - 74.52884852647207 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_020.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 43.29469604157575, - 164.6285663358604, - -2.326052162078838, - 101.84808528351982, - 0.0, - 0.0, - 0.0, - 101.45895445188432, - 0.0, - 0.0, - 0.0, - 81.29525419140367 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 43.29469604157575, - 164.6285663358604, - -2.326052162078838, - 101.84808528351982, - 0.0, - 0.0, - 0.0, - 101.45895445188432, - 0.0, - 0.0, - 0.0, - 81.29525419140367 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 43.29469604157575, - 164.6285663358604, - -2.326052162078838, - 101.84808528351982, - 0.0, - 0.0, - 0.0, - 101.45895445188432, - 0.0, - 0.0, - 0.0, - 81.29525419140367 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+003_+002.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 43.29469604157575, - 164.6285663358604, - -2.326052162078838, - 101.84808528351982, - 0.0, - 0.0, - 0.0, - 101.45895445188432, - 0.0, - 0.0, - 0.0, - 81.29525419140367 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0210.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 43.29469604157575, - 164.6285663358604, - -2.326052162078838, - 101.84808528351982, - 0.0, - 0.0, - 0.0, - 101.45895445188432, - 0.0, - 0.0, - 0.0, - 81.29525419140367 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_021.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 245.93527167609, - -38.794199212332046, - -38.99284241478125, - 101.84940588707883, - 0.0, - 0.0, - 0.0, - 101.45598134292936, - 0.0, - 0.0, - 0.0, - 59.5949838680728 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 245.93527167609, - -38.794199212332046, - -38.99284241478125, - 101.84940588707883, - 0.0, - 0.0, - 0.0, - 101.45598134292936, - 0.0, - 0.0, - 0.0, - 59.5949838680728 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 245.93527167609, - -38.794199212332046, - -38.99284241478125, - 101.84940588707883, - 0.0, - 0.0, - 0.0, - 101.45598134292936, - 0.0, - 0.0, - 0.0, - 59.5949838680728 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+004_+001.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 245.93527167609, - -38.794199212332046, - -38.99284241478125, - 101.84940588707883, - 0.0, - 0.0, - 0.0, - 101.45598134292936, - 0.0, - 0.0, - 0.0, - 59.5949838680728 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0220.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 245.93527167609, - -38.794199212332046, - -38.99284241478125, - 101.84940588707883, - 0.0, - 0.0, - 0.0, - 101.45598134292936, - 0.0, - 0.0, - 0.0, - 59.5949838680728 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_022.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 246.32478287176878, - 164.23683355209707, - -50.09934874181158, - 101.84912274481344, - 0.0, - 0.0, - 0.0, - 101.457676596102, - 0.0, - 0.0, - 0.0, - 62.00512005581322 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 246.32478287176878, - 164.23683355209707, - -50.09934874181158, - 101.84912274481344, - 0.0, - 0.0, - 0.0, - 101.457676596102, - 0.0, - 0.0, - 0.0, - 62.00512005581322 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 246.32478287176878, - 164.23683355209707, - -50.09934874181158, - 101.84912274481344, - 0.0, - 0.0, - 0.0, - 101.457676596102, - 0.0, - 0.0, - 0.0, - 62.00512005581322 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+004_+002.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 246.32478287176878, - 164.23683355209707, - -50.09934874181158, - 101.84912274481344, - 0.0, - 0.0, - 0.0, - 101.457676596102, - 0.0, - 0.0, - 0.0, - 62.00512005581322 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0230.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 246.32478287176878, - 164.23683355209707, - -50.09934874181158, - 101.84912274481344, - 0.0, - 0.0, - 0.0, - 101.457676596102, - 0.0, - 0.0, - 0.0, - 62.00512005581322 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_023.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 144.43357464729146, - -32.734469614042126, - -16.575029155212178, - 203.74447624388304, - 0.0, - 0.0, - 0.0, - 298.4317837178314, - 0.0, - 0.0, - 0.0, - 95.53640331221641 - ] - }, - "uri": "top/Level_14/Tile_p0000_p0000_L14_02.b3dm" - }, - "geometricError": 42.99583480988959, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 114.19426526143644, - 298.4708851597237, - 38.176172768969536, - 172.35793810423678, - 0.0, - 0.0, - 0.0, - 32.26943438567187, - 0.0, - 0.0, - 0.0, - 57.208886614730545 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 114.19426526143644, - 298.4708851597237, - 38.176172768969536, - 172.35793810423678, - 0.0, - 0.0, - 0.0, - 32.26943438567187, - 0.0, - 0.0, - 0.0, - 57.208886614730545 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 43.54575920534228, - 295.33783156966746, - 47.65350072107526, - 101.70960468574228, - 0.0, - 0.0, - 0.0, - 29.13558663098769, - 0.0, - 0.0, - 0.0, - 47.73666014144533 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 43.54575920534228, - 295.33783156966746, - 47.65350072107526, - 101.70960468574228, - 0.0, - 0.0, - 0.0, - 29.13558663098769, - 0.0, - 0.0, - 0.0, - 47.73666014144533 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+003_+003.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 43.54575920534228, - 295.33783156966746, - 47.65350072107526, - 101.70960468574228, - 0.0, - 0.0, - 0.0, - 29.13558663098769, - 0.0, - 0.0, - 0.0, - 47.73666014144533 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0300.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 215.70874111142518, - 298.27425970375384, - 7.701202734918979, - 70.84072670665546, - 0.0, - 0.0, - 0.0, - 32.462886302540824, - 0.0, - 0.0, - 0.0, - 26.73527891188428 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 215.70874111142518, - 298.27425970375384, - 7.701202734918979, - 70.84072670665546, - 0.0, - 0.0, - 0.0, - 32.462886302540824, - 0.0, - 0.0, - 0.0, - 26.73527891188428 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+004_+003.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 215.70874111142518, - 298.27425970375384, - 7.701202734918979, - 70.84072670665546, - 0.0, - 0.0, - 0.0, - 32.462886302540824, - 0.0, - 0.0, - 0.0, - 26.73527891188428 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_0301.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 114.19426526143644, - 298.4708851597237, - 38.176172768969536, - 172.35793810423678, - 0.0, - 0.0, - 0.0, - 32.26943438567187, - 0.0, - 0.0, - 0.0, - 57.208886614730545 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_030.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 114.19426526143644, - 298.4708851597237, - 38.176172768969536, - 172.35793810423678, - 0.0, - 0.0, - 0.0, - 32.26943438567187, - 0.0, - 0.0, - 0.0, - 57.208886614730545 - ] - }, - "uri": "top/Level_14/Tile_p0000_p0000_L14_03.b3dm" - }, - "geometricError": 42.99583480988959, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - -154.01464495381612, - 0.30252991389701833, - 15.282116289950807, - 502.320948807875, - 0.0, - 0.0, - 0.0, - 330.321572635596, - 0.0, - 0.0, - 0.0, - 127.42695105845866 - ] - }, - "uri": "top/Level_13/Tile_p0000_p0000_L13_0.b3dm" - }, - "geometricError": 85.99166961977917, - "refine": "REPLACE" - }, - { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "children": [ - { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "content": { - "uri": "top/Level_17/Tile_+006_+002.json" - }, - "geometricError": 7.5, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "uri": "top/Level_16/Tile_p0000_p0000_L16_1000.b3dm" - }, - "geometricError": 15.0, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "uri": "top/Level_15/Tile_p0000_p0000_L15_100.b3dm" - }, - "geometricError": 21.497917404944793, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "uri": "top/Level_14/Tile_p0000_p0000_L14_10.b3dm" - }, - "geometricError": 42.99583480988959, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 603.3674446128834, - 161.98264210854686, - -128.4739704871484, - 52.836977828361455, - 0.0, - 0.0, - 0.0, - 99.98412737202378, - 0.0, - 0.0, - 0.0, - 14.277241950449422 - ] - }, - "uri": "top/Level_13/Tile_p0000_p0000_L13_1.b3dm" - }, - "geometricError": 85.99166961977917, - "refine": "REPLACE" - } - ], - "content": { - "boundingVolume": { - "box": [ - 0.014586898120739988, - 0.007299131083357224, - -0.04231168709833355, - 656.3470322715614, - 0.0, - 0.0, - 0.0, - 330.0247506780942, - 0.0, - 0.0, - 0.0, - 142.72717192602244 - ] - }, - "uri": "top/Level_12/Tile_p0000_p0000.b3dm" - }, - "geometricError": 171.98333923955835, - "refine": "REPLACE" - } - ], - "geometricError": 748.3841316047692, - "refine": "REPLACE", - "transform": [ - -0.9773257639965924, - -0.21174123601338712, - 0.0, - 0.0, - 0.10388876136222207, - -0.4795153035876962, - 0.8713622661601906, - 0.0, - -0.18450332325218474, - 0.8516047924928104, - 0.49064019516563984, - 0.0, - -1177933.2762076592, - 5436940.677128543, - 3111720.5139461895, - 1.0 - ] - } -} \ No newline at end of file diff --git a/_cache_tiles/tileset.json b/_cache_tiles/tileset.json new file mode 100644 index 0000000..b2f196e --- /dev/null +++ b/_cache_tiles/tileset.json @@ -0,0 +1 @@ +{"asset":{"gltfUpAxis":"Z","version":"1.0"},"root":{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"children":[{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"children":[{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"content":{"uri":"top/Level_14/Tile_+000_+000.json"},"geometricError":60.0,"refine":"REPLACE"}],"content":{"boundingVolume":{"box":[0.019831704922580684,0.017892807236137287,-0.09323218719441684,805.0581514731019,0.0,0.0,0.0,734.5576074595929,0.0,0.0,0.0,157.5004402762163]},"uri":"top/Level_13/Tile_p0006_p0005.b3dm"},"geometricError":120.0,"refine":"REPLACE"}],"geometricError":1101.1357294254199,"refine":"REPLACE","transform":[-0.9773169501866703,-0.21178191348135814,0.0,0.0,0.10390176688103608,-0.4794788953312529,0.8713807501723461,0.0,-0.1845426826423207,0.8516151772098101,0.49060736666817356,0.0,-1178185.498415972,5437011.306290875,3111245.574712541,1.0]}} \ No newline at end of file