Формат PLY

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

Примечание

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

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

Заголовок в качестве примера (выделенный курсивом текст является комментарием):

сгиб

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

формат binary_big_endian 1.0

задайте формат данных и версию

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

задайте элемент "вершины"

плавание свойства x

 

плавание свойства y

 

плавание свойства z

 

поверхность элемента 18000

задайте элемент "поверхности"

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

 

end_header

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

Файл начинается со "сгиба", идентифицируя, что это - файл PLY. Заголовок должен также включать строку форматов с синтаксисом

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

Поддерживаемые форматы данных являются "ASCII" для данных, хранимых как текст и "binary_little_endian" и "binary_big_endian" для двоичных данных (где мало/обратный порядок байтов относится к порядку байтов многобайтовых данных). Определения элемента начинаются со строки "элемента", сопровождаемой определениями свойства элемента

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

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

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

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

...

Например, "вершина элемента 9200" задает элемент "вершина" и указывает, что 9 200 вершин хранятся в файле. Каждое определение элемента сопровождается списком свойств того элемента. Существует два вида свойств, скаляра и списка. Скалярное определение свойства имеет синтаксис

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

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

ИмяВвод
'char'(8-битный) символ
uchar(8-битный) символ без знака
короткий(16-битное) короткое целое
ushort(16-битное) целое число короткого целого без знака
int(32-битное) целое число
uint(32-битное) беззнаковое целое
плавание(32-битное) плавание с одинарной точностью
'double'(64-битное) плавание с двойной точностью

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

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

Например,

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

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

Заголовок может также включать комментарии. Синтаксис для комментария является просто строкой, начинающейся с "комментария", сопровождаемого коротким комментарием:

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

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

Данные

После заголовка данные об элементе хранятся или как ASCII или как двоичные данные (как задано строкой форматов в заголовке). После заголовка данные хранятся в порядке, элементы и свойства были заданы. Во-первых, все данные для первого типа элемента хранятся. В заголовке в качестве примера первый тип элемента является "вершиной" с 9 200 вершинами в файле, и со свойствами "x" плавающими, "y" и "z".

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

Вершина float [1] год

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

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

Вершина float [2] год

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

...

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

Вершина float [9200] год

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

В целом данные о свойствах для каждого элемента хранятся один элемент за один раз.

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

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

...

Свойства типа списка хранятся, начинаясь с количества и сопровождаемый списком скаляров. Например, тип элемента "поверхности" имеет свойство списка "vertex_indices" с количеством uchar и международным скалярным типом.

Количество uchar

Поверхность int [1] .vertex_indices[1]

Поверхность int [1] .vertex_indices[2]

Поверхность int [1] .vertex_indices[3]

...

Поверхность int [1] .vertex_indices [количество]

Количество uchar

Поверхность int [2] .vertex_indices[1]

Поверхность int [2] .vertex_indices[2]

Поверхность int [2] .vertex_indices[3]

...

Поверхность int [2] .vertex_indices [количество]

...

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

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

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

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

|