Открыть сервис

Формат 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 поддерживает два основных режима кодирования:

  1. ASCII (текстовый) — данные хранятся в виде чисел, разделённых пробелами и символами новой строки. Легко читается человеком, но занимает больше места и медленнее обрабатывается.
  2. Бинарный — данные записываются в двоичном виде. Различают два порядка байтов: 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 →