exponenta event banner

Формат PLY

Формат PLY версии 1.0, также известный как Stanford Triangle Format, определяет гибкую и систематическую схему хранения 3D данных. Заголовок ASCII указывает, какие данные находятся в файле, определяя «элементы» каждый с набором «свойств». Многие файлы PLY имеют только данные вершин и граней, однако можно также включить другие данные, такие как информация о цвете, нормали вершин или свойства, специфичные для приложения.

Примечание

Функции данных облака точек Computer Vision Toolbox™ поддерживают только координаты (x, y, z), нормали и свойства цвета.

Заголовок файла

Пример заголовка (курсивом является комментарий):

сгиб

идентификатор файла

формат binary_big_endian 1.0

укажите формат и версию данных

вершина элемента 9200

определить элемент «vertex»

свойство float x

 

свойство float y

 

свойство float z

 

грань элемента 18000

определить элемент «face»

список свойств uchar int vertex_indices

 

end_header

данные начинаются после этой строки

Файл начинается с «слой» и определяет, что это файл PLY. Заголовок также должен содержать строку формата с синтаксисом

format < формат данных > < Версия PLY >

Поддерживаемые форматы данных - «ascii» для данных, хранящихся в виде текста, и «binary_little_endian» и «binary_big_endian» для двоичных данных (где little/big endian относится к порядку байтов многобайтовых данных). Определения элементов начинаются со строки «element», за которой следуют определения свойств элементов

элемент < имя элемента > < номер в файле >

свойство < тип данных > < имя свойства 1 >

свойство < тип данных > < имя свойства 2 >

свойство < тип данных > < имя свойства 3 >

...

Например, «element vertex 9200» определяет элемент «vertex» и указывает, что 9200 вершин хранятся в файле. За каждым определением элемента следует список свойств этого элемента. Существует два вида свойств: скалярный и список. Определение скалярного свойства имеет синтаксис

свойство < тип данных > < имя свойства >

где < тип данных >

ИмяНапечатать
случайная работа(8-битный) символ
uchar(8-битный) символ без знака
короткий(16-разрядное) короткое целое число
ushort(16-разрядное) беззнаковое короткое целое число
интервал(32-разрядное) целое число
uint(32-разрядное) целое число без знака
плавание(32-разрядный) поплавок с одинарной точностью
дважды(64-разрядный) поплавок с двойной точностью

Для обеспечения совместимости между системами следует отметить, что количество битов в каждом типе данных должно быть согласованным. Тип списка сохраняется со счетом, за которым следует список скаляров. Синтаксис определения для свойства списка:

список свойств < count data type > < тип данных > < имя свойства >

Например,

список свойств uchar int vertex_index

определяет, vertex_index свойства хранятся, начиная с числа байтов, за которым следуют целочисленные значения. Это полезно для сохранения полигональной связности, поскольку она обладает гибкостью для задания переменного числа индексов вершин в каждой грани.

Заголовок также может содержать комментарии. Синтаксис комментария - это просто строка, начинающаяся с «comment», за которой следует однострочный комментарий:

комментарий < текст комментария >

В комментариях могут содержаться такие сведения о данных, как автор файла, описание данных, источник данных и другие текстовые данные.

Данные

После заголовка данные элемента сохраняются как ASCII или двоичные данные (как указано строкой формата в заголовке). После заголовка данные сохраняются в порядке, в котором были определены элементы и свойства. Сначала сохраняются все данные для первого типа элемента. В заголовке примера первым типом элемента является «vertex» с 9200 вершинами в файле и со свойствами float «x», «y» и «z».

float вершина [1] .x

float вершина [1] .y

float вершина [1] .z

float вершина [2] .x

float вершина [2] .y

float вершина [2] .z

...

float вершина [9200] .x

float вершина [9200] .y

float вершина [9200] .z

В общем, данные свойств для каждого элемента хранятся по одному элементу за раз.

< свойство 1 > < свойство 2 >... < свойство N > элемент [1]

< свойство 1 > < свойство 2 >... < свойство N > элемент [2]

...

Свойства типа списка сохраняются, начиная со счетчика и далее следует список скаляров. Например, тип элемента «face» имеет свойство list «vertex_indices» со значением uchar count и int scalar type.

uchar количество

int face [1] .vertex _ indices [1]

int face [1] .vertex _ indices [2]

int face [1] .vertex _ indices [3]

...

int face [1] .vertex _ indices [count]

uchar количество

int face [2] .vertex _ indices [1]

int face [2] .vertex _ indices [2]

int face [2] .vertex _ indices [3]

...

int face [2] .vertex _ indices [count]

...

Общие элементы и свойства

В то время как формат PLY обладает гибкостью для определения многих типов элементов и свойств, общий набор элементов понимается между программами для передачи общих 3-D типов данных. Turk предлагает элементы и имена свойств, которые программы должны попытаться сделать стандартными.

Требуемое свойство ядраЭлементСобственностьТип данныхОписание свойства
вершинаxfloatкоординаты x, y, z
 yfloat 
 zfloat 
  nxfloatx, y, z нормального
  nyfloat 
  nzfloat 
  красныйucharцвет вершины
  зеленыйuchar 
  синийuchar 
  альфаucharобъем прозрачности
  material_indexintиндекс к списку материалов
лицоvertex_indicesсписок intиндексы к вершинам
  back_red ucharцвет задней стороны
  back_greenuchar 
  back_blueuchar 
 крайvertex1intиндекс в вершину
  vertex2intиндекс в другую вершину
  crease_tagucharсгиб в поверхности подразделения
 материалкрасныйucharцвет материала
  зеленыйuchar 
  синийuchar 
  альфаucharобъем прозрачности
  reflect_coefffloatколичество отраженного света
  refract_coefffloatколичество преломленного света
  refract_indexfloatпоказатель преломления
  extinct_coefffloatкоэффициент вымирания

См. также

|