PLY (формат файла)
Расширение имени файла |
.ply |
---|---|
Тип интернет-СМИ |
текстовый/обычный |
Введите код | ASCII / двоичный файл |
Магическое число | сгибать |
Разработано | Грег Терк , Стэнфордский университет |
Первоначальный выпуск | 1994 [ 1 ] |
Тип формата | 3D model format |
PLY — это компьютерный формат файлов, известный как формат файла многоугольника или формат Стэнфордского треугольника . В основном он был разработан для хранения трехмерных данных от 3D-сканеров. Формат хранения данных поддерживает относительно простое описание отдельного объекта как списка номинально плоских многоугольников. Могут быть сохранены различные свойства, включая цвет и прозрачность, нормали поверхности, координаты текстуры и значения достоверности данных. Формат позволяет иметь разные свойства для передней и задней части многоугольника.
Существует две версии формата файла : одна в ASCII , другая в двоичном формате .
Формат файла
[ редактировать ]Файл Ply начинается с атрибута «header», который определяет элементы сетки и их типы, за которым следует сам список элементов. Элементами обычно являются вершины и грани, но они могут включать и другие объекты, такие как ребра, образцы карт диапазонов и полоски треугольников.
Заголовок как 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!
The element
Ключевое слово представляет описание того, как хранятся некоторые конкретные элементы данных и сколько их. Следовательно, в файле, содержащем 12 вершин, каждая из которых представлена в виде тройки с плавающей запятой (X,Y,Z), можно было бы ожидать увидеть:
element vertex 12 property float x property float y property float z
Другой property
линии могут указывать на то, что цвета или другие элементы данных хранятся в каждой вершине, и указывать тип данных этой информации. Что касается типа данных, существует два варианта в зависимости от источника файла 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_index
Реализации PLY сильно различаются по именам свойств. vertex_indices
используется чаще, чем vertex_index
, например в Blender и VTK . В расширенной спецификации перечислены «Основной список (обязательный)», «Второй список (часто используемый)» и «Третий список (предлагаемые расширения)» имен свойств. [ 2 ]
Слово list
указывает, что данные представляют собой список значений, первое из которых — это количество записей в списке (в данном случае представлено как «uchar»). В этом примере каждая запись списка представлена как «int». В конце заголовка всегда должна быть строка:
end_header
ASCII или двоичный формат
[ редактировать ]В версии формата ASCII каждая вершина и грань описываются по одной строке с числами, разделенными пробелами. В двоичной версии данные просто плотно упаковываются друг в друга. endianness
указанные в заголовке и с типами данных, указанными в property
записи. Для общего property list...
представление многоугольников, первое число этого элемента — это количество вершин, которые имеет многоугольник, а остальные числа — это индексы этих вершин в предыдущем списке вершин.
История
[ редактировать ]Формат PLY был разработан в середине 90-х годов Грегом Тёрком и другими сотрудниками Стэнфордской графической лаборатории под руководством Марка Левоя. Его дизайн был вдохновлен форматом Wavefront .obj . Однако формату Obj не хватало возможности расширения для произвольных свойств и группировок, поэтому property
и element
ключевые слова были разработаны для обобщения понятий вершин, граней, связанных данных и других групп.
Пример файла
[ редактировать ]Ниже приведен полный пример файла PLY, описывающего сетку куба, экспортированную из Blender версии 4.0.2:
ply format ascii 1.0 comment Created in Blender version 4.0.2 element vertex 14 property float x property float y property float z property float nx property float ny property float nz property float s property float t element face 6 property list uchar uint vertex_indices end_header 1 1 1 0.5773503 0.5773503 0.5773503 0.625 0.5 -1 1 1 -0.5773503 0.5773503 0.5773503 0.875 0.5 -1 -1 1 -0.5773503 -0.5773503 0.5773503 0.875 0.75 1 -1 1 0.5773503 -0.5773503 0.5773503 0.625 0.75 1 -1 -1 0.5773503 -0.5773503 -0.5773503 0.375 0.75 -1 -1 1 -0.5773503 -0.5773503 0.5773503 0.625 1 -1 -1 -1 -0.5773503 -0.5773503 -0.5773503 0.375 1 -1 -1 -1 -0.5773503 -0.5773503 -0.5773503 0.375 0 -1 -1 1 -0.5773503 -0.5773503 0.5773503 0.625 0 -1 1 1 -0.5773503 0.5773503 0.5773503 0.625 0.25 -1 1 -1 -0.5773503 0.5773503 -0.5773503 0.375 0.25 -1 1 -1 -0.5773503 0.5773503 -0.5773503 0.125 0.5 1 1 -1 0.5773503 0.5773503 -0.5773503 0.375 0.5 -1 -1 -1 -0.5773503 -0.5773503 -0.5773503 0.125 0.75 4 0 1 2 3 4 4 3 5 6 4 7 8 9 10 4 11 12 4 13 4 12 0 3 4 4 10 9 0 12
Файл начинается с заголовка, который определяет файл в формате ASCII. Всего 14 вершин (6 граней * 4 вершины — 10 вершин сохранено из-за слияния) и всего 6 граней. После заголовка перечислены данные вершин и граней. Список вершин содержит положение (x,y,z), нормали (nx,ny,nz) и координаты текстуры (s,t) для каждой из 14 вершин. Список граней содержит количество вершин (4) и индексы вершин для каждой из 6 четырехугольных граней.
См. также
[ редактировать ]- STL (формат файла) , еще один распространенный формат файла для 3D-печати.
- Формат файла аддитивного производства
- Файл Wavefront .obj — формат файла определения 3D-геометрии с .obj . расширением
- glTF — формат файлов Khronos Group для 3D-сцен и моделей.
- Универсальное описание сцены (долл. США).
Программное обеспечение с открытым исходным кодом
[ редактировать ]- CloudCompare фокусируется на облаках точек с некоторыми дополнительными функциями для сеток.
- Программная среда GigaMesh : численные вычисления на сетках в PLY (или OBJ).
- MeshLab : универсальное приложение для визуализации, обработки и преобразования трехмерных сеток в формат файла PLY или из него.
Ссылки
[ редактировать ]- ^ Грег Терк. «Формат файла многоугольника PLY» . Архивировано из оригинала 4 декабря 2016 г.
- ^ Грег Терк. «Формат файла полигона PLY (расширенный)» (PDF) .
Внешние ссылки
[ редактировать ]- Описание формата Библиотеки Конгресса
- PLY — формат файла многоугольника
- Некоторые инструменты для работы с файлами PLY (исходный код C)
- rply — программная библиотека Ansi C для чтения и записи файлов PLY (лицензия MIT).
- libply — программная библиотека C++ для чтения и записи файлов PLY (лицензия GNU).
- Еще одна программная библиотека C++ для чтения и записи файлов PLY (лицензия GPL 3.0).
- Репозиторий 3D-моделей, хранящихся в формате PLY.