PLY

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Polygon File Format
Розширення файлу: .ply
MIME-тип: text/plain
Магічне число: PLY
Розробник: Грег Тюрк[en], Стенфордський університет
Рік випуску: 1994[1]
Тип формату: Формат 3D-моделі

PLY — формат комп'ютерних файлів для опису геометрії, відомий також як Polygon File Format і Stanford Triangle Format. Він був розроблений, головним чином, для зберігання тривимірних даних отриманих з 3D-сканерів. Формат підтримує відносно простий опис об'єкта як списку номінально плоских полігонів. PLY може зберігати безліч властивостей об'єкта, а саме: колір і прозорість, нормалі до поверхні, текстурні координати і т. д. Формат дозволяє мати різні властивості передньої і задньої грані полігону. Існує 2 версії формату файлу PLY: ASCII і у вигляді бінарного файлу.

Проект «The Digital Michelangelo Project» у стенфордському університеті використав формат PLY для збереження у надвисокій роздільній здатності скан 3D-моделі скульптури Мікеланджело «Давид».

Опис формату[ред. | ред. код]

Файли складаються з заголовка, в якому визначаються елементи полігональних сіток і їх типи, і наступного за ним списку самих елементів. Елементи — це зазвичай вершини і грані, але в опис можуть додаватись інші сутності, такі як ребра або смуги трикутників (англ. triangle strips). Заголовок і для ASCII, і для бінарного файлу є ASCII текстом. Тільки числові дані, які стоять після заголовка, різняться між версіями. Заголовок завжди починається з «магічного числа[en]», рядка, що містить слово

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!

Ключове слово element вводить опис того, який конкретний елемент даних зберігається у файлі, а також кількість цих елементів. У прикладі нижче описано, що файл містить 12 вершин, кожна з яких представлена у вигляді трьох чисел з рухомою комою:

element vertex 12
property float x
property float y
property float z

Рядки, що починаються зі слова property, вказують тип інформації про вершини. Існує 2 варіанти типів, що залежать від джерела 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_indices

Слово list показує, що дані представлені у вигляді списку значень, перше з яких — це кількість елементів списку (представлене типом uchar в даному випадку), а кожне входження списку має тип int. Для звичайного property list … представлення полігонів перше число для цього елемента — це число вершин полігону, і числа, які залишилися, — це індекси в попередньому списку вершин. В кінці заголовка розташовується рядок, що позначає його кінець:

end_header

ASCII або бінарний формат[ред. | ред. код]

В ASCII версії формату кожна вершина і грань описується одним рядком чисел, розділених пробілами. У бінарної версії формату дані упаковуються один біля одного в порядку байтів, котрий встановлений у заготовці, і типом, зазначеним в property.

Історія[ред. | ред. код]

Формат PLY був розроблений в середині 90-х Грегом Тюрком[en] і іншими співробітниками Stanford graphics lab під керівництвом Марка Левоя (англ. Marc Levoy). Задум формату був натхненний форматом Wavefront .obj, але формат Obj не володіє розширюваністю довільними властивостями і групами даних, для чого були введені ключові слова property і element, узагальнюючі нотацію вершин, граней, асоційованих даних і т. д.

Див. також[ред. | ред. код]

  • obj — формат файлу для опису 3D геометрії з розширенням «.obj»
  • Mathematica — технічна обчислювальна система, яка може працювати з файлами PLY.

Примітки[ред. | ред. код]

Посилання[ред. | ред. код]