Формат PLY
PLY (от англ. Polygon File Format или Stanford Triangle Format) — это формат файла для хранения трёхмерных данных, предназначенный в первую очередь для представления трёхмерных объектов в виде набора многоугольников (полигонов). Он был разработан в 1990-х годах в Станфордском университете (США) и широко используется в компьютерной графике, 3D-сканировании, научной визуализации и других областях, где требуется простота, гибкость и возможность хранения дополнительных атрибутов вершин.
История
Формат PLY был создан в 1994–1995 годах в лаборатории компьютерной графики Станфордского университета под руководством Марка Левоя. Изначально он разрабатывался для хранения результатов 3D-сканирования реальных объектов, в том числе знаменитой «Станфордской статуи» (Stanford Bunny) — одного из наиболее известных тестовых трёхмерных объектов. Идея заключалась в создании простого, текстового и легко читаемого формата, который не зависел бы от конкретных программных пакетов.
В отличие от более сложных форматов, таких как OBJ или STL, PLY был спроектирован для хранения не только геометрии (координат вершин и связей между ними), но и произвольных атрибутов: цвета, нормалей, текстурных координат, значений прозрачности, а также данных, полученных в результате 3D-сканирования (например, интенсивности отражённого сигнала). Впоследствии формат получил поддержку в большинстве программ для работы с трёхмерной графикой (Blender, MeshLab, Autodesk Maya, 3ds Max, ParaView и др.) и стал стандартом де-факто для обмена данными между системами 3D-сканирования и программным обеспечением.
Структура файла
Файл PLY состоит из двух основных частей: заголовка (header) и тела (body). Заголовок содержит описание структуры данных, а тело — сами данные.
Заголовок
Заголовок начинается с магической строки ply и заканчивается строкой end_header. В нём указываются:
- Версия формата (например,
format ascii 1.0илиformat binary_little_endian 1.0). - Количество элементов (вершин, граней, рёбер) и их атрибутов.
- Типы данных для каждого атрибута (например,
float,double,ucharдля цвета).
Пример заголовка для текстового ASCII-формата: `` ply format ascii 1.0 element vertex 8 property float x property float y property float z element face 6 property list uchar int vertex_indices end_header `` Здесь объявлено 8 вершин с координатами x, y, z, и 6 граней, каждая из которых задаётся списком индексов вершин.
Тело файла
Тело содержит непосредственно данные. В текстовом (ASCII) формате каждая строка соответствует одной записи: для вершин — координаты и атрибуты, для граней — количество вершин и их индексы. В бинарном формате данные записываются в двоичном виде, что уменьшает размер файла и ускоряет чтение.
Виды формата
PLY поддерживает два основных режима кодирования:
- ASCII (текстовый) — данные хранятся в виде чисел, разделённых пробелами и символами новой строки. Легко читается человеком, но занимает больше места и медленнее обрабатывается.
- Бинарный — данные записываются в двоичном виде. Различают два порядка байтов: little-endian (младший байт первым) и big-endian (старший байт первым). Бинарный формат компактнее и быстрее загружается, но менее удобен для отладки.
Оба варианта полностью совместимы по структуре заголовка.
Возможности и атрибуты
Главное преимущество PLY — возможность хранить произвольные атрибуты для каждого элемента. Помимо обязательных координат вершин (x, y, z) и списков индексов граней, можно добавлять:
- Цвет (red, green, blue, alpha) — обычно в диапазоне 0–255 или 0.0–1.0.
- Нормали (nx, ny, nz) — для расчёта освещения.
- Текстурные координаты (u, v) — для наложения текстур.
- Прозрачность, отражательную способность, интенсивность и другие пользовательские данные.
Также PLY поддерживает хранение не только треугольников, но и многоугольников с произвольным числом вершин, а также рёбер и точек (вершин без граней). Это делает формат универсальным для различных задач: от отображения облаков точек до сложных полигональных сеток.
Применение
Формат PLY используется в следующих областях:
- 3D-сканирование: результаты работы лазерных сканеров и фотограмметрических систем часто сохраняются в PLY, так как он позволяет хранить не только геометрию, но и дополнительные данные (цвет, интенсивность, метки).
- Научная визуализация: в биологии, медицине, геологии и астрофизике PLY применяется для визуализации трёхмерных моделей, полученных с помощью томографов, микроскопов или радиотелескопов.
- Компьютерная графика и анимация: PLY используется как промежуточный формат для обмена данными между программами (например, при импорте/экспорте моделей в Blender, Maya, 3ds Max).
- Робототехника и компьютерное зрение: в задачах реконструкции сцены, SLAM (одновременная локализация и картографирование) и распознавания объектов.
- 3D-печать: хотя для печати чаще применяется STL, PLY также может быть конвертирован в подходящий формат.
Достоинства и недостатки
Достоинства:
- Простота и открытость формата (не требует лицензирования).
- Возможность хранения произвольных атрибутов, что удобно для научных и инженерных задач.
- Поддержка как текстового, так и бинарного представления.
- Широкая поддержка в программном обеспечении.
Недостатки:
- Отсутствие встроенной поддержки сжатия (файлы могут быть большими).
- Нет стандартизированной поддержки анимации, скелетной анимации или сложных материалов (текстурные карты, шейдеры).
- Ограниченная поддержка в веб-браузерах (требуется конвертация в glTF или другие форматы).
- Сложность обработки больших файлов (сотни миллионов вершин) без специальных инструментов.
Пример использования
Типичный сценарий: после 3D-сканирования статуи получено облако точек и полигональная сетка. Данные сохраняются в PLY-файл с цветом каждой вершины. Затем файл открывается в MeshLab или Blender для очистки, ремонта сетки и последующего экспорта в другие форматы (например, OBJ или STL). Для работы с PLY в коде на Python используется библиотека plyfile или numpy-stl, а в C++ — assimp или tinyply.
Интересные факты
- Название «Stanford Triangle Format» отражает происхождение формата, но он поддерживает не только треугольники.
- Самый известный тестовый объект — «Станфордский зайчик» (Stanford Bunny) — был получен сканированием керамической статуэтки и сохранён в PLY. Этот файл стал стандартным тестом для алгоритмов обработки трёхмерных сеток.
- В 2010-х годах формат PLY начал вытесняться более современными форматами, такими как glTF (для веб-графики) и USD (для анимации), но остаётся популярным в научных и инженерных кругах.
Источники
- Stanford University Computer Graphics Laboratory. «The PLY Polygon File Format». Описание формата на официальном сайте.
- Turk, G., Levoy, M. «Zippered Polygon Meshes from Range Images». Proceedings of SIGGRAPH, 1994.
- Документация библиотеки MeshLab (VCG — Visualization and Computer Graphics Library).
- Статья «PLY (file format)» в англоязычной Википедии (по состоянию на 2023 год).
- Руководство по формату PLY в документации Blender.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →