Plate Index

О разделе

Что такое 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"
}