Generació de textures 2D amb mapes de bits

Amb la generació de textures 2D amb mapes de bits o pintada dels models ens referim a totes aquelles estratègies de creació i aplicació de textures de manera directa o a través de mapes de bits sobre la geometria d’un model 3D. A diferència de la procedència algorítmica de les textures procedimentals, en la pintada de models l’usuari/ària té un paper protagonista i disposa d’una sèrie de tècniques i eines diverses amb el propòsit de crear l’aspecte final del model.

Per dominar la pintada de models cal entendre quatre parts o aspectes ben diferenciats.

  1. Hi ha dues metodologies de pintada de models:
    • Pintada directa sobre el model; la manera més immediata i, potser, la més intuïtiva.
    • Pintada en 2D sobre la referència dels mapes UV; la metodologia de pintada de models més generalitzada en la creació de models per a entorns interactius i videojocs. Pintar models a través dels mapes UV implica un ús explícit de mapes de bits (en 2D).
  2. La generació de mapes 2D a les resolucions necessàries.
  3. La generació de mapes 2D segons els diferents canals. Aquesta qüestió afecta considerablement el nombre de mapes de textures i, òbviament, de mapes de bits que intervindran en la creació final del material del model 3D.
  4. La conversió de les textures procedimentals a mapes de bits i, per tant, el seu ús com a mapes 2D dels diferents canals del material del model.

També és important conèixer les nomenclatures per gestionar i organitzar les textures basades en mapes de bits amb el propòsit d’optimitzar el temps de gestió d’aquestes en el transcurs de desenvolupament i producció d’un projecte professional.

Els mapes de bits ('bitmap')

D’acord amb la definició i traducció que proposa el Termcat, un mapa de bits és “la representació d’una imatge gràfica composta de bits” (goo.gl/98XqiT). Aquesta definició correspondria abans amb la idea d’imatges digitals en blanc i negre, com ho van ser originàriament al principi de la informàtica gràfica (vegeu la figura), que no pas amb els milions de colors que conformen les imatges que es mostren avui dia en les pantalles dels diferents dispositius electrònics.

Bit representa la unitat mínima d’informació en el camp de la computació i només pot representar dos valors (o dos estats): 1 i 0. El terme tècnic és el resultat de la contracció de BI_nary digi_T.

Píxel és un neologisme de l’anglès que resulta de la contracció de Picture Element i representa la unitat mínima de mesura d’una imatge digital en relació amb un determinat dispositiu informàtic. A una major densitat de píxels per centímetre, major serà la definició de la imatge.

Figura Representació esquemàtica del mapa de bits

Per la naturalesa binària del bit, cada píxel de la pantalla només representaria un color de dos possibles (1 si és negre, 0 si és blanc). Aquesta relació entre bit de color i píxel de pantalla ja va ser apreciada per dos autors reconeguts en la història de la computació gràfica, James D. Foley i Andries van Dam:

“En un sentit estricte, l’ús del terme bitmap s’aplicaria en un context de sistemes d’un bit per píxel; per a sistemes de múltiples bits, per a cada píxel utilitzarem el terme genèric pixmap (abreviació de pixel map).”

Foley, J. D. i Van Dam, A. (1995). Computers Graphics: Principles and Practice (pàg. 13).

És a dir, els bits d’una imatge digital estan vinculats als píxels en termes de quantitat. Un bit per píxel correspondria a una imatge monocromàtica (dos colors), com ja heu vist més amunt. Si viatgem al passat de les consoles portables, la pantalla de la Game Boy Classic de Nintendo (1989) només mostrava una paleta cromàtica de quatre tonalitats diferents d’un color similar al verd oliva, és a dir, 2 bits per a cada píxel de la pantalla (vegeu la figura).

Figura Pantalla de la consola portable Game Boy Classic on es poden apreciar els 2 bits de color
figgameboyclassic.jpg
Font: wikimedia.org

En l’actualitat, en les imatges es parla de 24 bits de color per a cada píxel de pantalla, o de 32 bits de color en el moment que s’inclouen 8 bits més per a la gestió de la transparència de la imatge (alpha).

Si bé el terme pixmap és més apropiat perquè defineix aquest mapa de píxels que contenen dos o més colors, la generalització avui dia de bitmap o mapa de bits per referir-se a les imatges digitals és acceptada de facto i, per tant, la que utilitzarem per referir-nos a la manera d’emmagatzemar i organitzar en memòria una imatge digital, és a dir, els formats d’arxius d’imatges que contindran les textures dels models 3D.

Formats d'arxiu d'imatges per a textures

Els formats d’arxius d’imatges més populars (i utilitzats diàriament) corresponen a aquells que s’utilitzen a Internet, com per exemple els formats d’arxiu GIF (acrònim de Graphic Interchange File), JPEG (acrònim de Joint Photographic Experts Group) o PNG (acrònim de Portable Network Graphics), i que són reproduïbles des del navegador o des de la majoria del programari gràfic actual. Altres formats de mapes de bits són específics d’un determinat programari. Per exemple, el format PSD (acrònim de Photoshop Document) correspon al format nadiu del programari Adobe Photoshop. O el format XCF (eXperimental Computing Facility), que correspon al format nadiu del programari GIMP. Aquests dos formats, a banda de la informació de color que correspon a cada píxel de la imatge en pantalla, de la profunditat de color de la imatge i del canal de transparència, també inclouen la informació associada a diferents funcionalitats del programari, com per exemple les capes, històric, metadades…

En el context de les textures de mapes de bits, el format d’arxiu és important: no tots els formats d’imatge suporten l’anomenat color real (24 bits de color), el canal de transparència o, segons sigui el grau de compressió propi del format de la imatge, la definició de la textura es pot veure afectada negativament.

Finalment, un altre factor no menys important és la portabilitat del format gràfic de les imatges a les plataformes de creació de videojocs, especialment pel que fa a aquestes com a textures. Per una qüestió d’optimització, aquests entorns de desenvolupament transformen les imatges digitals a un format propi. Però no tots els formats gràfics estan suportats per aquestes plataformes per a la conversió al seu format intern. Plataformes com Unity3D admeten els formats de mapes de bits més comuns, com PNG, TIF, TGA, JPEG i PSD.

Formats suportats

Autodesk Maya pot importar arxius PSD com a node de textura 2D a l’editor Hypershade. Sobre altres formats, consulteu la taula dels formats suportats com a fitxers d’entrada a la documentació oficial d’Autodesk Maya (goo.gl/8WzjHe).

Pintada en 3D directa sobre la geometria

El text següent és un reclam comercial d’un programari 3D relacionat amb el procés de treball amb l’aplicació de textures sobre els models 3D:

“Els materials procedimentals ofereixen resultats immediats, però la perfecció és al detall, i no hi ha millor manera d’aconseguir textures d’alta definició que pintar-les directament sobre el teu model 3D.”

Presentació de l’eina 3D Painting del programari Cinema 4D (goo.gl/GgX97x).

Aquest missatge és força significatiu per introduir-vos en el tema de la pintada en 3D directa sobre la geometria. Per una banda, ressalta el valor de l’ús de les textures procedimentals (la immediatesa pel que fa a la seva generació), però al mateix temps recorda un dels problemes de les textures procedimentals: la projecció de la textura a través de les coordenades UV del model produeix un resultat de conjunt correcte, però resulta molt difícil controlar o modificar detalls de la projecció de la textura. La pintada en 3D directa sobre la geometria resol aquest inconvenient perquè, en lloc de projectar la textura, pintem directament sobre ella i, per tant, permet controlar tots els detalls de la textura del model.

No és casual que, dins de la varietat de programari comercial de la indústria del 3D, trobeu un sector especialitzat en la tasca de la pintada i texturització en 3D directa sobre la geometria del model.

Exemples comercials de la indústria 3D

El principal objectiu d’aquestes eines és minimitzar al màxim el problema de projectar correctament una textura sobre la superfície del model 3D, particularment si aquesta és irregular o orgànica. En el següent vídeo podeu veure la publicitat del producte Substance Painter:

3D Paint Tool

Autodesk Maya incorpora l’eina 3D Paint Tool, que us permet pintar a sobre de la geometria del model. Canvieu al mode de menú Rendering i, a continuació, cliqueu al menú Texturing i 3D Paint Tool; se us mostrarà en pantalla la finestra dels modificadors i opcions de 3D Paint Tool (vegeu la figura).

  • Menú desplegable d'Autodesk Maya per seleccionar els diferents modes de menú del programari./0
  • Menú desplegable d'Autodesk Maya per seleccionar els diferents modes de menú del programari.

Figura Modificadors i opcions de 3D Paint Tool d’Autodesk Maya
figura1.jpg

L’editor 3D Paint Tool té un funcionament similar a qualsevol eina de pintada de textures: consta d’un conjunt de pinzells (brushes) la mida, el radi, la transparència i la pressió dels quals es pot modificar. Aquests pinzells s’anomenen Artisan i corresponen a 40 tipus de formes predeterminades de pinzells amb el propòsit que, gràcies a aquesta varietat, pugueu atendre la majoria de possibles escenaris (vegeu la figura).

Figura Detall dels pinzells de l’editor 3D Paint Tool d’Autodesk Maya
figura2.jpg

En el moment que seleccioneu un model amb la intenció de pintar directament sobre ell cal que tingueu en compte els aspectes següents:

  • Podeu pintar la superfície dels models basats en geometria poligonal com aquells models basats en superfícies NURBS.
  • No podeu pintar sobre la superfície del model si prèviament aquest no té assignat cap mapa de textura o no té actiu cap mapatge UV de la seva geometria.
  • En canvi, si el model ja té assignat un mapa de textura (o diversos), Maya identifica la nomenclatura de les textures i, si aquestes no coincideixen amb els noms correctes, és a dir, que identifiquin la forma del model, escena i noms dels atributs, procedirà a crear una còpia de les textures amb la nomenclatura correcta i, per tant, preveu que el programari no esborri cap de les textures originals.
  • Modificar o actualitzar el mapa UV en el moment de treballar amb l’editor 3D Paint Tool pot significar problemes de representació. Cal sortir i entrar de nou en l’editor en cas que sigui necessària una actualització del mapa UV de la textura del model.

Finalment, vegeu el vídeo següent, que mostra una senzilla demostració pràctica de pintada 3D directa dels models amb l’editor 3D Paint Tool d’Autodesk Maya:

Podeu veure una animació referent a la pintada sobre un model 3D als annexos de la unitat.

L’eina 3D Paint Tool de Maya només funciona en shaders de Maya (Lambert, Blinn, etc.) no en els d’Arnold. Si voleu fer servir l’eina, heu de fer la pintada sobre un material de Maya i després utilitzar l’arxiu bitmap que hàgiu creat com a mapa de textura en el material d’Arnold.

Pintada en 2D sobre la referència dels mapes UV

Què significa UV?

L’acrònim UV fa referència a un sistema de coordenades de posició associat al mapatge de les textures. Si U i V són dues coordenades de posició, per què no utilitzar les variables X i Y? Les variables X, Y (i Z) designen, com a convenció, una posició en l’espai cartesià (llargada, alçada i profunditat) de l’espai 3D de treball. En canvi, les coordenades U i V designen una posició en l’espai local definit per l’espai bidimensional on es projecta la textura: tots els punts d’aquest espai situats en l’eix horitzontal correspondrien a l’eix de la coordenada U i tots els punts situats en l’eix vertical correspondrien a l’eix de la coordenada V. Els valors d’U i V van del 0 a l’1.

Sens dubte, aquest és un dels mètodes que més utilitzareu i de més importància, sobretot en el camps dels videojocs. Imagineu el següent escenari: heu de modelar un dau i, a continuació, aplicar-li la textura que mostri els sis valors de cadascuna de les seves cares. El modelatge és trivial: l’ús del cub resol la geometria del dau. En canvi, la projecció de la textura del dau implicaria un treball no tan immediat com el modelatge del cub. El principal problema deriva del fet que la textura del dau és plana (per ser una imatge) i el model del cub és tridimensional. La solució passaria per projectar la textura 2D sobre la superfície del model 3D, però perquè aquesta sigui efectiva (i us permeti situar correctament les sis cares de la textura del dau per a cadascuna de les cares del cub) caldrà un manera de relacionar de manera efectiva la geometria tridimensional del model amb el mapa de textura (vegeu la figura). L’operació coneguda com a mapatge UV defineix el procés d’aplicar un mapa de textura mitjançant la projecció d’una imatge 2D sobre la superfície del model.

Figura Representació del mapatge UV del cub
Font: wikipedia.org

La importància d'un bon mapatge UV

El mapatge UV és un procediment similar al d’embolicar un regal. El regal seria el model 3D i el paper de regal representaria la imatge de la textura. La complexitat d’aquest sistema és proporcional a la complexitat geomètrica del model: a major nombre de polígons, major serà la dificultat d’“embolicar el regal”. Un bon mapa UV del model ha de permetre que, en el moment de traslladar la imatge 2D a la superfície 3D, el salt de les textures entre els plecs del mapa UV no signifiqui un impacte visual en l’aparença final del model.

Per minimitzar la dificultat d’elaboració del mapatge UV d’un model d’alta complexitat poligonal, els editors UV proporcionen l’opció d’identificar els talls (seams) de la geometria que facilitaran un desplegament òptim del model perquè el resultat visual del mapatge UV doni resposta a dues qüestions crítiques. En primer lloc, que els salts produïts pels talls no representin un impacte significatiu en el comportament de la textura que limita amb aquests talls i, en segon lloc, que el mapatge UV sigui human-readable, és a dir, que el desplegament sigui al més unificat possible i, per tant, hi hagi el menor nombre d’“illes” del model per als talls.

Vegeu el vídeo següent, on s’expliquen els conceptes bàsics del mapatge UV i el perquè de la seva dificultat i complexitat davant de models poligonals de formes orgàniques (com una simple esfera!):

Tipus bàsics de mapatge UV

Per defecte, la majoria de programaris 3D com Autodesk Maya presenten diferents opcions de mapatge bàsic (automàtic, pla, esfèric, cilíndric…), que faciliten una solució pràctica per projectar la textura sobre el model.

  • Opcions de mapatge UV bàsiques disponibles a Autodesk Maya./10
  • Opcions de mapatge UV bàsiques disponibles a Autodesk Maya.

Si es disposa del mapa UV del model, llavors es pot utilitzar com a base o referència per a la pintada en 2D del model. Recupereu l’exemple del procés de mapatge UV del model del dau (vegeu la figura). Si disposeu a l’editor UV d’Autodesk Maya del mapa UV (vegeu la figura) del dau, llavors la podeu exportar com a mapa de bits si cliqueu a l’opció UV Snapshot del menú Polygons (vegeu la figura). La finestra UV Snapshot us permetrà anomenar el nom, la mida i el color de les arestes del model projectat i, finalment, el format de la imatge.

Figura Mapa UV del cub a l’editor UV d’Autodesk Maya
figura5.jpg
Figura Finestra flotant de l’opció ‘UV Snapshot’ de l’editor UV d’Autodesk Maya
figura6.jpg

En aquest moment podeu obrir la imatge de la referència UV del model des de qualsevol programari gràfic, per exemple l’Adobe Photoshop, fet que us facilitarà el treball de creació del mapa de textura aprofitant els avantatges tècnics del programari en el camp de creació i retoc d’imatges.

En finalitzar la creació del mapa de textura només us caldrà desar els canvis i importar-la a Autodesk Maya des de les propietats de l’arxiu de la textura (vegeu la figura), concretament al camp del nom de la imatge (Image Name).

Figura Atributs de la textura 2D, arxiu (File)
figura8.jpg

En els vídeos següents s’explica el procés de la pintada en 2D sobre la referència dels mapes UV amb Adobe Photoshop i la importació del resultat com a mapa de textura del model a Autodesk Maya.

Generació de mapes 2D a les resolucions necessàries

D’ençà d’un temps que, en un sector de la indústria de consoles de videojocs, hi ha una enorme atenció envers la resolució de pantalles 4K i, de manera paral·lela —i consegüent a aquest interès— a la resolució de textures 4K.

Sovint hi ha una certa confusió en aquest sentit, i la publicitat acostuma a augmentar el desconcert en imposar l’acrònim del 4K com el sant grial de la qualitat i la definició de la imatge. La lectura més simple correspondria al fet que qualsevol pantalla 4K equivaldrà a veure les imatges amb un detall molt superior a les pantalles d’alta definició (High Definition). D’altra banda, per gaudir d’un videojoc amb unes textures de resolució 4K (4096×4096 píxels), la publicitat sembla que ens digui que cal primer ser propietari d’una pantalla de resolució 4K. La realitat és que no totes les imatges mostrades en una pantalla de resolució 4K es veuen en alta definició, i, en segon lloc, no us cal una pantalla 4K per gaudir de videojocs que fan servir mapes de textures 4K.

Les resolucions de pantalla i de textura són qüestions independents. La primera ens diu quants píxels hi ha a la pantalla i la segona, quin és el grau de definició de la textura d’un model 3D. Disposar de textures d’alta resolució ens permet veure més detall si ens apropem al model.

Exemple de textures en 4K

Un exemple molt simple, però efectiu, per comprendre la importància de la resolució dels mapes de textures, és aquest: observeu la imatge dels diferents cubs de Rubik (vegeu la figura). Imagineu que el model estàndard de cub de Rubik té una resolució de textura de 3×3. El cub ubicat en la part superior a la dreta té llavors una resolució de textura de 6×6 (el doble de resolució). En canvi, el més petit de tots els models té una resolució de textura de 2×2. Cap d’aquestes resolucions modifica la resolució de la imatge; encara que aquesta fos una imatge de resolució 4K, els cubs es mantindrien com a tal. Veure textures en pantalles de 4K us permet veure més píxels de la textura si aquesta és d’alta resolució, però els cubs són sempre el mateixos.

Figura Diferents models de cubs de Rubik
figura9.jpg
Font: wikipedia.org

La història sobre l’evolució de les resolucions de pantalla i, especialment, les resolucions de textures en el camp dels videojocs i l’animació 3D és molt àmplia. Cal conèixer-la una mica per comprendre la importància d’escollir una determinada resolució de textura en funció de la resolució de pantalla del dispositiu o dispositius als quals anirà destinada la vostra producció.

Resolució de pantalla

La resolució de pantalla fa referència al nivell de definició de la imatge (vegeu la figura). Si recupereu imatges de fa trenta anys, de la dècada de 1980, per exemple, veureu que les resolucions de pantalla oscil·laven entre 240/360/480 píxels. Aquestes resolucions de pantalla depenien de la tecnologia dels televisors d’aquella època (televisors de tub que ocupaven un espai important al menjador de casa en comparació de les pantalles planes actuals); les imatges no eren gaire definides, no hi havia detall i la visió de conjunt era borrosa.

El salt de 480p a 720p va representar un avanç en la definició de la imatge, però el punt d’inflexió va ser 1080p, també conegut com a alta definició (High Definition). Sota el paràmetre d’aquesta resolució de pantalla les imatges es mostren nítides i, per tant, no tenim cap percepció del difuminat de les resolucions anteriors, especialment aquelles que són inferiors o iguals a 480p.

En el moment de fer el salt de 1080p a 4K, la diferència més significativa és la definició del detall: podeu identificar la qualitat dels materials de tot el que es mostra en pantalla. Sembla forçar la mirada a prendre consciència de l’aspecte de les coses. D’altra banda, aquell romanent petit de difuminació general de la imatge de 1080p desapareix definitivament en la resolució de pantalla 4K.

Figura Diferents tipus de resolució de pantalla
Font: wikipedia.org

Resolució de textura

Escalatge i resolució de textura

Si jugueu a Minecraft detectareu que, si us apropeu als cubs que formen part tots els models (objectes i terreny) del joc, les textures no es veuen difuminades o borroses, encara que aquestes siguin de baixa resolució (32 x 32 píxels). Això és possible gràcies a l’ús d’un determinat algoritme d’escalatge que, en el cas de Minecraft, correspon al sistema del veí més pròxim (Nearest-neighbor interpolation). Vegeu la següent galeria de captures del joc Minecraft, que utilitzen un escalatge de les textures basat en l’algoritme d’interpolació lineal (linear interpolation) en lloc de l’algoritme del sistema del veí més pròxim: imgur.com/a/5Wt6D.

  • Escalatge d'una imatge amb el sistema del veí més pròxim (esquerra) i aplicant 'anti-aliasing' (dreta). Font: wikipedia.org.
  • Escalatge d'una imatge amb el sistema del veí més pròxim (esquerra) i aplicant 'anti-aliasing' (dreta). Font: wikipedia.org.

Coneixeu el videojoc Minecraft? Si no hi heu jugat mai és possible que hagueu vist vídeos o captures de pantalles del joc cercant a Internet (si, per exemple, feu una cerca de la paraula clau “Minecraft” a YouTube, el resultat a dia d’avui és aproximadament de 173.000.000 vídeos publicats). Si veieu una captura del joc comprovareu que la resolució de les textures és molt baixa (és fàcilment observable el píxel). D’acord amb la documentació del videojocs, el mapa de textures 2D era de 32×32 píxels per a cada cara del cub. Parlem, per tant, de textures de molt baixa resolució. El següent vídeo ens parla de l’evolució del videojoc més popular de la història:

Aquesta baixa resolució de textures del videojoc Minecraft contrasta amb la majoria de videojocs de triple A, especialment en el camp de les consoles comercials. En un tràiler de promoció d’un videojoc de triple A, el primer que us cridarà l’atenció és la qualitat visual de caire fotorealista: models d’alta poligonització en combinació amb l’aplicació de diferents mapes 2D de textures d’alta resolució, que proporcionen aquest detall i definició similar al model de referència real. El següent vídeo en mostra un exemple:

Què significa triple A?

Triple A (o AAA) designa de manera informal aquells videojocs que, similars a les gran superproduccions de cinema, compten amb grans pressupostos per al seu desenvolupament, producció i promoció internacional.

Aspectes sobre resolució de textures

Què determina la qualitat del mapa de textura? A banda de la producció i l’acabat visual, un dels factors cabdals és la mida de la textura. Si recupereu breument les mides de les textures en la història dels videojocs, una textura de baixa resolució es considera per sota dels 1024×1024 píxels (correspon a la mida de les textures dels videojocs de consoles de sèptima generació, és a dir, la Sony PS3 i Microsoft Xbox 360). Aquestes textures de baixa resolució eren fàcilment identificables si el jugador s’apropava als models: la definició del detall de la textura era pràcticament inexistent i, en el seu lloc, només es mostrava una imatge borrosa o perfectament pixelada.

Per què les resolucions de textures sempre són potències de 2? És una simple qüestió de hardware: la CPU i la GPU estimen les potències de 2, ja que, en treballar amb la numeració binària, les multiplicacions i les divisions per 2 són immediates. Penseu que el hardware gràfic (GPU) està optimitzat per fer operacions de matrius i operacions amb vectors, en particular les matrius quadrades, particularment pel que fa al processament de les textures mipmaps.

Les textures d’alta resolució van començar en la frontera dels 1024×1024 píxels (1K). A continuació trobareu les referències de textures d’alta resolució en els valors de 2048x2048p (2K), 4096×4096 (4K) i 8192×8192 (8K). A major resolució de la textura, major serà la definició del detall de la superfície que representa aquella.

Una matriu quadrada d’ordre és un tipus de matriu que té el mateix nombre de files que de columnes.

Percepció de brusquedat

Un rendiment per sota de 30 FPS provoca la percepció de brusquedat i retard en l’entrada d’un senyal (teclat, ratolí, lectura/escriptura de la memòria) i la seva representació/acció en pantalla.

L’inconvenient de fer el salt a les resolucions de textures 4K o 8K és el rendiment: el percentatge de màquines d’usuaris finals que podrien gaudir de textures 4K o 8K és encara molt baix. L’exigència d’un maquinari molt potent, especialment el que afecta el maquinari gràfic (GPU), no és avui dia una solució per a moltes butxaques. És possible amb un maquinari gràfic inferior veure i gaudir de la qualitat gràfica de les resolucions de textures 4K o 8K, però el rendiment caurà en picat fins a un nombre d’imatges per segon (FPS, o Frames Per Second) per sota del límit del valor de 30 FPS, la qual cosa farà impracticable la percepció i interacció amb el videojoc (vegeu la figura).

Generar resolució de mapes de textures iguals o superiors als 4K és avui dia una realitat lligada al camp de la innovació tecnològica d’última generació en el camp del mercat audiovisual, animació i videojocs. La unió dels dos és la combinació perfecta per gaudir de la visualització dels detalls i d’una definició de la imatge mai vista abans. Des de la perspectiva de creadors, la generació de resolucions d’alta definició dependrà llavors de si el destinatari final suportarà la combinació ideal d’alta resolució de pantalla i de textures.

Figura Ràtio de la visualització de fotogrames per segon (FPS)
figura10.jpg
Font: pcgamingwiki.com, http://bit.ly/2wX4rF9

'Mipmaps' i atles de textures

Des de la perspectiva de producció d’aplicacions interactives i videojocs, hi ha dues metodologies que permeten una millora important en la tasca de representar els mapes de textures: els mipmaps i els atles de textures. En ambdues opcions, la resolució del mapa de textura tindrà un paper significatiu.

'Mipmaps'

També coneguts com a mapes MIP, els mipmaps són seqüències d’imatges generades i optimitzades prèviament, cadascuna de les quals és una representació en baixa resolució de la imatge original o font. La regla dels mipmaps és que l’amplada i alçada de cada imatge o nivell del mipmap és la potència de dos inferior que la imatge prèvia o anterior (vegeu la figura).

Figura Múltiple nivells del detall d’un mapa de textura

Aquesta definició tècnica no us ha de fer perdre el focus d’atenció dels mipmaps. La tècnica de generació de mipmaps (mipmapping) és important, ja que permet optimitzar el procés sempre costós de suavitzar els mapes de textures a temps real i la reducció de presència d’artefactes visuals o aliàsing.

Aliàsing

L’aliàsing és un artefacte gràfic característic que fa que en una pantalla certes corbes i línies inclinades presentin un efecte visual tipus “serra” o “graó”. Font: Wikipedia.

Dit d’una altra manera, imagineu que disposeu d’un processador gràfic (GPU) optimitzat per processar els mapes de textures sense recórrer als mipmaps; per pintar en pantalla un mapa de textura de resolució 1024×1024 píxels, el processador gràfic hauria de llegir els 1.048.576 píxels del mapa de textura per pintar un píxel en pantalla! Amb l’ajuda del mipmap, al processador gràfic només li caldria llegir 1 píxel d’un determinat nivell del mipmap per aconseguir el mateix resultat.

Les imatges mipmap d’alta resolució s’utilitzen quan la càmera s’aproxima a la superfície del model 3D i, per tant, es requereix la màxima definició del mapa de textura. En canvi, si el model 3D es presenta lluny de la càmera, s’utilitzen, depenent de la distància entre la càmera i el model, els nivells de resolucions inferiors del mipmap. Com que els mapes de textures del mipmap ja estan disponibles, el processador gràfic no ha de fer el càlcul a temps real per fer el procés de suavitzar la textura quan aquesta es maximitza o minimitza en pantalla i, per tant, el cost del temps de render a temps real baixa i, al mateix temps, millora la velocitat dels fotogrames per segon.

  • Diagrama de Voronoi com a organitzador de les relacions espacials entre tèxels. Font: Wikipedia.org.
  • Diagrama de Voronoi com a organitzador de les relacions espacials entre tèxels. Font: Wikipedia.org.

Tèxel

Un tèxel, o Texture Element (també Texture Pixel), és la unitat bàsica d’un mapa de textura. Si les imatges o els mapes de bits es representen com una quadrícula bidimensional de píxels de color, els mapes de textures es representen com a una tessel·lació bidimensional de tèxels. La tessel·lació està definida per un tipus especial de partició de l’espai coneguda com diagrama de Voronoi.

Suavitzat de textures

En el camp de la producció de mapes de textures, el suavitzat dels mapes de textures (texture filtering) és una tècnica que determina el color dels píxels del mapa de textura tenint en compte els colors dels tèxels adjacents. Podeu distingir dos tipus de suavitzat dels mapes de textures: el de magnificació i el de minimització.

El suavitzat de mapes textures basat en la magnificació tracta d’omplir l’espai buit entre tèxels del mapa de textura quan aquesta pateix una ampliació de la seva escala i, en el cas del suavitzat de mapes de textures basat en la minimització, el procés resulta de l’alta densitat de tèxels concentrats en l’espai del mapa de textura quan aquesta pateix una reducció de la seva escala.

L’ús de tècniques de suavitzat de mapes de textures és, avui dia, un dels temes que afecten especialment el desenvolupament dels videojocs. Vegeu la següent explicació relacionada amb el suavitzat de mapes de textures: What is Anisotropic Filtering (AF) as Fast as Possible:

Per l’eficiència, els mipmaps són útils en el camp del 3D, específicament en els àmbits següents (avantatges):

  • Correspondència del nivell de detall (LOD o Level Of Detail) del model 3D amb el corresponent mipmap depenent de la distància entre la càmera i el model.
  • Millorar el temps de render.
  • Reduir la intensitat o l’estrès del processador de càlcul o del processador gràfic.

Atles de textures

Els atles de textures són imatges que actuen com a contenidors d’imatges de mida inferior o, dit d’una altra manera, és un mapa 2D que conté diferents textures o sprites.

L’ús dels mipmaps no aporta cap benefici o rendiment a l’àmbit del 2D: la modificació de l’escala dels sprites a temps real no és significativa perquè justifiqui la creació de mipmaps.

Els atles de textures són d’ús imprescindible en el desenvolupament de produccions interactives 2D, ja que permeten estalviar crides del processador gràfic en el moment de dibuixar en pantalla les diferents textures com una única unitat (el mapa que les conté) que no separadament (vegeu la figura i la figura).

Els atles de textures per a produccions 2D també són coneguts com a sprite sheet.

Figura Exemple d’atles de textures
stage01-tiles.jpg
Font: forums.tigsource.com
Figura Aplicació de l’atles de textura anterior
stage01-test.jpg
Font: forums.tigsource.com

En l’àmbit del 3D, els atles de textures donen resposta a una situació que no es dóna en l’àmbit del 2D, ja que generalment els models 3D estan formats per un conjunt d’objectes poligonals, no únicament per un polígon.

Aplicació en videojocs de triple A

Si teniu una estona, us recomanem la lectura d’aquesta entrada a Reddit (goo.gl/qrQ2qc) sobre la creació i l’ús d’atles de textures en el procés de creació d’un videojoc de triple A, Star Citizen.

Penseu en el model 3D d’un cotxe: les diferents parts que el componen (portes, rodes, seients, volant…) són entitats autònomes que, unides, representen un objecte complex. En el procés de texturitzar el model podríem pensar, en primer lloc, que cadascuna de les parts té la seva pròpia textura. Aquest escenari funcionaria en el cas d’una representació (render) estàtica del model 3D o en la producció d’una animació: cada part del model 3D tindria assignat el seu material i, per tant, els seus respectius mapes de textures.

Però què passaria en el cas d’un model 3D que formés part d’una aplicació interactiva o videojoc? Òbviament, la metodologia anterior resultaria ineficient (el processador gràfic hauria de fer nombroses crides per al dibuix dels mapes de textures de cadascuna de les parts que formen el model 3D). És aquest el moment que entra en escena l’ús d’atles de textures. Per exemple, en el cas del model 3D del cotxe, un atles de textures correspondria a un mapa de textura d’una resolució de 2048 x 2048 píxels on, en aquesta, conté tots els mapes de textures (vegeu la figura) que, a continuació, s’aplicarà a les parts del model 3D (vegeu la figura).

Figura Atles de textures d’un model 3D
template.jpg
Font: Amistech Games; "My Summer Car"
Figura Aplicació de l’atles de textures en el model 3D
satsuma.jpg
Font: Amistech Games; "My Summer Car"

Generació de mapes 2D segons els diferents canals

En el procés de realització del material del model 3D cal tenir en compte aquells canals (o atributs) que, a banda del valor numèric, es poden importar un mapa 2D com a modificador d’aquell canal.

Obriu l’editor Hypershade d’Autodesk Maya i cliqueu a la icona del material lambert1 que trobareu al panell de navegació. Al panell de l’editor de propietats del material (vegeu la figura) podreu identificar, de tots els disponibles, els canals següents; cadascun determina o modifica l’aparença final del material:

  • Tipus de materials disponibles al panell 'Create' dins de l'editor Hypershade d'Autodesk Maya
  • Tipus de materials disponibles al panell 'Create' dins de l'editor Hypershade d'Autodesk Maya

Figura Panell de l’editor de propietats del material Lambert
fig12.jpg
  • Color
  • Difús (Diffuse)
  • Mapa de baix relleu (Bump Map o Normal Map)
  • Mapa de relleu (Mapa de desplaçament)

Sense sortir de l’editor Hypershade, si creeu un nou material basat en les característiques de la superfície Blinn (Blinn Surface) o Phong (Phong Surface), afegirem un canal més a la llista: el mapa especular (Specular Color) (vegeu la figura).

Figura Secció dedicada als atributs de l’ombrejat especular (‘Specular Shading’) dins del panell de l’editor de propietats del material Blinn o Phong
fig13.jpg

Lambert, Blinn, Phong...

Són els models que defineixen la interacció de la superfície amb la llum. Els materials que presenten una superfície mat (absorbeixen la llum) corresponen a models com Lambert o Oren-Nayar. Si, al contrari, la llum té un grau (menor o major) de reflectància de la llum, identificarem els models com Phong, Blinn o Anisotropic. Aquests últims models són especialment utilitzats per a models 3D basats en superfícies metàl·liques.

Color

Amb l’atribut o canal de color del material podeu definir el color de la superfície de diferents maneres.

Per exemple, podeu clicar sobre el rectangle situat a la dreta de l’etiqueta color (vegeu la figura). Així us apareixerà la finestra flotant Color History, on podreu seleccionar el valor de color (podeu introduir en aquesta finestra els valors del model color HSV (Hue, Saturation, Value). Un cop seleccionat el valor de color podeu determinar la saturació del color a través del lliscant.

Figura Opció per seleccionar un determinat color a través de la finestra flotant ‘Color History’
fig15.jpg

També podeu clicar sobre la icona d’escacat situada a l’extrem dret del lliscant de color (vegeu la figura). Així podeu connectar un mapa de textura com a modificador de color del material i, per tant, la possibilitat de connectar un mapa de bits a través del node Arxiu (File).

Mapes de textura Creative Commons

Necesiteu mapes de textures amb llicència Creative Commons? Pixar va alliberar 128 textures sense talls (seamless) per a un ús personal o comercial sempre que feu atribució de l’autoria. Visiteu l’enllaç següent per a la descàrrega de les textures i informació de la llicència: goo.gl/1Qn1JZ.

Si connecteu un mapa de textura al valor de color del material, el lliscant de color quedarà automàticament inactiu.

Figura Opció per seleccionar un mapa 2D per definir el valor de color del material
fig16.jpg

Quan connecteu el node Arxiu (File) al color del material, l’àrea de treball de l’editor Hypershade mostrarà la connexió de sortida de color del node del mapa 2D, basada en un mapa de bits amb l’atribut de color del node del material (vegeu la figura).

Figura Connexió del color de sortida del node mapa 2D, ‘Arxiu’ (File), amb l’atribut de color del material
fig17.jpg

Si, per exemple, apliqueu un mapa de textura 2D de 512×512 píxels com a entrada de color (vegeu la figura), veuríeu aplicat aquest al panell de visualització de l’editor Hypershade (vegeu la figura).

Figura Mapa de textura 2D basada en mapa de bits
red_dutch_pxr128.jpg
Font: Pixar sota llicència Creative Commons 4.0
Figura Representació de l’aplicació del mapa de textura 2D basada en un mapa de bits al panell de visualització de l’editor Hypershade
fig18.jpg

Difús ('Diffuse')

El canal difús actua com a factor d’escala del valor de color del material en relació amb el color de la llum d’entorn:

  • Com més alt sigui el seu valor, el color original del material estarà per sobre del color de la llum d’entorn.
  • Com més baix sigui el seu valor, el color de la llum d’entorn estarà per sobre del color original del material.

El canal difús també permet l’entrada d’un mapa 2D mitjançant la connexió del valor de transparència del mapa 2D a l’atribut difús del material. Si, per exemple, utilitzeu un mapa 2D basat en la textura 2D procedimental soroll (Noise) com a modificador de l’atribut del canal difús (vegeu la figura), obtindríeu un acabat desgastat, brut, del color del material (vegeu la figura).

Podeu veure als annexos de la unitat un exemple on es mostra l’aplicació del canal difús a l’editor Hypershade i com aquest modifica l’atribut de color del material, basat en un mapa de textura 2D, basat alhora en un mapa de bits.

Figura Representació del material en la forma de nodes a l’editor Hypershade
fig20.jpg
Figura Aplicació del mapa de textura soroll al canal Diffuse del material
fig21.jpg

Mapes de baix relleu

Els mapes de baix relleu són els responsables de crear la il·lusió visual del detall del model o, dit d’una altra manera, afegeixen la il·lusió òptica de “rugositat” en la superfície del model sense que afecti o modifiqui l’estructura poligonal del model 3D.

Quan utilitzar un mapa de baix relleu?

En el moment de crear una superfície rugosa artificial (metall oxidat) o inorgànica (roques, pedres o qualsevol model orgànic que presenti rugositat).

Mapes Bump

És aquest el valor dels mapes bump: gràcies a una imatge d’escala de grisos (limitada a una informació de 8 bits de color, és a dir, 256 colors de grisos que van des del negre fins a arribar al blanc), el mapa bump informa el programari 3D del grau de profunditat/elevació en aquell punt concret del mapa. Si el programari troba un blanc, aquest punt representarà la màxima elevació i, en canvi, si troba una tonalitat més fosca, aquell punt representarà el valor contrari i, per tant, un grau de profunditat.

El principal repte de l’ús i l’aplicació dels mapes de baix relleu és aconseguir un resultat visual convincent. Si la mida del relleu és equilibrada en relació amb les dimensions del volum del model 3D, l’efecte visual serà consistent. En canvi, si la mida del relleu és petita, el resultat serà insignificant quant a visibilitat de la rugositat o, altrament, una mida excessiva de relleu resultarà un aspecte final artificial i poc creïble.

Ús en els videojocs

Els mapes de baix relleu són particularment importants en el camp de desenvolupament gràfic dels videojocs: atorgen un acabat més detallat als models de baixa poligonització, fent que semblin models de major resolució poligonal, és a dir, més orgànics i definits, més rics visualment.

La figura compara el model Shader Ball sense mapa bump (esquerra) i amb aquest (dreta).

Figura Comparació d’un model 3D sense i amb mapa bump
fig22.jpg

Generar mapes bump és relativament fàcil. Per una banda, podeu emprar programari gràfic de retoc d’imatge, com Adobe Photoshop, però també us podeu ajudar d’eines específiques com CrazyBump (www.crazybump.com o Awesome Bump (awesomebump.besaba.com), que automatitzen i agilitzen el procés de generació dels mapes bump amb gairebé només un clic.

Llavors, posem que disposeu del mapa bump; com l’aplicareu al material del model 3D? Per aplicar un mapa bump sobre un model 3D, els materials basats en els models de superfície (Surface) Lambert, Phong o Blinn contenen l’atribut Bump/Normal Mapping (vegeu la figura). El podeu connectar amb un mapa de textura (vegeu la figura) basat en el node Arxiu (File), dels mapes de textures 2D (2D Textures), clicant sobre la icona d’escacat.

Figura Atribut ‘Bump/Normal Mapping’ disponible als models de superfícies (‘Surface’) Lambert, Phong i Blinn
fig23.jpg
Figura Mapa de color basat en un mapa de bits de 512×512 píxels
pink_marble_pxr128.jpg
Font: Pixar sota llicència Creative Commons 4.0
Figura Mapa bump basat en el mapa de color de la figura anterior
pink_marble_pxr128_bmp.jpg
Font: Pixar sota llicència Creative Commons 4.0

Si obriu a continuació l’àrea de treball de l’editor Hypershade veureu la connexió dels diferents nodes que intervenen en la definició del material (vegeu la figura); serien els següents:

  • El node corresponent al mapa 2D de textura basada en una imatge (Red-orange_glazes_pxr128.tif) que modifica l’atribut de color del material (lambert1).
  • El node corresponent al mapa de soroll (noise1) que modifica l’atribut del valor difús del material (lambert1).
  • El node corresponent al mapa 2D de textura basada en una imatge (Red_dutch_pxr128_bmp.tif) que modifica l’atribut de les normals del material (Normal Camera) del material (lambert1).
Figura Representació de la connexió dels diferents mapes 2D amb el material a l’àrea de treball de l’editor Hypershade
fig24.jpg

Com podeu observar, el node del mapa 2D de textura que modifica els vectors normals de la geometria del model 3D no es connecta directament al node del material. Necessita d’un node intermediari anomenat bump2D, que forma part del conjunt de nodes agrupats sota la categoria Utilities (vegeu la figura).

Figura Llista de nodes de la categoria ‘Utilities’ al panell de creació de l’editor Hypershade

Si cliqueu sobre el node bump2D, veureu al panell de l’editor de propietats d’Hypershade els diferents atributs que podeu modificar. És important que, al desplegable Use as, seleccioneu el valor de Bump (vegeu la figura).

Figura Atributs del node ‘Relleu 2D’ (‘Bump 2D’)
fig25.jpg

Finalment, si cliqueu sobre el node de material (lambert1), podreu apreciar el resultat al panell de visualització del material (vegeu la figura).

Figura Aplicació del mapa de baix relleu en el model 3D
fig26.jpg

Recordeu que en un material aiStandardSurface d’Arnold, els mapes bump els assignarem al paràmetre Bump Mapping del submenú Geometry en les propietats del material, però el node que els lliga al shader el canviarem per un aiBump2d, el qual per defecte és un bump2D.

Mapa de normals

El mapa de normals representa una versió millorada del mapa bump. De la mateixa manera, la rugositat que proporciona en el render el mapa de normals no modifica el nombre de polígons del model 3D.

  • Exemple de vector normal al punt P de la superfície corba. Un vector normal (també anomenat 'normal') és aquell vector que, donat un punt P de la superfície d'un model 3D, és perpendicular al pla tangent que passa per aquest punt P. Imatge: Wikipedia.
  • Exemple de vector normal al punt P de la superfície corba. Un vector normal (també anomenat 'normal') és aquell vector que, donat un punt P de la superfície d'un model 3D, és perpendicular al pla tangent que passa per aquest punt P. Imatge: Wikipedia.

Aquesta semblança de finalitats entre el mapa de normals i el mapa bump és motiu de certa confusió. Aquestes són les diferències principals entre els dos tipus de mapes:

  • El mapa bump es fonamenta en una imatge d’escala de grisos. En canvi, el mapa de normals utilitza el model RGB (Red, Green and Blue).
  • El mapa bump conté la informació de rugositat associada amb el valor de gris de cada píxel de color. Així, aquells valors que tendeixen al negre provocaran l’efecte de profunditat sobre la superfície del model. I amb els valors que tendeixen al blanc passarà tot el contrari: provocaran la sensació d’elevació de la superfície del model. En canvi, el mapa de normals conté una informació diferent: cada píxel del mapa de normals informa de l’orientació del vector normal.

D’altra banda, hi ha dues tipologies de mapes de normals:

  • L’espai de tangència (Tangent Space)
  • L’espai de l’objecte (Object Space)

Espai de tangència i espai de l'objecte

L’espai de l’objecte fa referència al sistema de coordenades local de l’objecte. Una escena amb 999 instàncies d’un model i, per tant, cadascuna d’elles té el seu propi espai d’objecte, és a dir, el seu sistema de coordenades local. Aquest sistema de coordenades local de l’objecte informa que, per exemple, el vèrtex superior del model 3D es troba en la mateixa posició per a tots els 999 models. Aquesta posició idèntica per a totes les 999 instàncies és independent del sistema de coordenades del món 3D i, per tant, encara que els 999 models estiguin separats en la distància, els valors de les posicions X, Y, Z del vèrtex superior del model no es modificaran en cap de les instàncies. S’ignora, llavors, l’espai del món 3D.

Una altra manera de comprendre aquesta diferència entre l’espai de l’objecte i l’espai del món és enfocar-lo des de la terminologia de la posició relativa i la posició absoluta. L’espai de l’objecte equivaldria a la posició relativa dels punts de l’objecte en relació amb el seu propi sistema local de coordenades.

Per exemple, si l’origen d’aquest sistema local de coordenades del model 3D d’una ampolla es trobés localitzat en el centre de la seva base, la posició d’un vèrtex superior del model de l’ampolla tindria una posició relativa al sistema local de coordenades de l’objecte. És a dir, si aquest vèrtex tingués un valor de X:5, Y:5, Z:10, pel fet de ser relatiu al sistema de coordenades local de l’objecte, per molt que desplaceu el model per l’espai 3D els valors del vèrtex sempre serien els mateixos. En canvi, si tinguéssiu en compte l’espai del món 3D, els valors de posició d’aquest vèrtex serien absoluts en relació amb el sistema de coordenades de l’espai 3D. Desplaçar el model per l’espai del món 3D significaria un canvi de valors de posició del vèrtex.

Si l’espai de l’objecte segueix les regles de la intuïció humana (amunt és sempre amunt, esquerra és sempre esquerra), a l’espai de tangència, l’“amunt”, “esquerra”, “dreta” o “baix” no existeix d’acord amb la intuïció; els valors dependran dels vectors normals de la superfície del model: sempre cap a fora, perpendicular a la recta tangent que passa pel punt on neix el vector normal.

En relació amb el mapa de normals, l’espai de tangència és el model d’espai de referència més utilitzat i aplicat en el cas de models deformables (animació de caràcters). Per què? Perquè el mapa de normals basat en el model d’espai de tangència mantindrà la coherència del detall del model independentment de la deformació d’aquest. No és possible aconseguir aquest resultat amb un mapa de normals basat en l’espai de l’objecte. Visualment, aquest mapa és fàcilment identificable per la seva paleta cromàtica, que va del color blau al violeta (vegeu la figura).

Figura Exemple de mapa de normals (centre) a partir del càlcul de l’escena original (esquerra) i el resultat de la seva aplicació sobre una superfície plana (dreta)
Font: Wikipedia

El principal avantatge dels mapes de normals basat en l’espai de tangència és la “reusabilitat”. Podeu reutilitzar un mateix mapa de normal de l’espai de tangent per a diferents models 3D, independentment de la seva geometria.

En canvi, per a aquells models 3D no deformables (com portes, cotxes, estàtues…) s’utilitza el mapa de normal espai de l’objecte. Si bé aquest mapa presenta un lleuger avantatge de rendiment de càlcul del render de l’escena respecte al de l’espai de tangents, l’inconvenient dels mapes de normals basats en l’espai de l’objecte és que no son reusables. Els mapes de normals de l’espai de l’objecte estan lligats a la geometria de l’objecte i, per tant, és impossible traslladar el mapa a un altre model de l’escena.

Generació de mapes de normal

La creació de mapes de normal, independentment de la seva tipologia, no és possible directament a través d’un programari gràfic 2D extern (Adobe Photoshop), com sí que ho era en el cas del mapa bump, si bé hi ha disponible programari específic per a la generació de mapes de normal, com CrazyBump o Awesome Bump, o serveis web força pràctics, com és el cas del NormalMap-Online (goo.gl/y8esCn (vegeu la figura).

Figura Web del servei NormalMap-Online per a la generació de mapes de normal
fig28.jpg

Per obtenir un mapa de normals vàlid a través de l’ús dels programaris citats heu de saber que tots necessiten un mapa de relleu o desplaçament com a punt de partida per calcular els valors de les normals del mapa. Si disposeu del mapa de desplaçament, aquesta opció ràpida de generació del mapa de normals resultarà efectiva i pràctica, sobretot si aquests mapes de relleu corresponen a patrons repetitius (vegeu la figura) que cobreixen de manera regular la superfície del model 3D.

Figura Mapa de normal del patró de textura diamant d’acer
fig29.jpg
Font: Pixar. Llicència Creative Commons

I si no es disposa d’un mapa de desplaçament? El procediment passaria, en primer lloc, per tenir una versió del model 3D d’alta poligonització. Aquest model, amb una superfície rica en detalls, us permetrà extreure el mapa de normals perquè, finalment, l’apliqueu a una segona versió del model 3D, però de baixa poligonització (vegeu la figura).

Figura Ús dels mapes de normals per afegir detall en models de baixa poligonització
Font: Wikipedia.

La principal finalitat de l’ús de mapes de normals (com els mapes bumps) és ajudar a optimitzar el rendiment de càlcul de la representació final (render) de l’escena i, per tant, treballar amb models de baixa poligonització, però sense detriment de l’acabat visual.

En els videos següents s’explica el procediment de generació del mapa de normal amb Autodesk Maya partint d’un model 3D d’alta poligonització i que, finalment, s’aplicarà al mateix model, però de baixa resolució.

Un altre aspecte molt important a tenir en compte és que cal modificar el valor de l’atribut Use as del node utilitat Bump 2D a Tangent Space Normals perquè interpreti el mapa 2D d’entrada com a mapa de normals (vegeu la figura).

Figura Atributs del node ‘Bump 2D’ a l’editor Hypershade d’Autodesk Maya
fig31.jpg

Recordeu que en un material aiStandardSurface d’Arnold, els mapes de normals (com els de bump) els assignarem al paràmetre Bump Mapping del submenú Geometry en les propietats del material, però el node que els lliga al shader el canviarem per un aiNormal, el qual per defecte és un bump2D.

Mapa de relleu

Els mapes de relleu o desplaçament (‘height map’ o ‘displacement map’) a diferència dels mapes de baix relleu (els mapes bump o de normals), són mapes que sí modifiquen la geometria del model 3D. Com indica el seu nom, el mapa modifica físicament (desplaça) la topologia del model 3D d’acord amb el mapa de desplaçament. Per aquest motiu, per aconseguir un resultat òptim en l’aplicació del mapa de desplaçament cal que prèviament el model sigui d’alt nivell de poligonització. Si el model és de baix nivell de poligonització es procedeix a aplicar-li la tècnica de subdivisió.

Com passa en el cas dels mapes de baix relleu, el mapa de desplaçament són imatges basades en un model de color d’escala de grisos, però amb una diferència important: si els mapes de relleu són de 8 bits, els mapes de desplaçament es recomana que siguin de 16 o 32 bits. Per què? Si veieu la imatge d’escala de grisos de 16 bits no trobareu gaire diferència respecte a la imatge que mostra el mateix però de 8 bits. El problema ve en el moment que apliqueu aquestes dues imatges sobre la geometria del model com a mapa de desplaçament: la imatge de 8 bits pot generar artefactes o bandes no desitjades a causa de la insuficiència d’informació de la imatge. Per aquest motiu es demanen rangs d’informació iguals o superiors als 16 bits per a les imatges que seran mapes de desplaçament.

El fet que els mapes de desplaçament demanin un nivell alt de poligonització del model 3D fa que no siguin idonis en l’àmbit de les aplicacions d’interacció 3D a temps real. En canvi, un ús molt extens dels mapes de desplaçament el trobareu en la creació de terrenys basats en la informació topogràfica real (vegeu la figura).

Figura Exemple de mapa de desplaçament basat en una imatge d’informació d’elevació topogràfica i el resultat després d’assignar-lo a un pla i generar un renderitzat.

Mapes especulars

  • L'especularitat és el grau d'increment de la intensitat de la llum que reflecteix la superfície d'un material. A més especularitat, la superfície resultarà més brillant. En la imatge, superfícies amb reflexos especulars. Font: Wikipedia.
  • L'especularitat és el grau d'increment de la intensitat de la llum que reflecteix la superfície d'un material. A més especularitat, la superfície resultarà més brillant. En la imatge, superfícies amb reflexos especulars. Font: Wikipedia.

Als annexos de la unitat podeu observar tres models 3D que representen una superfície de fusta. Els tres models tenen assignats el mateix material de superfície Blinn i, per tant, si obriu el panell de propietats del material, identificareu un apartat nou en el conjunt dels seus atributs, l’ombrejat especular (Specular Shading).

Respecte de les tres maneres de manipular l’especularitat que podeu observar als annexos:

  • El model de l’esquerra correspon al material de superfície Blinn amb els valors dels seus atributs sense modificar. Vegeu que, quan el punt de llum passa per sobre d’aquest, la superfície mostra el reflex de la llum en funció de l’orientació i la potència d’aquesta, la qual cosa fa que la superfície es mostri com a brillant.
  • El segon model, situat al centre, té el valor de l’atribut d’excentricitat de la llum especular (Excentricity) superior al model de l’esquerra. Aquest atribut controla la mida dels reflexos brillants a la superfície del model: a més valor, més gran serà la seva mida i, per tant, la superfície es mostrarà més il·luminada, però no brillant. En canvi, un valor baix d’excentricitat produirà una àrea brillant del reflex de la llum molt petita, la qual cosa farà que la superfície del material es mostri com a molt brillant. Finalment, un valor de 0 eliminaria completament qualsevol reflex brillant de la superfície del material.
  • Per acabar, el tercer model té assignat un mapa especular basat en un mapa de bits (vegeu la figura).
Figura Mapa de textura realitzada amb un editor 2D i importada com a mapa de bits a l’editor Hypershade d’Autodesk Maya per modificar l’atribut de color del valor especular del material
fig41.jpg

Els mapes especulars són aquells mapes 2D que modifiquen l’atribut de color d’especularitat dels materials de superfície brillants (Phong o Blinn). Per aplicar-los en materials d’Arnold, com l’aiStandardSurface, assignarem el mapa al paràmetre Roughness del submenú Specular, en les propietats dels material. També és important, per aconseguir un millor resultat, que en el node file del mapa seleccionem com a Color Space el Raw (això ho podem fer amb tots els camps que siguin en escala de grisos) i activem a la part inferior l’opció de Alpha is Luminance.

Als annexos de la unitat teniu disponible una animació que descriu el comportament de la superfície en modificar el valor de l’atribut d’excentricitat de l’ombrejat especular del material.

Aquests mapes en basen en el model de color d’escala de grisos, però amb un elevat nivell de contrast dels blancs i negres. Pel que fa a la modificació del reflex de la llum especular, una tonalitat blanca del mapa especular augmentarà el grau de brillantor de la superfície del model i, altrament, una tonalitat fosca del mapa especular disminuirà el grau baix de brillantor de la superfície del model.

La generació de mapes especulars, com en el cas dels mapes de relleu, és possible a través de la majoria de programari gràfic 2D. El procediment segueix una fórmula força comuna (amb més o menys variacions):

  1. Obrim, des de l’editor gràfic, el mapa de textura (color) del model.
  2. Ajustem el mode de color a escala de grisos o es practica la dessaturació del color.
  3. Invertim el color de la imatge.
  4. Reduïm el nivell d’entrada de color de la imatge (0-255) a una estreta franja central (140-170, aproximadament). Això dóna com a resultat una imatge amb força contrast, ja que s’elimina qualsevol transició de gris entre els blancs i negres de la imatge.
  5. Finalment, apliquem el filtre d’aguditzar la definició de la imatge (sharpen).

Vegeu a continuació la creació d’un mapa especular on se segueix aquest procediment amb l’Adobe Photoshop per després aplicar-la com a modificador de color de l’ombreig especular del material d’un model a Autodesk Maya.

Mapes d'ombres i il·luminació ambient

Els mapes d’ombres, o mapes d’il·luminació, fixen en un mapa de bits la informació de les ombres pròpies del model sota un tipus d’il·luminació ambient (Ambient Occlusion).

Quake (1995) va ser el primer videojoc de la història que, de la mà de J. Carmack, va introduir l’ús dels mapes d’ombres.

A diferència d’altres models de llum, la il·luminació ambiental no depèn de cap orientació i direcció de la llum, fet pel qual s’utilitza principalment per a la generació de mapes d’ombres. Els mapes d’ombres estalvien temps de càlcul del processador (CPU) en el procés de render de les ombres. Aquest avantatge també implica una condició: els objectes de l’escena als quals se’ls ha aplicat un mapa d’ombres han de ser estàtics en un doble sentit; ni es poden moure per ells mateixos ni tampoc poden estar afectats per les físiques o interaccions d’altres elements de l’escena (vegeu la figura).

Il·luminació ambient ('Ambient Occlusion')

Model d’il·luminació que, en el camp del 3D, s’utilitza per simular la il·luminació global de l’escena i, per tant, permet la representació de les ombres pròpies dels objectes com a conseqüència de la llum ambiental.

Figura Escena d’interior amb el seu corresponent mapa d’il·luminació o mapa d’ombres (imatge de la dreta)
fig32.jpg
Font: Wikipedia.org

La generació de mapes d’ombres té un paper protagonista en els motors i les aplicacions de creació de videojocs (vegeu, per exemple, la documentació d’Unity3D (goo.gl/fCYkfw) i d’Unreal Engine (goo.gl/Hj7ALW), en particular als videojocs on l’economia del rendiment és cabdal, és a dir, videojocs per a dispositius mòbils i per a la web.

Generació de mapes d'il·luminació amb Autodesk Maya i Arnold_ el //AO render pass//

Un component necessari per a la generació de mapes d’il·luminació és la disponibilitat del model d’il·luminació ambient en el motor de render del programari. El motor de render d’Autodesk Maya no presenta aquesta opció com a node a l’editor Hypershade. Per aquest motiu, necessitareu instal·lar el motor de render Mental Ray (goo.gl/CSn65B) com a connector (plug-in) d’Autodesk Maya.

Vegeu a continuació un exemple bàsic de creació i ús d’un mapa d’ombres en Autodesk Maya.

La conversió de procedimentals a mapes de bits

D’acord amb la documentació oficial d’Autodesk Maya, el terme baking és sinònim de Convert to File texture (vegeu l’article “Baking illumination and color” a goo.gl/8NZqtS). És a dir, a Autodesk Maya, el terme tècnic anomenat baking significa el mateix que l’opció ‘Convertir a un arxiu la textura’. Per tant, és un terme emprat per parlar de la conversió de procedimentals a mapes de bits.

Què significa 'baking'?

Baking és un terme que, traduït literalment, prové del món de la cuina: “cocció” o “cuir al forn”. Però en el camp de la indústria 3D té una gran presència en dues gran àrees: com a part important del desenvolupament de videojocs 3D i en el procés de renderització d’imatges. La idea bàsica del concepte de baking és transformar un determinat sistema de dades en un altre que sigui més simple, transportable i permanent.

Penseu en els mapes de textures procedimentals, la il·luminació d’una escena i la informació dels vectors normals de la geometria d’un model com a sistema de dades. La conversió d’aquests exemples de sistemes de dades a un mapa de bits us ha d’assegurar que la informació resulti més simple, transportable i permanent:

  • Simple, quant al fet que els mapes de bits actuen com a instantànies d’una informació “dinàmica”. En l’exemple de les textures procedimentals, la simplificació consisteix a convertir les fórmules matemàtiques que les generen en un conjunt de dades de color o, en el cas de fer un baking o conversió de la il·luminació de l’escena 3D en un mapa de bits, se simplifica el procés de càlcul de llums i ombres en l’acció de render, especialment si hi ha presència de shaders complexos aplicats als models de l’escena.
  • Transportable: els mapes de bits els podeu obrir i editar amb altres programaris externs a Autodesk Maya. Per exemple, una textura procedimental convertida a mapa de bits és susceptible de ser oberta i editada amb Adobe Photoshop o qualsevol altre programari gràfic.
  • Permanent: ja que, com a instantània, deseu en un fitxer la informació del mapa de bits.

A Autodesk Maya podeu convertir qualsevol de les textures procedimentals en un fitxer de mapa de bits. Aquesta conversió de textures procedimentals resultarà de gran utilitat en la reutilització d’aquestes en altres escenaris fora d’Autodesk Maya; en particular, en el context dels programaris de creació de videojocs (importació de mapes de textures del model). També és una solució per aquelles textures de Maya que altres motors no són capaços d’interpretar, com Arnold, per exemple.

Aquest seria el procediment a seguir:

  1. Obriu l’editor Hypershade.
  2. Premeu Shift per seleccionar, en primer lloc, el model de l’escena a l’àrea de treball 3D que té assignat el material amb el mapa de textura a exportar com a fitxer.
  3. A continuació, sense deixar de prémer Shift, seleccioneu el material del model 3D al panell de navegació de l’editor Hypershade.
  4. En el desplegable del menú Edit de la finestra de l’editor Hypershade, feu clic a l’opció Convert to File Texture. Es mostrarà la finestra flotant amb les diferents opcions de conversió (vegeu la figura).
  5. Activeu les opcions següents tal com podeu veure a la figura
  6. Finalment, cliqueu Convert per executar l’operació de conversió.
Figura Finestra d’opcions d’exportació de la textura a un arxiu
fig36.jpg

Un cop finalitzada l’operació d’exportació us apareixerà un nou material a l’àrea de treball de l’editor Hypershade de la textura 2D procedimental, com a mapa de bits i, per tant, amb l’opció d’editar-la amb un programari de retoc 2D extern.

Nomenclatura per gestionar i organitzar les textures

Organitzar i gestionar les textures implica dues estratègies complementàries. Per una banda, cal que us familiaritzeu amb el sistema de gestió de textures, propi del programari 3D. I, per una altra, establir una nomenclatura que sigui significativa i apropiada. Una gestió i organització òptima de les textures representarà un benefici per diferents motius:

  • Manteniment, actualitzacions i cerca: a mesura que la complexitat del projecte s’incrementa pel nombre d’objectes o models que en formen part, és fàcil deduir que el nombre de textures serà igual o superior. Aquestes textures estaran associades a shaders que, alhora, estaran associats als models. Una nomenclatura significativa de les textures us permetrà un millor manteniment del projecte durant el temps que duri el seu desenvolupament. També cal tenir en compte que:
    • Un projecte comercial (per exemple, un videojoc) és susceptible de millores i actualitzacions i, per tant, és altament necessari que la gestió i l’organització de les textures sigui adequada de cara a qualsevol acció d’edició d’aquestes.
    • Una gestió i organització adequada de les textures us permetrà simplificar el temps de cerca (imagineu un projecte en què hi intervenen un miler de textures). En definitiva, una gestió i organització eficient de les textures significarà un impacte positiu en l’economia del temps de desenvolupament i producció del projecte.
  • Treball col·laboratiu: una gestió i organització òptima de les textures permet millorar el treball de desenvolupament d’un projecte en col·laboració.
  • Reciclatge: en termes de desenvolupament i producció és habitual la pràctica del reciclatge dels models 3D i qualsevol element associat (textures, il·luminació, animació, interactivitat…). En aquest sentit, l’organització eficient de les textures us ajudarà en la tasca de reciclatge de textures per a futurs projectes.

Què significa que les textures tinguin noms significatius?

La necessitat d’utilitzar una nomenclatura significativa per a les textures, siguin procedimentals o de mapes de bits, permet una associació ràpida del contingut i l’aplicació de la textura. Si en un projecte us trobeu amb una nomenclatura per a les textures sense cap significació (per exemple: Imatge0001.jpg, Imatge0002.jpg, textura01.jpg, prova.jpg, prova2.jpg…), difícilment establireu una associació mental entre la textura i el seu ús al projecte.

A més d’aquestes recomanacions generals, cal que tingueu present aquestes altres, relacionades amb la producció i la creació 3D amb Autodesk Maya:

  • Autodesk Maya ofereix una funcionalitat integrada, dins de l’editor Hypershade, anomenada Contenidors (Bins), per a la gestió i l’organització de tots els nodes actius de l’escena (materials, textures, llums, càmeres, utilitats…).
  • En el cas dels nodes d’arxiu (File) de la categoria Textures 2D (2D Textures) que contenen els mapes 2D basats en una imatge o mapa de bits, l’editor Hypershade aplicarà la regla següent: com a node a l’àrea de treball, l’etiqueta correspondrà al nom de l’arxiu de la imatge; en canvi, com a icona al panell de navegació, apareixerà amb el valor que haureu introduït a l’atribut file del node (vegeu la figura).
Figura Relació de noms del mapa de textura amb l’identificador del node ‘Arxiu’ a l’editor Hypershade
fig42.jpg
  • Finalment, cal que tingueu present el camí de les diferents carpetes que, per defecte, Autodesk Maya assigna en el moment que creeu un projecte. Podeu modificar aquests valors, si obriu la finestra de Projecte amb la ruta: File / Project Window (vegeu la figura).
Figura Finestra de ‘Projecte’
fig43.jpg
Anar a la pàgina anterior:
Annexos
Anar a la pàgina següent:
Activitats