О разделе
Что такое Plate Index
Plate Index — узел раздачи растровых материалов проекта Osteon. Здесь лежат плиты в полном разрешении, их тайловые пирамиды, покадровые последовательности и готовые наборы для выгрузки. Текстовая часть, описания моделей и живой рендер живут на основном узле.
Разделение сделано из-за полосы. Одна плита в полном разрешении — это около мегабайта PNG и почти три мегабайта тайлов; при просмотре с полным увеличением браузер запрашивает несколько десятков квадратов подряд. Держать такую раздачу на одном хосте с текстовой частью неудобно: они мешают друг другу.
Тайловая пирамида
Плита рендерится один раз в 4800 × 6720 и нарезается на уровни, каждый следующий вдвое меньше предыдущего, до одного пикселя. Уровней получается тринадцать. Тайл — квадрат 254 пикселя с перекрытием в один пиксель по краям, чтобы на стыках не появлялось швов.
Просмотрщик выбирает уровень так, чтобы пиксель тайла примерно соответствовал пикселю экрана, и запрашивает только те квадраты, которые попадают в видимую область. Пока нужный уровень грузится, кадр заполняется растянутыми тайлами уровня пониже — поэтому картинка не мигает белым.
Тайлы отдаются в WebP. Формат выбран из-за характера изображения: у плит большие однородные заливки и тонкая линия, и WebP на таком материале заметно компактнее PNG при неотличимом результате.
Формат метаданных
Описание пирамиды приходит из объектного хранилища: GET /api/v3/objects/plate-<id>.json возвращает размеры, размер тайла, перекрытие, число уровней и шаблон адреса тайла. Просмотрщик ничего не знает о конкретной плите заранее.
{
"id": "pl-007",
"width": 4800,
"height": 6720,
"tileSize": 254,
"overlap": 1,
"format": "webp",
"maxLevel": 13,
"tileUrl": "/media/plates/pl-007/tiles_files/{level}/{x}_{y}.webp"
}