miniatura| 1: Modelo 3D sen texturas2: Mesmo modelo con texturas miniatura| Mapeo dunha textura bidimensional nun modelo 3D O mapeo de texturas, asignación de texturas ou texture mapping é un método para mapear unha textura nun gráfico xerado por ordenador. A textura pode ser detalles de alta frecuencia, textura superficial ou cor.

Historia A técnica orixinal foi iniciada por Edwin Catmull en 1974. Texture mapping referíase orixinalmente ao mapeo difuso (diffuse mapping), un método que simplemente mapeaba píxeles dunha textura asignándoos a unha superficie 3D ("envolvendo" a imaxe ao redor do obxecto). Nas últimas décadas, a chegada da representación multipaso, a multitexturización, os mipmaps e mapeos máis complexos, como o mapeo de altura, o mapeo de golpes, o mapeo normal, o mapeo de desprazamento, o mapeo de reflexión, o mapeo especular, o mapeo de oclusión e moitas outras variacións da técnica (controlado por un sistema de materiais) permitiron simular imaxes próximas ao fotorrealismo en tempo real reducindo enormemente o número de polígonos e os cálculos de iluminación necesarios para construír unha escena 3D realista e funcional.

dereita|miniatura|280x280px| Exemplos de mul-titexturización:1: Esfera sen textura, 2: Mapas de texturas e vultos, 3: Só mapa de texturas, 4: Mapas de opacidade e textura

Mapas de texturas Unha texture map é unha imaxe aplicada (mapeada) á superficie dunha forma ou polígono.Jon Radoff, Anatomía de MMORPG, Esta pode ser unha imaxe de mapa de bits ou unha textura de procedemento. Poden almacenarse en formatos de ficheiros de imaxe comúns, referenciados por formatos de modelos 3D ou definicións de materiais, e reunirse en paquetes de recursos.

Poden ter 1-3 dimensións, aínda que 2 dimensións son máis comúns para superficies visibles. Para o seu uso con hardware moderno, os datos do mapa de texturas pódense almacenar en ordes en mosaico ou en mosaico para mellorar a coherencia da caché. As API de renderizado adoitan xestionar os recursos do mapa de texturas (que poden estar situados na memoria do dispositivo) como búfers ou superficies, e poden permitir " renderizar a textura "para efectos adicionais como o procesamento posterior ou o mapeo do contorno.

Normalmente conteñen datos de cor RGB (almacenados como cores directas, formatos comprimidos ou cor indexada) e ás veces unha canle adicional para mesturas alfa (RGBA), especialmente para billboards e texturas de superposición decal. É posible utilizar a canle alfa (que pode ser conveniente almacenar en formatos analizados polo hardware) para outros usos como a especularidade.

Pódense combinar varios mapas de texturas (ou canles) para controlar a especularidade, a normalidade, o desprazamento ou a dispersión subterránea, por exemplo, para renderizar a pel (skin).

Pódense combinar varias imaxes de textura en atlas de texturas ou texturas de matriz para reducir os cambios de estado do hardware moderno. (Poden considerarse unha evolución moderna dos gráficos de mapas de mosaicos). O hardware moderno adoita admitir texturas de mapas de cubos (cube map) con varias caras para mapear o contorno.

Creación Os mapas de textura pódense adquirir mediante dixitalización / fotografía dixital, deseñados en software de manipulación de imaxes ou deseño gráfico como GIMP, Photoshop ou pintados sobre superficies 3D directamente cunha ferramenta de pintura 3D como Mudbox ou ZBrush.

Aplicación de texturas Este proceso é semellante a aplicar papel estampado a unha caixa branca normal. A cada vértice dun polígono asígnaselle unha coordenada de textura (que no caso 2D tamén se coñece como coordenadas UV). Isto pódese facer mediante a asignación explícita de atributos de vértice, editados manualmente nun paquete de modelaxe 3D mediante ferramentas de desenvoltura UV. Tamén é posible asociar co material unha transformación procesual de espazo 3D a espazo de textura. Isto pódese conseguir mediante a proxección plana ou, alternativamente, a cartografía cilíndrica ou esférica . As cartografías máis complexas poden considerar a distancia ao longo dunha superficie para minimizar a distorsión. Estas coordenadas interpolanse entre as caras dos polígonos para mostrar o mapa de texturas durante a representación. As texturas poden ser repetidas ou espelladas para estender un mapa de bits rectangular finito sobre unha área máis grande, ou poden ter un mapeo "inxectivo" único un a un (one-to-one) de cada peza dunha superficie (o que é importante para o mapeo de renderizado e o mapeo de luz, tamén coñecida como cocedura).

Espazo de textura A asignación de texturas mapea a superficie do modelo (ou o espazo da pantalla durante a rasterización) no espazo de textura; neste espazo, o mapa de texturas é visible na súa forma non distorsionada. As ferramentas de desenvoltura UV (UV unwrapping) normalmente ofrecen unha vista no espazo de textura para a edición manual das coordenadas de textura. Algunhas técnicas de renderizado como a dispersión subterránea pódense realizar aproximadamente mediante operacións de textura-espazo.

Multitexturización A multitexturización é o uso de máis dunha textura á vez nun polígono.Blythe, David. Advanced Graphics Programming Techniques Using OpenGL. Siggraph 1999. (PDF) (see: Multitexture) Por exemplo, pódese usar unha textura de mapa de luz para iluminar unha superficie como alternativa a recalcular esa iluminación cada vez que se representa a superficie. As microtexturas ou texturas de detalle úsanse para engadir detalles de maior frecuencia, e os dirt maps poden engadir meteorización e variación; isto pode reducir moito a aparente periodicidade das texturas repetidas. Os gráficos modernos poden usar máis de 10 capas, que se combinan mediante sombreadores, para unha maior fidelidade. Outra técnica de multitextura é o bump mapping, que permite que unha textura controle directamente a dirección de orientación dunha superficie para os efectos dos seus cálculos de iluminación; pode dar un aspecto moi bo a unha superficie complexa (como a casca de árbores ou o formigón rugoso) que adquire detalles de iluminación ademais da cor detallada habitual. O bump mapping fíxose popular nos últimos videoxogos, xa que o hardware gráfico se tornou o suficientemente potente como para acomodarlo en tempo real.Real-Time Bump Map Synthesis, Jan Kautz1, Wolfgang Heidrichy2 and Hans-Peter Seidel1, (1Max-Planck-Institut für Informatik, 2University of British Columbia)

Filtrado de texturas A forma en que as mostras (por exemplo, cando se ven como píxeles na pantalla) se calculan a partir dos texels (píxeles de textura) está rexida polo filtrado de texturas. O método máis barato é utilizar a interpolación do veciño máis próximo, pero a interpolación bilineal ou a interpolación trilineal entre mipmaps son dúas alternativas de uso habitual que reducen o aliasing ou os jaggies. No caso de que unha coordenada de textura estea fóra da textura, está fixada ou envolta. O filtrado anisotrópico elimina mellor os artefactos direccionais ao ver texturas desde ángulos de visión oblicuos.

Transmisión de texturas A transmisión de texturas é un medio de usar fluxos de datos (data streams) para texturas, onde cada textura está dispoñible en dúas ou máis resolucións diferentes, para determinar que textura se debe cargar na memoria e usar en función da distancia do visor e da cantidade de memoria dispoñible para texturas. A transmisión de texturas permite que un motor de renderizado utilice texturas de baixa resolución para obxectos afastados da cámara do espectador e resolvelos en texturas máis detalladas, lidas desde unha fonte de datos, a medida que o punto de vista se achega aos obxectos.

Baking (Cocción ou cocedura) Como optimización, é posible renderizar detalles dun modelo complexo de alta resolución ou dun proceso caro (como a iluminación global) nunha textura de superficie (posibelmente nun modelo de baixa resolución). A cocción tamén se coñece como mapeo de render (render mapping). Esta técnica úsase máis habitualmente para mapas lixeiros, pero tamén se pode usar para xerar mapas normais e mapas de desprazamento. Algúns xogos de ordenador (p. ex. Messiah) utilizaron esta técnica. O motor de software orixinal Quake utilizaba a cocción ao voo para combinar mapas de luz e mapas de cores (caché de superficie, surface caching).

A cocción pode usarse como unha forma de xeración de nivel de detalle, onde unha escena complexa con moitos elementos e materiais diferentes pode ser aproximada por un único elemento cunha única textura (single), que logo se reduce algorítmicamente para un menor custo de renderizado e menos chamadas. Tamén se usa para tomar modelos de gran detalle do software de escultura 3D (3D sculpting software) e da exploración de nubes de puntos e aproximalos con mallas máis adecuadas para a representación en tempo real.

Algoritmos de rasterización Varias técnicas evolucionaron nas implementacións de software e hardware. Cada un ofrece diferentes compensacións en precisión, versatilidade e rendemento.

Mapeo de texturas afines miniatura|400x400px| Debido a que o mapeo de texturas afines non ten en conta a información de profundidade sobre os vértices dun polígono, onde o polígono non é perpendicular ao espectador, produce un defecto notable, especialmente cando se rasteriza como triángulos. A asignación de texturas afines interpola linealmente as coordenadas de textura nunha superficie, e así é a forma máis rápida de mapeo de texturas. Algúns programas e hardware (como a PlayStation orixinal) proxectan vértices no espazo 3D na pantalla durante a representación e interpolan linealmente as coordenadas de textura no espazo da pantalla entre eles. Isto pódese facer incrementando as coordenadas UV do punto fixo ou mediante un algoritmo de erro incremental semellante ao algoritmo de liñas de Bresenham.

En contraste cos polígonos perpendiculares, isto leva a unha distorsión notable con transformacións de perspectiva (ver figura: a textura da caixa de verificación aparece dobrada), especialmente cando as primitivas están preto da cámara. Tal distorsión pódese reducir coa subdivisión do polígono en outros máis pequenos.

No caso de obxectos rectangulares, o uso de primitivas cuádruplos pode parecer menos incorrecto que o mesmo rectángulo dividido en triángulos, pero como a interpolación de 4 puntos engade complexidade á rasterización, a maioría das primeiras implementacións preferiron só triángulos. Algúns hardware, como o mapeo de texturas cara a adiante usado pola Nvidia NV1, foi capaz de ofrecer primitivos quad eficientes. Coa corrección da perspectiva (véxase máis abaixo) os triángulos fanse equivalentes e esta vantaxe desaparece. miniatura|400x400px| Para obxectos rectangulares, especialmente cando son perpendiculares á vista, a interpolación lineal nun cuadrilátero pode dar un resultado afín superior fronte ao mesmo rectángulo dividido en dous triángulos afíns. Para os obxectos rectangulares que están en ángulo recto co espectador, como pisos e paredes, a perspectiva só debe ser corrixida nunha dirección a través da pantalla, en lugar de ambas. O mapa de perspectiva correcta pódese calcular nos bordos esquerdo e dereito do chan, e entón unha interpolación lineal afín a través dese tramo horizontal parecerá correcta, porque cada píxel ao longo desa liña está á mesma distancia do espectador.

Corrección de perspectiva A textura correcta da perspectiva ten en conta as posicións dos vértices no espazo 3D, en lugar de simplemente interpolar as coordenadas no espazo da pantalla 2D. Isto consegue o efecto visual correcto pero é máis caro de calcular.