PLY es un formato de archivo informático conocido como formato de archivo de polígonos o formato de triángulo de Stanford . Fue diseñado principalmente para almacenar datos tridimensionales de escáneres 3D. El formato de almacenamiento de datos admite una descripción relativamente simple de un solo objeto como una lista de polígonos nominalmente planos. Se puede almacenar una variedad de propiedades, incluidos el color y la transparencia, las normales de superficie, las coordenadas de textura y los valores de confianza de los datos. El formato permite tener diferentes propiedades para la parte frontal y posterior de un polígono.
Hay dos versiones del formato de archivo , una en ASCII y la otra en binario .
El formato del archivo
Un archivo Ply comienza con el atributo "header", que especifica los elementos de una malla y sus tipos, seguido de la lista de elementos en sí. Los elementos suelen ser vértices y caras, pero pueden incluir otras entidades como bordes, muestras de mapas de rango y tiras de triángulos.
El encabezado de los archivos ASCII y binarios es texto ASCII. Solo los datos numéricos que siguen al encabezado son diferentes entre las dos versiones. El encabezado siempre comienza con un " número mágico ", una línea que contiene:
capa
que identifica el archivo como un archivo PLY. La segunda línea indica de qué variación del formato PLY se trata. Debe ser una de las siguientes:
formato ascii 1.0 formato binary_little_endian 1.0 formato binary_big_endian 1.0
Las futuras versiones del estándar cambiarán el número de revisión al final, pero la 1.0 es la única versión actualmente en uso.
Los comentarios se pueden colocar en el encabezado utilizando la palabra commentque aparece al principio de la línea. Todo lo que se encuentre desde allí hasta el final de la línea se debe ignorar. Por ejemplo:
comentario ¡Esto es un comentario!
La elementpalabra clave introduce una descripción de cómo se almacenan algunos elementos de datos particulares y cuántos hay. Por lo tanto, en un archivo donde hay 12 vértices, cada uno representado como un triple de punto flotante (X, Y, Z), uno esperaría ver:
vértice del elemento 12 propiedad flotante x propiedad flotante y propiedad flotante z
Otras propertylíneas pueden indicar que los colores u otros elementos de datos se almacenan en cada vértice e indicar el tipo de datos de esa información. En cuanto al tipo de datos, existen dos variantes según la fuente del archivo ply. El tipo se puede especificar con uno de char uchar short ushort int uint float double, o uno de int8 uint8 int16 uint16 int32 uint32 float32 float64. Para un objeto con diez caras poligonales, se podría ver:
elemento cara 10 lista de propiedades uchar int vertex_index
Las implementaciones de PLY varían enormemente en los nombres de las propiedades. vertex_indicesse utiliza con más frecuencia que vertex_index, por ejemplo, en Blender y VTK . La especificación extendida enumera una "Lista principal (obligatoria)", una "Segunda lista (usada con frecuencia)" y una "Tercera lista (extensiones sugeridas)" de nombres de propiedades. [2]
La palabra listindica que los datos son una lista de valores, el primero de los cuales es el número de entradas de la lista (representado como 'uchar' en este caso). En este ejemplo, cada entrada de la lista se representa como un 'int'. Al final del encabezado, siempre debe haber la línea:
fin_encabezado
Formato ASCII o binario
En la versión ASCII del formato, los vértices y las caras se describen uno por línea con los números separados por un espacio en blanco. En la versión binaria, los datos simplemente se empaquetan juntos en el orden endiannessespecificado en el encabezado y con los tipos de datos indicados en los propertyregistros. Para la property list...representación común de polígonos, el primer número para ese elemento es el número de vértices que tiene el polígono y los números restantes son los índices de esos vértices en la lista de vértices anterior.
Historia
El formato PLY fue desarrollado a mediados de los años 90 por Greg Turk y otros en el laboratorio de gráficos de Stanford bajo la dirección de Marc Levoy. Su diseño se inspiró en el formato .obj de Wavefront . Sin embargo, el formato Obj carecía de extensibilidad para propiedades y agrupaciones arbitrarias, por lo que se idearon las propertypalabras elementclave y para generalizar las nociones de vértices, caras, datos asociados y otros grupos.
Archivo de ejemplo
El siguiente es un ejemplo completo de un archivo PLY que describe una malla de cubo exportada desde la versión 4.0.2 de Blender :
capa formato ascii 1.0 Comentario Creado en Blender versión 4.0.2 elemento vértice 14 propiedad flotante x propiedad flotante y propiedad flotante z propiedad flotante nx propiedad flotante ny Propiedad flotante en Nueva Zelanda propiedad flotante s propiedad flotante t elemento cara 6 lista de propiedades uchar uint vertex_indices fin_encabezado 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,75 1-1 1 0,5773503 -0,5773503 0,5773503 0,625 0,75 1 -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,5 1 1 -1 0,5773503 0,5773503 -0,5773503 0,375 0,5 -1 -1 -1 -0,5773503 -0,5773503 -0,5773503 0,125 0,75 4 0 1 2 3 4 4 3 5 6 4 7 8 9 10 4 11 12 4 13 4 12 0 3 4 4 10 9 0 12
El archivo comienza con el encabezado que define un archivo en formato ASCII. Hay 14 vértices (6 caras * 4 vértices - 10 vértices guardados debido a la fusión) y 6 caras en total. Después del encabezado, se enumeran los datos de vértices y caras. La lista de vértices contiene la posición (x, y, z), las normales (nx, ny, nz) y las coordenadas de textura (s, t) para cada uno de los 14 vértices. La lista de caras contiene el recuento de vértices (4) y los índices de vértices para cada una de las 6 caras cuadriláteras.
Véase también
- STL (formato de archivo) , otro formato de archivo común para la impresión 3D
- Formato de archivo de fabricación aditiva
- Archivo .obj de frente de onda , un formato de archivo de definición de geometría 3D con extensión de archivo .obj
- glTF : un formato de archivo del grupo Khronos para escenas y modelos 3D.
- Descripción de escena universal (USD).
Software de código abierto
- CloudCompare se centra en las nubes de puntos con algunas funciones adicionales para mallas.
- Marco de software GigaMesh : cálculos numéricos en mallas en PLY (o OBJ).
- MeshLab : aplicación genérica para visualizar, procesar y convertir mallas tridimensionales hacia o desde el formato de archivo PLY.
Referencias
- ^ Greg Turk. "El formato de archivo de polígonos PLY". Archivado desde el original el 4 de diciembre de 2016.
- ^ Greg Turk. "El formato de archivo de polígono PLY (extendido)" (PDF) .
Enlaces externos
- Descripción del formato de la Biblioteca del Congreso
- PLY - Formato de archivo poligonal
- Algunas herramientas para trabajar con archivos PLY (código fuente C)
- rply - Una biblioteca de software Ansi C para leer y escribir archivos PLY (licencia MIT)
- libply - Una biblioteca de software C++ para leer y escribir archivos PLY (licencia GNU)
- Otra biblioteca de software C++ para leer y escribir archivos PLY (licencia GPL 3.0)
- Un repositorio de modelos 3D almacenados en formato PLY