Версия 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-битное) беззнаковое целое |
float | (32-битное) плавание с одинарной точностью |
'double' | (64-битное) плавание с двойной точностью |
Для совместимости между системами обратите внимание, что количество битов в каждом типе данных должно быть сопоставимым. Тип списка хранится с количеством, сопровождаемым списком скаляров. Синтаксис определения для свойства списка
список свойств <считает тип данных> <тип данных> <имя свойства> |
Например,
список свойств uchar int vertex_index |
задает vertex_index свойства, хранятся начиная с количества байта, сопровождаемого целочисленными значениями. Это полезно для хранения возможности соединения многоугольника, когда это имеет гибкость, чтобы задать переменное количество индексов вершины в каждой поверхности.
Заголовок может также включать комментарии. Синтаксис для комментария является просто линией, начинающейся с "комментария", сопровождаемого коротким комментарием:
прокомментируйте <текст комментария> |
Комментарии могут предоставить информацию о данных как автор файла, описание данных, источник данных и другие текстовые данные.
После заголовка данные об элементе хранятся или как ASCII или как двоичные данные (как задано строкой форматов в заголовке). После заголовка данные хранятся в порядке, элементы и свойства были заданы. Во-первых, все данные для первого типа элемента хранятся. В заголовке в качестве примера первый тип элемента является "вершиной" с 9 200 вершинами в файле, и со свойствами "x" плавающими, "y" и "z".
|
|
|
|
|
|
... |
|
|
|
В общем случае данные о свойствах для каждого элемента хранятся один элемент за один раз.
<свойство 1> <свойство 2>... <свойство N> элемент [1] |
<свойство 1> <свойство 2>... <свойство N> элемент [2] |
... |
Свойства типа списка хранятся, начинаясь с количества и сопровождаемый списком скаляров. Например, тип элемента "поверхности" имеет свойство списка "vertex_indices" с количеством uchar и международным скалярным типом.
|
|
|
|
... |
|
|
|
|
|
... |
|
... |
В то время как формат PLY имеет гибкость, чтобы задать много типов элементов, и свойства, единый набор элементов, как изучают, между программами передает общие 3-D типы данных. Турок предлагает элементы и имена свойства, что программы должны попытаться сделать стандарт.
Необходимое базовое свойство | Элемент | Свойство | Тип данных | Описание свойства |
---|---|---|---|---|
✓ | вершина | x | float | x, y, координаты z |
✓ | y | float | ||
✓ | z | float | ||
nx | float | x, y, z нормальных | ||
ny | float | |||
nz | float | |||
красный | uchar | цвет вершины | ||
зеленый | uchar | |||
синий | uchar | |||
\alpha | uchar | сумма прозрачности | ||
material_index | int | индексируйте к списку материалов | ||
поверхность | vertex_indices | список int | индексы к вершинам | |
back_red | uchar | цвет задней стороны | ||
back_green | uchar | |||
back_blue | uchar | |||
ребро | vertex1 | int | индексируйте к вершине | |
vertex2 | int | индексируйте к другой вершине | ||
crease_tag | uchar | сомнитесь на поверхности подразделения | ||
материал | красный | uchar | существенный цвет | |
зеленый | uchar | |||
синий | uchar | |||
\alpha | uchar | сумма прозрачности | ||
reflect_coeff | float | количество света отражается | ||
refract_coeff | float | количество света преломлено | ||
refract_index | float | индекс преломления | ||
extinct_coeff | float | исчезновение coefficent |