PLY

Polygon File Format

Расширение |  `.`ply``
MIME-тип |  text/plain
Сигнатура |  PLY
Разработчик |  Greg Turk, Стэнфордский университет
Опубликован |  1994[1]
Тип формата |  3D model format

PLY — формат файлов описания геометрии, известный также как Polygon File Format и Stanford Triangle Format. Он был разработан, главным образом, для хранения трёхмерных данных 3D сканеров[2]. Формат поддерживает относительно простое описание объекта как списка плоских полигонов. PLY может хранить множество свойств объекта, включающее: цвет и прозрачность, нормали к поверхности, текстурные координаты и т.д. Формат позволяет иметь различные свойства передней и задней грани полигона. Существует 2 версии формата PLY: ASCII и в виде бинарного файла.

## Содержание

* 1 Описание формата
* 2 ASCII или бинарный формат
* 3 История
* 4 Примечания
* 5 Ссылки

## Описание формата

[править | править код]

Файлы устроены в виде заголовка, в котором определяются элементы полисеток и их типы, и следующего за ним списка самих элементов. Элементы — это обычно вершины и грани, но могут включаться другие сущности, такие как рёбра или полосы треугольников (triangle strips).

Заголовок и для ASCII, и для бинарного файла является ASCII текстом. Только численные данные, следующие за заголовком, различаются между версиями. Заголовок всегда начинается со строки, содержащей слово

ply

что идентифицирует PLY формат файла. Вторая строка отображает, какой вариант PLY формата используется:

format ascii 1.0
format binary_little_endian 1.0
format binary_big_endian 1.0

На данный момент 1.0 — единственная использующаяся версия формата.

Комментарии могут быть размещены в заголовке с использованием слова `comment` в начале строки. Вся строка после этого слова при импорте будет проигнорирована:

comment This is a comment!

Ключевое слово `element` вводит описание того, какой конкретный элемент данных хранится в файле, а также количество этих элементов. В примере ниже описано, что файл содержит 12 вершин, каждая из которых представлена в виде трёх чисел с плавающей точкой:

element vertex 12
property float x
property float y
property float z

Строки, начинающиеся со слова `property`, указывают тип информации о вершинах. Существует 2 варианта типов, зависящие от источника ply файла. Тип может быть одним из char uchar short ushort int uint float double или одним из int8 uint8 int16 uint16 int32 uint32 float32 float64. Грани объекта могут быть описаны следующим образом:

element face 10
property list uchar int vertex_indices

Слово `list` показывает, что данные представлены в виде списка значений, первое из которых — это количество элементов списка (представленное типом 'uchar' в данном случае), а каждое вхождение списка имеет тип 'int'. Для обычного 'property list...' представления полигонов первое число для этого элемента — это число вершин полигона, и оставшиеся числа — это индексы в предшествующем списке вершин.

В конце заголовка располагается строка, обозначающая его конец:

end_header

## ASCII или бинарный формат

[править | править код]

В ASCII версии формата каждая вершина и грань описывается одной строкой чисел, разделённых пробелами. В бинарной версии формата данные упаковываются друг возле друга в порядке байтов, установленным в заголовке, и типом, указанным в 'property'.

## История

[править | править код]

Формат PLY был разработан в середине 90-х Грегом Тюркомангл. и другими сотрудниками Stanford graphics lab под руководством Marc Levoy. Его дизайн был вдохновлён форматом Wavefront .obj, но формат Obj не обладает расширяемостью произвольными свойствами и группами данных, для чего были введены ключевые слова 'property' и 'element', обобщающие нотацию вершин, граней, ассоциированных данных и т.п.

## Примечания

[править | править код]

1. ↑ Greg Turk. The PLY Polygon File Format (неопр.). Архивировано из оригинала 4 декабря 2016 года.
2. ↑ PLY - Polygon File Format (неопр.). paulbourke.net. Дата обращения: 26 августа 2024.

## Ссылки

[править | править код]

* PLY - Polygon File Format
* Некоторые инструменты для работы с PLY файлами (исходный код на языке C)
* rply - ANSI C библиотека для чтения и записи PLY файлов (лицензия MIT)
* libply - C++ библиотека для чтения и записи PLY файлов (лицензия GNU)
* Ещё одна C++ библиотека для чтения и записи PLY файлов (лицензия GPL 3.0)
* Репозиторий 3D моделей в PLY формате