stringtranslate.com

Archivo .obj de frente de onda

OBJ (o .OBJ) es un formato de archivo de definición de geometría desarrollado por primera vez por Wavefront Technologies para su paquete de animación Advanced Visualizer . El formato de archivo es abierto y ha sido adoptado por otros proveedores de aplicaciones de gráficos 3D.

El formato de archivo OBJ es un formato de datos simple que representa únicamente la geometría 3D, es decir, la posición de cada vértice , la posición UV de cada vértice de coordenadas de textura, las normales de los vértices y las caras que forman cada polígono definido como una lista de vértices. y vértices de textura. Los vértices se almacenan en el sentido contrario a las agujas del reloj de forma predeterminada, lo que hace innecesaria la declaración explícita de normales de cara. Las coordenadas OBJ no tienen unidades, pero los archivos OBJ pueden contener información de escala en una línea de comentarios legible por humanos.

Formato de archivo

Todo lo que sigue a un carácter almohadilla (#) es un comentario.

# este es un comentario

Un archivo OBJ puede contener datos de vértices, atributos de superficie/curva de forma libre, elementos, declaraciones de cuerpo de superficie/curva de forma libre, conectividad entre superficies de forma libre, agrupación e información de atributos de visualización/renderización. Los elementos más comunes son los vértices geométricos, las coordenadas de textura, las normales de los vértices y las caras poligonales:

# Lista de vértices geométricos, con coordenadas (x, y, z, [w]), w es opcional y por defecto es 1.0.0,123 0,234 0,345 1,0v......# Lista de coordenadas de textura, en coordenadas (u, [v, w]), estas variarán entre 0 y 1. v, w son opcionales y por defecto son 0.vt 0,500 1 [0]vt......# Lista de normales de vértice en forma (x,y,z); las normales pueden no ser vectores unitarios .vn 0,707 0,000 0,707vn......# Vértices del espacio de parámetros en forma (u, [v, w]); declaración de geometría de forma libre (ver más abajo)vp 0,310000 3,210000 2,100000vicepresidente......# Elemento de cara poligonal (ver más abajo)f 1 2 3f 3/1 4/2 5/3f 6/4/1 3/5/3 7/6/5f 7//1 8//2 9//3f......# Elemento de línea (ver más abajo)5 8 1 2 4 9

Vértice geométrico

Un vértice se especifica mediante una línea que comienza con la letra v. A esto le siguen las coordenadas (x,y,z[,w]). W es opcional y su valor predeterminado es 1.0. Se utiliza un sistema de coordenadas de la derecha para especificar las ubicaciones de las coordenadas. Algunas aplicaciones admiten colores de vértice colocando valores de rojo, verde y azul después de xy y z (esto impide especificar w). Los valores de color varían de 0 a 1. [2]

Vértices del espacio de parámetros

Se puede especificar una declaración de geometría de forma librevp en una línea que comience con la cadena . Defina puntos en el espacio de parámetros de una curva o superficie. usolo se requiere para puntos de curva, uy vpara puntos de superficie y puntos de control de curvas de recorte no racionales, y u, vy w(peso) para puntos de control de curvas de recorte racionales.

Elementos de la cara

Las caras se definen utilizando listas de vértices, texturas e índices normales en el formato vertex_index/texture_index/normal_index para el cual cada índice comienza en 1 y aumenta correspondientemente al orden en que se definió el elemento referenciado. Los polígonos como los cuadriláteros se pueden definir utilizando más de tres índices.

Los archivos OBJ también admiten geometría de forma libre que utiliza curvas y superficies para definir objetos, como las superficies NURBS .

Índices de vértice

Un índice de vértice válido coincide con los elementos de vértice correspondientes de una lista de vértices previamente definida. Si un índice es positivo, entonces se refiere al desplazamiento en esa lista de vértices, comenzando en 1. Si un índice es negativo, entonces se refiere relativamente al final de la lista de vértices, -1 se refiere al último elemento.

Cada cara puede contener tres o más vértices.

f v1 v2 v3 ....

Índices de coordenadas de textura de vértice

Opcionalmente, se pueden utilizar índices de coordenadas de textura para especificar coordenadas de textura al definir una cara. Para agregar un índice de coordenadas de textura a un índice de vértice al definir una cara, se debe colocar una barra inmediatamente después del índice de vértice y luego colocar el índice de coordenadas de textura. No se permiten espacios antes o después de la barra. Un índice de coordenadas de textura válido comienza desde 1 y coincide con el elemento correspondiente en la lista de coordenadas de textura previamente definida. Cada cara puede contener tres o más elementos.

f v1/vt1 v2/vt2 v3/vt3...

Índices normales de vértice

Opcionalmente, se pueden utilizar índices normales para especificar vectores normales para los vértices al definir una cara. Para agregar un índice normal a un índice de vértice al definir una cara, se debe colocar una segunda barra después del índice de coordenadas de textura y luego colocar el índice normal. Un índice normal válido comienza desde 1 y coincide con el elemento correspondiente en la lista de normales previamente definida. Cada cara puede contener tres o más elementos.

v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3...

Índices normales de vértice sin índices de coordenadas de textura

Como las coordenadas de textura son opcionales, se puede definir la geometría sin ellas, pero se deben colocar dos barras después del índice del vértice antes de colocar el índice normal.

f v1//vn1 v2//vn2 v3//vn3 ...

Elementos de línea

Los registros que comienzan con la letra "l" (L minúscula) especifican el orden de los vértices que construyen una polilínea.

v1 v2 v3 v4 v5 v6...

Otros formatos de geometría

Los archivos Obj admiten superficies de orden superior utilizando varios tipos diferentes de interpolación, como Taylor y B-splines, aunque la compatibilidad con esas funciones en lectores de archivos de terceros está lejos de ser universal. Los archivos Obj tampoco admiten jerarquías de malla ni ningún tipo de animación o deformación, como el skinning de vértices o la transformación de malla.

Materiales de referencia

Los materiales que describen los aspectos visuales de los polígonos se almacenan en archivos .mtl externos. Se puede hacer referencia a más de un archivo de material MTL externo desde el archivo OBJ. El archivo .mtl puede contener una o más definiciones de materiales con nombre.

mtllib [nombre de archivo .mtl externo]...

Esta etiqueta especifica el nombre del material para el elemento que le sigue. El nombre del material coincide con una definición de material con nombre en un archivo .mtl externo.

usemtl [nombre del material]...

Los objetos con nombre y los grupos de polígonos se especifican mediante las siguientes etiquetas.

o [nombre del objeto] ... g [nombre del grupo] ...

El sombreado suave entre polígonos se habilita mediante grupos de suavizado.

s 1 ... # El sombreado suave también se puede desactivar. está apagado ...

Índices relativos y absolutos

Los archivos OBJ, debido a su estructura de lista, pueden hacer referencia a vértices, normales, etc. ya sea por su posición absoluta (1 representa el primer vértice definido, N representa el enésimo vértice definido), o por su posición relativa (-1 representa el último vértice definido). Sin embargo, no todo el software admite este último enfoque y, a la inversa, algunos programas escriben inherentemente solo la última forma (debido a la conveniencia de agregar elementos sin necesidad de volver a calcular los desplazamientos de los vértices, etc.), lo que genera incompatibilidades ocasionales.

Biblioteca de plantillas de materiales

El formato de biblioteca de plantillas de materiales (MTL) o formato de archivo .MTL es un formato de archivo complementario de .OBJ, también definido por Wavefront Technologies , que describe las propiedades de sombreado de superficie (material) de los objetos dentro de uno o más archivos .OBJ. Un archivo .OBJ hace referencia a uno o más archivos .MTL (llamados "bibliotecas de materiales") y, a partir de ahí, hace referencia a una o más descripciones de materiales por su nombre. Los archivos .MTL son texto ASCII que definen las propiedades de reflexión de la luz de una superficie para fines de renderizado por computadora y de acuerdo con el modelo de reflexión de Phong . El estándar tiene un amplio apoyo entre diferentes paquetes de software, lo que lo convierte en un formato útil para el intercambio de materiales.

El formato MTL, aunque todavía se utiliza ampliamente, está desactualizado y no es totalmente compatible con tecnologías posteriores, como mapas especulares y mapas de paralaje . Sin embargo, debido a la naturaleza abierta e intuitiva del formato, estos se pueden agregar fácilmente con un generador de archivos MTL personalizado.

El formato MTL define varios formatos. [5] [6]

Materiales basicos

Un solo .mtlarchivo puede definir múltiples materiales. Los materiales se definen uno tras otro en el archivo, cada uno comenzando con el newmtlcomando:

# definir un material llamado 'Coloreado'coloreado

El color ambiental del material se declara mediante Ka. Las definiciones de color están en RGB, donde el valor de cada canal está entre 0 y 1.

# blancoKa 1.000 1.000 1.000

De manera similar, el color difuso se declara usando Kd.

# blancoKd 1.000 1.000 1.000

El color especular se declara usando Ksy se pondera usando el exponente especular Ns .

# fuera negro)Ks 0,000 0,000 0,000# oscila entre 0 y 100010.000 naira

Los materiales pueden ser transparentes . A esto se le llama disolución . A diferencia de la transparencia real, el resultado no depende del grosor del objeto. Un valor de 1,0 para "d" ( disolver ) es el valor predeterminado y significa completamente opaco, al igual que un valor de 0,0 para "Tr". Disolver funciona en todos los modelos de iluminación.

# algunas implementaciones usan 'd'd 0,9# otros usan 'Tr' (invertido: Tr = 1 - d)Tr 0,1

Los materiales transparentes pueden tener adicionalmente un Color de Filtro de Transmisión, especificado con "Tf".

# Color del filtro de transmisión (usando RGB)Tf 1,0 0,5 0,5# Color del filtro de transmisión (usando CIEXYZ): los valores y y z son opcionales y se supone que son iguales a x si se omitenTf xyz 1,0 0,5 0,5# Color del filtro de transmisión del archivo de curva espectral (no se usa comúnmente)Tf espectral <nombre de archivo>.rfl <factor opcional>

Un material también puede tener una densidad óptica para su superficie. Esto también se conoce como índice de refracción .

# densidad ópticaNi 1,45000

Los valores pueden oscilar entre 0,001 y 10. Un valor de 1,0 significa que la luz no se desvía al atravesar un objeto. Al aumentar la densidad óptica, aumenta la cantidad de flexión. El vidrio tiene un índice de refracción de aproximadamente 1,5. Los valores inferiores a 1,0 producen resultados extraños y no se recomiendan. [7]

Hay varios modelos de iluminación disponibles, por material. Tenga en cuenta que no es necesario establecer un modelo de iluminación transparente para lograr transparencia con "d" o "Tr" y, en el uso moderno, los modelos de iluminación a menudo no se especifican, incluso con materiales transparentes. Los modelos illum se enumeran a continuación:

0. Color activado y ambiente desactivado1. Color activado y Ambiente activado2. Resalte en3. Reflexión y trazado de rayos4. Transparencia: Vidrio encendido, Reflexión: Trazo de rayos encendido5. Reflexión: Fresnel encendido y trazado de rayos encendido6. Transparencia: Refracción activada, Reflexión: Fresnel desactivado y Trazo de rayos activado7. Transparencia: Refracción activada, Reflexión: Fresnel activada y Trazo de rayos activado8. Reflexión y rastreo de rayos.9. Transparencia: Vidrio encendido, Reflexión: Trazo de rayos apagado10. Proyecta sombras sobre superficies invisibles.
iluminación 2

Mapas de textura

Los materiales texturizados utilizan las mismas propiedades que antes y, además, definen mapas de textura . A continuación se muestra un ejemplo de un archivo de material común. Consulte la referencia completa del formato de archivo Wavefront para obtener más detalles.

newmtl texturizado Ka 1.000 1.000 1.000 Kd 1.000 1.000 1.000 Ks 0,000 0,000 0,000 d 1.0 iluminación 2 # el mapa de textura ambiental map_Ka lemur.tga  # el mapa de textura difusa (la mayoría de las veces, será el mismo que el # mapa de textura ambiental) map_Kd lemur.tga  # mapa de textura de color especular map_Ks lemur.tga  # componente de resaltado especular map_Ns lemur_spec.tga  # el mapa de textura alfa map_d lemur_alpha.tga  # algunas implementaciones usan 'map_bump' en lugar de 'bump' a continuación map_bump lemur_bump.tga  # mapa de relieve (que por defecto usa el canal de luminancia de la imagen) golpe lemur_bump.tga  # mapa de desplazamiento disp lemur_disp.tga  # textura de la calcomanía de plantilla (el valor predeterminado es el canal "mate" de la imagen) calcomanía lemur_stencil.tga

Las declaraciones del mapa de textura también pueden tener parámetros de opción (consulte las especificaciones completas).

 # origen de textura (1,1,1) map_Ka -o 1 1 1 ambiente.tga  # mapa de reflexión esférica nubes de esfera tipo refl.tga

Opciones de textura

-blendu en | off # establece la combinación de texturas horizontales (activado por defecto)-blendv en | desactivado # establece la combinación de texturas verticales (activado por defecto)-boost float_value # aumenta la nitidez del mapa mip-mm valor_base valor_ganancia # modificar los valores del mapa de textura (predeterminado 0 1) # valor_base = brillo, valor_ganancia = contraste-ou [v [w]] # Desplazamiento de origen (predeterminado 0 0 0)-su [v [w]] # Escala (predeterminado 1 1 1)-tu [v [w]] # Turbulencia (predeterminado 0 0 0)-texres resolución # resolución de textura a crear-abrazadera | off # solo renderiza textos en el rango limitado de 0-1 (desactivado por defecto) # Cuando se suelta, las texturas se repiten en una superficie, # cuando se sujeta, solo los texels que caen dentro del rango 0-1 Se representan # rango.-bm mult_value # multiplicador de relieve (solo para mapas de relieve)-imfchan r | gramo | segundo | metro | l | z # especifica qué canal del archivo se utiliza para # crear una textura escalar o de relieve. r: rojo, g: verde, # b:azul, m:mate, l:luminancia, z:z-profundidad.. # (el valor predeterminado para relieve es 'l' y para calcomanía es 'm')

Por ejemplo,

# dice que se use el canal rojo de knockmap.tga como mapa de relievegolpe -imfchan r golpemap.tga

Para mapas de reflexión ...

-tipo esfera # especifica una esfera para un mapa de reflexión "refl" -tipo cubo_top | fondo_cubo | # cuando se utiliza un mapa de cubos, el archivo de textura para cada uno frente_cubo | cubo_espalda | # lado del cubo se especifica por separado cubo_izquierda | cubo_derecha

Modificaciones específicas del proveedor

Debido a la facilidad para analizar los archivos y a la difusión no oficial del formato de archivo, los archivos pueden contener modificaciones específicas del proveedor.

Según la especificación, se supone que las opciones preceden al nombre del archivo de textura. Sin embargo, al menos un proveedor genera archivos con opciones al final.

# multiplicador de impacto de 0,2golpe texbump.tga -bm 0.2

Representación basada físicamente

Los creadores de la herramienta de modelado y edición 3D en línea, Clara.io , propusieron ampliar el formato MTL para permitir especificar mapas y parámetros de representación física (PBR). Esta extensión fue adoptada posteriormente por Blender y TinyObjLoader. Los mapas y parámetros de extensión PBR son: [8]

Pr/map_Pr # rugosidadPm/map_Pm # metálicoPs/map_Ps # brilloPC # espesor de capa transparentePcr # rugosidad de la capa transparenteKe/map_Ke # emisivoaniso # anisotropíaanisor # rotación de anisotropíanorma # mapa normal (los componentes RGB representan los componentes XYZ de la superficie normal)

Otras extensiones propuestas provienen del kit de herramientas DirectXMesh para el motor DirectX de Microsoft , lo que permite definir el material RMA precompilado de un modelo. [9]

map_RMA # material RMA (rugosidad, metalidad, oclusión ambiental)map_ORM # definición alternativa de map_RMA

Ver también

Referencias

  1. ^ Nombre del subtipo de medio: obj
  2. ^ "¿Cómo puedo incluir información de color de vértice en archivos .OBJ?". Intercambio de pila de desarrollo de juegos . Consultado el 8 de octubre de 2014 .
  3. ^ Nombre del subtipo de medio: mtl
  4. ^ "Formato de archivo de biblioteca de plantillas de materiales (MTL) de frente de onda". Biblioteca del Congreso . 4 de octubre de 2019.
  5. ^ "Archivos MTL: definiciones de materiales para archivos OBJ". People.sc.fsu.edu. 2004-06-14 . Consultado el 26 de noviembre de 2010 .
  6. ^ "Información sobre el formato de archivo Wavefront .mtl - GRIPES and GRUMBLES - Wings - Wings3D - Foro oficial de desarrollo - Tablero de mensajes". Nendowingsmirai.yuku.com. Julio de 2002 . Consultado el 26 de noviembre de 2010 .
  7. ^ Ramey, Diane (1995). "Formato de material MTL (Lightwave, OBJ)". Alias-Wavefront, Inc. Consultado el 17 de mayo de 2020 .
  8. ^ "Ben Houston | Ampliación de Wavefront MTL para renderizado físico". benhouston3d.com .
  9. ^ "Capacidad para definir textura RMA en MTL de OBJ. Por MattFiler · Pull Request #39 · microsoft/DirectXMesh". GitHub .

enlaces externos