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 и в виде бинарного файла.
Файлы устроены в виде заголовка, в котором определяются элементы полисеток и их типы, и следующего за ним списка самих элементов. Элементы — это обычно вершины и грани, но могут включаться другие сущности, такие как рёбра или полосы треугольников (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 версии формата каждая вершина и грань описывается одной строкой чисел, разделённых пробелами. В бинарной версии формата данные упаковываются друг возле друга в порядке байтов, установленным в заголовке, и типом, указанным в 'property'.
Формат PLY был разработан в середине 90-х Грегом Тюркомангл. и другими сотрудниками Stanford graphics lab под руководством Marc Levoy. Его дизайн был вдохновлён форматом Wavefront .obj, но формат Obj не обладает расширяемостью произвольными свойствами и группами данных, для чего были введены ключевые слова 'property' и 'element', обобщающие нотацию вершин, граней, ассоциированных данных и т.п.