stringtranslate.com

PLY (формат файла)

PLY — это формат компьютерных файлов, известный как Polygon File Format или Stanford Triangle Format . Он был разработан в первую очередь для хранения трехмерных данных с 3D-сканеров. Формат хранения данных поддерживает относительно простое описание одного объекта в виде списка номинально плоских полигонов. Можно сохранять различные свойства, включая цвет и прозрачность, нормали поверхности, координаты текстуры и значения достоверности данных. Формат позволяет иметь разные свойства для передней и задней части полигона.

Существует две версии формата файла : одна в ASCII , другая в двоичном формате .

Формат файла

Файл Ply начинается с атрибута "header", который определяет элементы сетки и их типы, за которым следует список самих элементов. Элементы обычно являются вершинами и гранями, но могут включать и другие сущности, такие как ребра, образцы карт диапазонов и полосы треугольников.

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

слой

который идентифицирует файл как файл PLY. Вторая строка указывает, какой это вариант формата PLY. Он должен быть одним из следующих:

формат ascii 1.0формат binary_little_endian 1.0формат binary_big_endian 1.0

В будущих версиях стандарта номер редакции в конце будет изменен, но в настоящее время используется только версия 1.0.

Комментарии можно размещать в заголовке, используя слово commentв начале строки. Все, что находится от этого места до конца строки, следует игнорировать. Например:

комментарий Это комментарий!

Ключевое elementслово вводит описание того, как хранятся некоторые конкретные элементы данных и сколько их там. Таким образом, в файле, где есть 12 вершин, каждая из которых представлена ​​как тройка с плавающей точкой (X,Y,Z), можно было бы ожидать увидеть:

элемент вершина 12свойство float xсвойство float yсвойство float z

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

элемент грань 10список свойств uchar int vertex_index

Реализации PLY сильно различаются по именам свойств. vertex_indicesиспользуется чаще, чем vertex_index, например, в Blender и VTK . Расширенная спецификация содержит «Основной список (обязательный)», «Второй список (часто используемый)» и «Третий список (предлагаемые расширения)» имен свойств. [2]

Слово listуказывает на то, что данные представляют собой список значений, первое из которых — это количество записей в списке (в данном случае представленное как 'uchar'). В этом примере каждая запись списка представлена ​​как 'int'. В конце заголовка всегда должна быть строка:

конец_заголовка

ASCII или двоичный формат

В версии ASCII формата вершины и грани описываются по одной в строке с числами, разделенными пробелами. В двоичной версии данные просто упаковываются близко друг к другу в endiannessуказанном в заголовке и с типами данных, указанными в записях property. Для общего property list...представления для многоугольников первое число для этого элемента — это число вершин, которые имеет многоугольник, а остальные числа — это индексы этих вершин в предыдущем списке вершин.

История

Формат PLY был разработан в середине 90-х годов Грегом Турком и другими в графической лаборатории Стэнфорда под руководством Марка Левоя. Его дизайн был вдохновлен форматом Wavefront .obj . Однако формат Obj не обладал расширяемостью для произвольных свойств и группировок, поэтому были придуманы ключевые слова propertyи elementдля обобщения понятий вершин, граней, связанных данных и других групп.

Пример файла

Ниже приведен полный пример файла PLY, описывающего кубическую сетку, экспортированную из Blender версии 4.0.2:

слойформат ascii 1.0комментарий Создано в Blender версии 4.0.2элемент вершина 14свойство float xсвойство float yсвойство float zсвойство float nxнедвижимость плавает nyнедвижимость плавает nzсвойство плавает sсвойство плавать тэлемент грань 6список свойств uchar uint vertex_indicesконец_заголовка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,751 -1 1 0,5773503 -0,5773503 0,5773503 0,625 0,751 -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,51 1 -1 0,5773503 0,5773503 -0,5773503 0,375 0,5-1 -1 -1 -0,5773503 -0,5773503 -0,5773503 0,125 0,754 0 1 2 34 4 3 5 64 7 8 9 104 11 12 4 134 12 0 3 44 10 9 0 12

Файл начинается с заголовка, который определяет файл в формате ASCII. Всего имеется 14 вершин (6 граней * 4 вершины - 10 вершин, сохраненных из-за слияния) и 6 граней. После заголовка перечислены данные вершин и граней. Список вершин содержит положение (x,y,z), нормали (nx,ny,nz) и координаты текстуры (s,t) для каждой из 14 вершин. Список граней содержит количество вершин (4) и индексы вершин для каждой из 6 четырехугольных граней.

Смотрите также

Программное обеспечение с открытым исходным кодом

Ссылки

  1. ^ Грег Терк. "Формат файла PLY Polygon". Архивировано из оригинала 2016-12-04.
  2. ^ Грег Терк. «Формат файла PLY Polygon (расширенный)» (PDF) .

Внешние ссылки