Generació de textures procedimentals 2D i 3D

En l’àmplia àrea de la indústria gràfica 2D i 3D, el terme procedimental fa referència a una determinada manera de creació diferent de la intervenció manual directa o feta a través d’una eina o programari d’orientació gràfica. Com diu l’artista 3D Bradford Smith (bradfolio.com):

“Un material procedimental és essencialment la descripció d’un procés. A diferència de desar la textura final al disc dur, registres el procés de creació. A més, pots proporcionar paràmetres d’entrada en aquest procés de creació per tal de modificar el resultat o, fins i tot, canviar completament el resultat final, a vegades d’una manera tan inesperada com interessant.”

B. Smith (2016). Benefits of Procedural Materials. Entrevista al web “80 level” (goo.gl/WPDB2b).

Les textures procedimentals (2D o 3D), per tant, són textures generades a través d’un sistema de regles i variables basades en algoritmes i funcions matemàtiques per simular visualment textures del món real, com el metall, la fusta, el granit, la pedra, el marbre… Dit d’una altra manera, les textures procedimentals són textures sintètiques, no han estat generades manualment (pintades) o obtingudes a través d’una càmera fotogràfica, sinó mitjançant el desenvolupament i la implementació a través d’un determinat llenguatge de programació informàtic.

www.shadertoy.com

Es tracta d’una galeria de treballs visuals generats amb algoritmes procedimentals. Us recomanem gaudir dels treballs del desenvolupador Íñigo Quílez a goo.gl/9PbgF1 i a www.iquilezles.org, on resulta difícil creure que tot el que mostra sigui obra únicament de funcions matemàtiques.

El terme procedimental procedeix del camp de l’algorítmia i de les funcions matemàtiques. Les obres creades de manera procedimental seran el resultat d’un conjunt de regles o instruccions en què la intervenció humana es limita a la definició d’aquestes regles i a la manipulació de les mateixes a través de variables d’entrada.

L’ús de tècniques procedimentals no es limita únicament a la generació de textures. Disciplines i mitjans de creació artística com la música, el vídeo i la literatura, però també branques d’investigació com la intel·ligència i la vida artificial, els efectes especials o la creació de mons virtuals es fonamenten en un ús intensiu de tècniques procedimentals, amb la inquietat mirada posada en els resultats finals que, per l’alta sofisticació d’aquelles, acaben generant productes que difícilment són distingibles de la creació realitzada per l’acció manual.

L’obra de l’artista i programador Robert Hodgin (roberthodgin.com) és una mostra de l’aplicació de les tècniques procedimentals en el desenvolupament creatiu de projectes interdisciplinaris. Vegeu el vídeo següent, on es mostra una selecció de la seva obra, realitzada en la seva majoria amb l’ajuda de Processing i Cinder:

'Processing'

És un entorn de desenvolupament de codi obert molt popular que, des de l’any 2001, ha volgut traslladar les possibilitats dels llenguatges de programació al terreny de les arts visuals. Per a més informació vegeu: processing.org.

La importància de l'atzar

Algunes de les tècniques que estan darrere de la generació de les textures procedimentals fan ús de l’atzar o aleatorietat (randomness) per a la representació final de la textura. És important que tingueu en compte que “generació procedimental” i “aleatorietat” no són sinònims, encara que sovint, per la seva proximitat en determinats escenaris generatius, sembla que són el mateix. En primer lloc, l’aleatorietat no precedeix mai la generació procedimental de la textura, és a dir, l’aleatorietat no defineix el conjunt de regles o instruccions de les quals s’obté un patró visual específic. En canvi, l’aleatorietat és un factor que permet la variació i modificació dels resultats generats a través de les regles procedimentals. Aquest és un dels atractius de les textures generades procedimentalment: la seva diversitat basada en una impredictibilitat controlada.

Cinder

És una llibreria de programació C++ de codi obert orientada al desenvolupament de projectes personals i professionals de disseny visual i estètic. Inclou una bateria de funcionalitats del camp de grafisme 2D i 3D, àudio, vídeo i geometria computacional. Per a més informació vegeu: libcinder.org.

Avantatges i desavantatges de l'ús de les textures procedimentals

Personalment, els principals avantatges (dels materials procedimentals) són la flexibilitat, modularitat i reutilització. Els materials procedimentals poden també accelerar el temps del flux de treball (el cost inicial està present, però les actualitzacions poden propagar-se a través dels models, i les variacions poden ser creades molt ràpidament).

B. Smith (2016). Benefits of Procedural Materials. Entrevista al web “80 level” (goo.gl/WPDB2b).

Per la seva naturalesa sintètica, les textures procedimentals mostren uns avantatges respecte a les textures basades en mapes de bits (per exemple, imatges fotogràfiques); vegeu-les a continuació:

  • Estan basades en algoritmes que han estat codificats en un determinat llenguatge de programació. Darrere d’una textura procedimental hi ha només un codi informàtic que, respecte al cost de memòria, ocupa molt poc si ho comparem amb les textures basades en mapes de bits.
  • No es veuen afectades pel problema de la resolució i, per tant, si aproximeu la càmera a un model 3D on s’han aplicat textures procedimentals no detectareu la “pixelació” pròpia d’aquelles textures basades en mapes de bits.
  • Cobreixen la totalitat de la superfície del model 3D sense afectar l’escala de la textura, com passa en el cas de les textures basades en mapes de bits. En aquest sentit, podem inferir que l’escala de les textures procedimentals són “pseudoinfinites”, ja que el valor de color d’un punt específic de la textura procedimental projectada sobre el model 3D s’obté a partir del càlcul d’aquestes coordenades en relació amb les regles que determinen el seu patró.
  • Són modificables fàcilment a través de paràmetres d’entrada (similars a les funcions matemàtiques). És a dir, podem generar textures similars en modificar aquests paràmetres d’entrada, que intervenen en la generació del patró de la textura; a diferència d’una textura basada en un mapa de bits que, bàsicament, és única, i una nova textura derivada d’aquesta representaria una nova intervenció manual.
  • Són reutilitzables i, per tant, independents de la topologia del model 3D a les quals, en un principi, anirien destinades. Penseu que una textura procedimental que simuli el procés d’oxidació seria apta per a qualsevol model 3D d’aparença metàl·lica.

Els desavantatges de fer servir textures procedimentals serien els següents:

  • El desenvolupament d’una determinada textura procedimental depèn de la programació en un determinat llenguatge de programació de les instruccions que la generaran. Cal no confondre això amb l’oferta de les textures procedimentals dels programaris 2D i 3D que ja estan implementades i que, per tant, només en fem un ús. Definir les instruccions que permetin la generació d’una textura procedimental implica una sèrie de coneixements específics que estan per sobre de l’usuari mitjà (programació, àlgebra, càlcul…).
  • El grau d’impredictibilitat de les textures procedimentals pot representar un escull de temps si els resultats no s’ajusten a les nostres expectatives. Aquest grau d’incertesa del resultat de les textures procedimentals contrasta amb el control absolut de les textures basades en mapes de bits.
  • La dificultat per simular una aparença realista a través de l’ús i la combinació de textures procedimentals i, per tant, l’obtenció no desitjada d’un aspecte visual sintètic o artificial, lluny del realisme de les textures basades en mapes de bits obtingudes amb una càmera fotogràfica.

Utilització de les eines de generació i aplicació de textures

Tot programari 3D que inclogui la creació i el disseny de shaders ofereix un conjunt de diferents opcions i funcionalitats que permeten la generació i l’aplicació de materials i mapes de textures (procedimentals o basades en mapes de bits).

'Shaders'

Un shader designa el programari que controla l’aparença i les propietats d’un determinat material (color, reflexió, transparència…) en relació amb la llum. Són processats per la GPU (Graphical Processor Unit) de la targeta gràfica en lloc de la CPU (Central Processing Unit) de l’ordinador, fet que ha permès una evolució exponencial de la qualitat visual de la representació i del rendiment dels gràfics 3D. Els llenguatges més utilitzats en la indústria gràfica 3D que fan possible els shaders són dos: l’HLSL (High Level Shader Language), propietat de Microsoft i, per tant, en relació estreta amb la llibreria gràfica de programació Direct3D, i el GLSL (OpenGL Shading Language), que té relació amb el llenguatge de programació gràfica OpenGL.

Si bé cada programari 3D té la seva manera particular de crear, assignar i gestionar els shaders, en l’actualitat s’ha anat imposant una metodologia de treball per nodes (Flow-based programming), que permet, de manera visual, la creació àgil i comprensible de shaders. Vegeu a continuació l’entrevista a Paul Morrisson, creador del Flow-based programming:

Autodesk Maya se serveix de la metodologia Flow-based programming en la creació, edició i interconnexió dels render nodes a l’editor Hypershading (vegeu la figura), però us recomanem que exploreu altres exemples de treballs de creació de shaders amb nodes.

Figura Exemple de treball amb nodes a Autodesk Maya: àrea de treball de l’editor Hypershade

Autodesk 3D Studio Max, amb el Material Editor, i Cinema 4D, amb cmNodes, són exemples d’aquesta metodologia de treball. El programari lliure 3D Blender també gestiona els shaders a través de nodes (vegeu la figura), d’acord amb el que podeu llegir a la documentació oficial:

  • Exemple de 'Render Node' a Autodesk Maya. En aquest cas, la imatge representa el node de la textura procedimental 2D d'escacat./-10
  • Exemple de 'Render Node' a Autodesk Maya. En aquest cas, la imatge representa el node de la textura procedimental 2D d'escacat.

'Render nodes'

Són un conjunt de nodes (materials i textures) que poden interconnectar-se entre si i que generen, en el seu conjunt, tots els possibles efectes que es mostraran finalment en el render de l’escena.

“A més de la creació de materials a través de les diferents opcions dels panells de materials dels objectes, Blender admet l’enllaç i la combinació de materials bàsics per a la creació de nous materials a través de nodes. Cada node interpreta una operació sobre el material, modificant la seva aparença en el moment que aquest s’apliqui a la geometria del model. D’aquesta manera és possible aconseguir materials nous amb una aparença visual força complexa.”

AUTORS DIVERSOS. Introduction to Nodes. Manual oficial de Blender al web “Blender.org” (goo.gl/8okjRP).

Figura Exemple de treball amb nodes a Blender

L'editor Hypershading

  • Icona de l'editor Hypershading, d'Autodesk Maya.
  • Icona de l'editor Hypershading, d'Autodesk Maya.

Podeu obriu la finestra de l’editor Hypershade (vegeu la figura) des del menú Windows / Rendering Editors / Hypershade. També podeu accedir-hi des de la icona de la barra principal que representa una esfera amb un forat extrudit cap al seu interior.

Figura Finestra de l’editor Hypershading d’Autodesk Maya

L’editor Hypershade està format per diferents panells de treball:

  • Navegador (Browser)
  • Visualitzador del material (Material Viewer)
  • Pestanya de creació de nodes (Create Tab)
  • Àrea de treball (Work Area)
  • Editor de propietats (Property Editor)
  • Pestanya dels contenidors (Bins Tab)

Navegador ('Browser')

El panell de navegació conté els diferents components que intervenen en el procés de render de l’escena activa, és a dir, materials, textures, llums i càmeres (vegeu la figura). S’organitza mitjançant pestanyes etiquetades com a Materials, Textures, Utilities, Rendering, Lights, Cameras, Shading Groups, Bake Sets, Projects i Assets Nodes.

Figura Panell del navegador d’Hypershade
fug04.jpg

Si, per exemple, necessiteu accedir a la llista completa de textures disponible, cliqueu a la pestanya de Textures per veure-les amb les seves respectives icones.

A través del camp d’entrada de text en la part superior podeu fer cerques dels nodes. És aquí on trobareu els nodes dedicats a les textures 2D i 3D.

Materials per defecte

L’expressió “per defecte” fa referència a aquelles opcions que se seleccionen automàticament, a menys que s’hi especifiqui una alternativa. Sempre que obriu Maya us trobareu amb tres materials creats per defecte: lambert1, particleCloud1 i ShaderGlow1. El material lambert1 és aquell que s’aplica per defecte a qualsevol geometria nova que es crea, particleCloud1 és un material específic orientat als objectes format de partícules, i el shaderGlow1 representa qualsevol material incandescent o que emeti qualsevol mena de resplendor (per exemple, el neó). A partir de la versió de l’any 2020, Maya també té per defecte el material Standard Surface anàleg al aiStandardSurface d’Arnold.

Visualitzador ('Material Viewer')

  • Per canviar els models de referència, dins del panell de visualització trobareu un menú desplegable que us permet seleccionar diferents models. Disposeu de 'Cloth', 'Teapot', 'Ocean', 'Ocean Splash', 'Glass Fill', 'Glash Splash', 'Hair', 'Sphere' i 'Plane'/-70
  • Per canviar els models de referència, dins del panell de visualització trobareu un menú desplegable que us permet seleccionar diferents models. Disposeu de 'Cloth', 'Teapot', 'Ocean', 'Ocean Splash', 'Glass Fill', 'Glash Splash', 'Hair', 'Sphere' i 'Plane'

Aquest panell té com a finalitat proporcionar una visualització a temps real de l’acció dels nodes, de manera individual o en conjunt (vegeu la figura). El seu propòsit és optimitzar el cost del temps de producció, en el sentit que podeu preveure i identificar qualsevol mena d’errada o efecte no desitjat abans de passar al procés final de render.

Figura Panell del visualitzador d’Hypershade
fug08.jpg

Pestanya de creació de nodes ('Create Tab')

Sota el panell de navegació trobareu un panell que conté dues pestanyes. La primera correspon al nom de Create (es mostra per defecte), que conté la llista dels nodes disponibles a Hypershade (vegeu la figura). Per defecte us apareix la secció “Maya”, de la qual pengen les diferents categories que agrupen els nodes per temàtica o finalitat.

S’ha de tenir en compte que, si en el Material Viewer esteu utilitzant Arnold en lloc de Hardware i a més teniu oberta la finestra Arnold RenderView, no us funcionarà perquè el motor d’Arnold només pot renderitzar en una finestra.

Figura Panell del visualitzador d’Hypershade
fug05.jpg

Dins de les categories 2D Textures i 3D Textures trobareu els nodes que corresponen a les textures procedimentals 2D i 3D, però també nodes de textures basades en mapes de bits.

Àrea de treball ('Work Area')

L’àrea de treball correspon al panell que se situa sota el panell de navegació, entre el panell de creació i el panell de propietats (vegeu la figura).

Figura Àrea de treball
fug07.jpg

El panell de l’àrea de treball us permet realitzar les següents accions en relació amb el conjunt de nodes disponibles a Hypershade:

Modificar els noms dels nodes

Podeu modificar i personalitzar els noms dels nodes si feu clic en el nom (part superior del node) o en la finestra Property Editor.

  • Crear nodes: si cliqueu a qualsevol dels nodes disponibles al panell de creació automàticament es mostrarà a l’àrea de treball. També podeu afegir nodes a l’àrea de treball si, amb el cursor dins d’aquesta, premeu la tecla del tabulador i escriviu el nom del node que voleu afegir.
  • Connectar nodes: els nodes disponibles a l’àrea de treball poden connectar-se entre si a través de línies de connexió entre els punts d’entrada i sortida de cada node.
  • Definir el mode de representació dels nodes: a través de les tecles 1, 2, 3 i 4 del teclat podeu minimitzar o maximitzar la caixa dels nodes, ocultant o mostrant les seves propietats.
  • Cercar un determinat atribut: amb la icona de la lupa situada en la barra d’opcions que encapçala l’àrea de treball podreu cercar un determinat atribut dins del node.
  • Crear diferents àrees de treball: per defecte, l’àrea de treball s’obre a l’espai on es mostren els nodes sota la pestanya Untitled 1. Podeu crear més espais de treball si cliqueu al símbol de “+” que hi ha a la dreta d’aquesta pestanya o de l’última pestanya creada.

Editor de propietats ('Property Editor')

Quan seleccioneu un node a l’àrea de treball, l’editor de propietats —panell ubicat a la dreta de l’editor Hypershade— mostrarà els seus atributs perquè la seva edició sigui fàcil (vegeu la figura).

Podeu veure un exemple de connexió de nodes a l’àrea de treball d’Hypershade als annexos de la unitat.

Figura Editor de propietats
fug09.jpg

Pestanya de contenidors ('Bins Tab')

A la dreta de la pestanya “Create” trobareu la pestanya Bins o contenidors (vegeu la figura). Aquest panell us permet organitzar els nodes creats a Hypershade en agrupacions o bins.

Podeu veure una animació sobre la selecció d’un node als annexos de la unitat.

Lookdev

El panell d’editor de propietats té activat el mode Lookdev per defecte, indicat per l’etiqueta View. Aquest mode correspon a una plantilla interna del programari Autodesk Maya que mostra aquells atributs editables dels nodes més utilitzats i, per tant, més rellevants.

Figura Pestanya de contenidors
fug06.jpg

En obrir el panell us apareixerà el Master Bin, que mostrarà en el panell de navegació tots els nodes disponibles.

Podeu crear un o més contenidors o bins amb la finalitat d’organitzar de manera personalitzada els nodes d’Hypershade. La creació de nous contenidors és possible de dues maneres:

  • Clicant a la primera icona de l’esquerra (símbol del contenidor amb el símbol de +): us crearà un contenidor buit.
  • Clicant en la segona icona començant per l’esquerra (símbol del contenidor, però amb nodes al seu interior): us crearà un contenidor amb els nodes seleccionats.

Aplicació d'un mapa de textura amb l'editor Hypershade

Abans de treballar amb les diferents textures 2D i 3D disponibles és interessant conèixer les diferents opcions de què disposa Autodesk Maya per aplicar una textura.

Podeu veure una animació sobre la creació de nous contenidors als annexos de la unitat.

Recordeu que no podeu assignar cap textura si prèviament no disposeu d’un material o shader que serveixi de receptor.

Una primera via consisteix a fer clic en el Property Editor del material, en la icona “d’escacat” situada en la propietat de color. Se us obrirà la finestra Create render node. Cliqueu sobre l’opció de la textura Checker, i d’aquesta manera es crearan els dos nodes (place2dTexture1 i checker1) que es connecten amb el material.

La segona via consisteix a fer clic en les finestres Create / 2D Textures / Checker. Veureu que en la finestra Graph us apareixen els nodes que formen part de la textura 2D Checker, però sense estar connectats al material.

Vegeu el vídeo següent on es mostra el procediment pas a pas de creació i aplicació d’una textura a un model 3D dins de l’editor Hypershade de l’Autodesk Maya.

Podeu veure unes animacions sobre creació d’una textura als annexos de la unitat.

Les textures procedimentals 2D

Les textures procedimentals 2D es poden interpretar com un espai infinit de formes visuals generades matemàticament. És a dir, donada una coordenada de l’espai X i Y, l’algoritme matemàtic retornarà el valor d’un color determinat, mentre que, depenent de l’algoritme i les variables definides per l’usuari, el càlcul X i Y retornarà un valor de color o un altre. Si calculéssim els valors de color d’una àrea, per exemple, de 256×256 píxels amb una divisió de les caselles blanques i negres de 6×6, basant-nos en l’algoritme de la textura procedimental de l’escacat, obtindríem la imatge següent (vegeu la figura):

Figura Textura procedimental 2D escacat (256×256 píxels)

Si l’àrea de representació de la mateixa textura fos d’una mida superior a l’anterior, per exemple 512×512 píxels, el resultat no seria diferent de l’anterior, sinó que el mateix patró s’estendria fins a ocupar l’àrea de la imatge (vegeu la figura), mantenint el mateix nombre de caselles.

'Texture Generator Online'

Per experimentar la creació de textures procedimentals 2D visiteu la web Texture Generator Online (goo.gl/24dLy1).

Figura Textura procedimental 2D escacat (512×512 píxels)

D’aquest exemple podeu deduir que en les textures procedimentals 2D:

  • La seva representació té una finalitat “orientadora”. Com a funció matemàtica, el que veiem és un fragment del càlcul de color d’una àrea infinita. Dit d’una altra manera, obtenim el valor de color en el moment que avaluem l’algoritme que genera la textura procedimental 2D, ja que el seu origen depèn d’una funció matemàtica.
  • Com que no són imatges, sinó mostres de l’aspecte definitiu de la textura procedimental, aquesta no estarà limitada a la resolució de la imatge, com sí ho estan les textures basades en un mapa de bits.

Posicionament de les textures procedimentals 2D

A Autodesk Maya, totes les textures procedimentals 2D, en el moment de crear-les, presenten dos nodes interconnectats (vegeu la figura):

  • El node que conté les característiques pròpies de la textura, és a dir, aquells paràmetres específics que determinaran el patró visual de la textura.
  • El node place2dTexture, que connecta amb l’entrada del node anterior, és a dir, el de la textura.
Figura Nodes de la textura procedimental “escacat” (‘checker’)
fug11.jpg

El node place2dTexture és un node que trobareu a la categoria Utilities del panell de creació (Create) a Hypershade, sota el nom 2D Placement. Aquest node controla el posicionament de la textura 2D sobre la superfície de la geometria del model, i es crea i connecta per defecte en el moment que creeu una textura 2D.

El posicionament de les textures 2D sobre la superfície del model segueix la referència de coordenades UV. Aquestes coordenades són implícites en les superfícies NURBS, però no en el cas de les superfícies poligonals i, per aquest motiu, cal assignar-les de manera explícita.

El node place2DTexture defineix una sort d’àrea de projecció bidimensional (sota el model de coordenades UV) anomenada marc de la textura (texture frame), on es representarà la textura d’acord amb els atributs propis del node. Per exemple, a través del panell de propietats del node place2DTexture (vegeu la figura) podeu modificar els valors de la posició, la mida i la rotació del marc de textura mitjançant els atributs Coverage, Translate Frame i Rotate Frame.

Figura Propietats del node ‘place2DTexture’

També podeu controlar el grau de repetició del patró de la textura (Repeat UV) i crear un efecte mirall (Mirror U, V), sempre que els valors de la variable U Repeat i V Repeat siguin majors que 1.

Tipus de textures procedimentals 2D

Totes les textures 2D presents a l’editor Hypershade d’Autodesk Maya són procedimentals (vegeu la figura), excepte aquelles en què intervé un mapa de bits o vídeo. El tipus de textura procedimental dependrà de l’algoritme i, per tant, obtindreu un determinat patró visual d’acord amb l’algoritme, però també dels atributs o valors d’entrada de la textura.

Figura Llista de textures 2D a l’editor Hypershade d’Autodesk Maya

De la llista de textures procedimentals 2D disponibles a l’editor Hypershade hem seleccionat les següents per fer una descripció més somera de cadascuna d’elles:

  • Soroll (Noise)
  • Protuberància (Bulge)
  • Escacat (Checker)
  • Roba (Cloth)
  • Gamma de color (Ramp)
  • Fractal
  • Aigua (Water)

Soroll ('Noise')

Del grup de textures procedimentals, ‘soroll’ (Noise) és la textura més popular i extensible a una majoria d’escenaris de la creació gràfica 2D i 3D. Fonamentalment, té una finalitat que podríem anomenar “antidigital”: permet un acabat visual que trenca amb la sensació d’artificialitat, brillant i perfecte del típic acabat sintètic de les superfícies dels models 3D (vegeu la figura).

Figura Representació del patró visual de la textura procedimental 2D ‘soroll’

Com es genera el patró visual de la textura procedimental 'soroll'?

Les textures procedimentals es fonamenten en la intervenció de l’aleatorietat o random. La textura procedimental soroll depèn completament d’aquesta intervenció, però perquè el resultat visual del soroll sigui perfecte el factor d’aleatorietat hauria de ser autèntic, real; però no és així: la generació de nombres aleatoris a l’ordinador no és una tasca trivial. El fet de no aconseguir nombres aleatoris reals significa que el resultat final de la textura acabaria per mostrar un patró visual repetitiu i, per tant, l’acabat final no es correspondria amb aquelles textures que podeu veure en aquelles textures granula de superfícies del món real on resulta impossible detectar cap patró visual.

Altres usos de les textures 'soroll'

L’ús i les aplicacions del patró visual del soroll té una gran importància en la creació de textures per a altres camps del disseny gràfic. Al web www.noisetexturegenerator.com trobareu un exemple senzill però efectiu per generar imatges noise per a la web.

Un cop heu creat la textura soroll a l’àrea de treball d’Hypershade trobareu al panell de propietats les opcions següents (vegeu la figura):

  • Llindar (Threshold): aquest valor afectarà el grau de brillantor de tots els valors de color de la textura. El rang possible de valors va del 0 al 1.0. Fora d’aquest rang, el valor serà sempre d’1.0.
  • Amplitud (Amplitude): és un factor d’escala aplicat a tots els valors de la textura; a major amplitud, més contrast entre les zones lluminoses i les zones fosques. Incrementar l’amplitud significa obtenir zones de plateau en cas de fer servir la textura com a bump map.
  • Radi (Ratio): determina la finor del soroll; a més radi, més precís visualment serà el soroll resultant, a menys es veurà difuminat.
  • Freqüència del radi (Frequency Ratio): determina l’escala espacial relativa de la freqüència del radi; a una major freqüència, l’escala del gra del soroll serà més petita. El màxim valor és de 10.0, i el mínim és de 0.0.
  • Màxima profunditat (Depth Max): valor que correspon al nivell de càlcul de la textura. A una major profunditat de càlcul obtindreu una major sensació rugositat de l’escena.
Figura Atributs de la textura procedimental 2D ‘Soroll’
fug15.jpg

D’altra banda, també tenim diversos tipus de sorolls, dels quals cal destacar:

  • Billow: representa un patró visual similar al d’una agrupació aleatòria de núvols inflats.
  • Perlin Noise: és, senzillament, l’algoritme estàndard de la textura Soroll.
  • Wave: representa un patró de formes similars a les ones, però aquestes formen una trama de línies distorsionades en diagonal.

Perlin Noise

Desenvolupat per Kevin Perlin el 1983 com a tècnica per millorar els efectes visuals 3D de la pel·lícula Tron, el seu ús ha estat present com a part activa en la definició de diversos continguts visuals de caràcter procedimental. En el camp dels videojocs, per exemple, l’algoritme Perlin Noise va representar el punt de partida per a la creació dels mons tridimensionals del popular videojoc Minecraft o d’altres més de caire experimental (vegeu la figura).

Per saber-ne més llegiu el següent article: goo.gl/XkP6Yt.

Figura Mostra experimental de creació d’un terreny similar als del videojoc Minecraft
fug16.jpg
Boesch, F. 'Minecraft Like Rendering Experiments in OpenGL 4'( 2010); codeflow.org.

Protuberància ('Bulge')

La textura procedimental Protuberància mostra un patró visual en forma de quadrícula de quadrats blancs amb contorns difuminats (vegeu la figura). És una textura que principalment s’utilitza com a mapa especular o de transparència per simular efectes de vidres que mostren brutícia en les cantonades, o com a mapa de color per simular qualsevol patró quadricular que podeu identificar en terres pavimentades amb rajoles o mosaics.

Figura Representació del patró visual de la textura procedimental 2D ‘Protuberància’
fug17.jpg

Al panell de propietats només trobareu dos atributs, que controlen l’amplada horitzontal (U Width) i vertical (V Width) del patró visual resultant (vegeu la figura).

Figura Atributs de la textura procedimental 2D ‘Protuberància’
fug17b.jpg

Escacat ('Checker')

L’escacat és un algoritme molt simple, però efectiu, que crea el patró d’un tauler d’escacs per a la creació d’aspectes i acabats de materials del món real on està present una quadrícula (vegeu la figura).

Figura Representació del patró visual de la textura procedimental 2D ‘Tauler d’escacs’
fug18.jpg

Les opcions disponibles més rellevants que determinen un resultat visual o un altre són aquestes (vegeu la figura):

  • Color 1: defineix el primer dels dos colors que formen part de l’escacat.
  • Color 2: defineix el segon dels dos colors que formen part de l’escacat.
  • Contrast: determina el contrast de color de l’escacat. El rang de valors disponibles va de 0 (sense contrast i, per tant, no són visibles el color 1 i el color 2 de la textura) a 1.0 (màxim contrast i, per tant, màxima saturació dels colors 1 i 2).
Figura Atributs de la textura procedimental 2D ‘Tauler d’escacs’
fug18b.jpg

Roba ('Cloth')

Textura procedimental que simula el teixit o el material de la roba si la miréssim a través d’un microscopi (vegeu la figura).

Figura Representació del patró visual de la textura procedimental 2D ‘Roba’
fug19.jpg

Al panell de propietats de la textura trobareu aquestes opcions, que determinaran el patró visual de la textura (vegeu la figura):

  • Color del forat (Gap color): designa el color de l’àrea definida per l’ordit (warp) i la trama (weft). El color es barreja en aquesta àrea i el seu contorn. Un buit més lluminós simularà un tipus de roba o teixit més translúcid, més suau.
  • U Color, V Color: colors dels fils U i V de la roba. Feu doble clic en la banda del color per obrir la finestra flotant del selector de color.
  • Amplada U i V (U Width, V Width): fa referència a l’amplada UV dels fils; amb un valor d’1 no hi ha cap amplada, i si el valor és de 0 no hi ha fils. El rang va de 0 a 1, i el valor per defecte és de 0,75.
  • Aleatorietat (Randomness): atribut que permet un efecte de distorsió del patró visual de la textura. Els rangs de valors van del 0 a l’1, i el valor per defecte és de 0.
Figura Atributs de la textura procedimental 2D ‘Roba’
fug19b.jpg

Gradient de color ('Ramp')

Gradient de color és un algoritme que genera mapes de gradients de color (vegeu la figura) i que és emprat per aconseguir millors efectes de transparència i reflexió, particularment en els escenaris següents:

Figura Representació del patró visual de la textura procedimental 2D ‘Gamma de color’
fug20.jpg
  • Crear patrons geomètrics o efectes visuals com bandes o mottled surfaces.
  • Com a fons bidimensionals.
  • Com a mapa d’entorn per simular visualment l’horitzó o el cel.

Els atributs disponibles al panell de propietats (vegeu la figura) de la textura i que determinen el patró visual són:

Figura Atributs de la textura procedimental 2D ‘Gamma de color’
fug20b.jpg
  • Tipus (Type): atribut que determina la direcció del gradient de color.
  • Interpolació (Interpolation): atribut que determina les variacions de color de l’extrem esquerre a l’extrem dret del gradient de color a través de marques de posició.
  • Color seleccionat (Selected color): color de la marca de posició seleccionada.
  • Posició seleccionada (Selected Position): posició de la marca seleccionada en el gradient de color.
  • Ona U (U Wave): atribut que genera formes d’ones en la direcció U del patró visual de la textura.
  • Ona U (U Wave): atribut que genera formes d’ones en la direcció V del patró visual de la textura.
  • Soroll (Soroll): atribut que afegeix un grau de desplaçament en les direccions U i V del patró de la textura.
  • Freqüència del soroll (Noise Freq): atribut que controla el grau de granularitat de l’atribut del soroll.

Fractal

Què és un fractal?

Un fractal és una abstracció matemàtica basada en el principi de recursió que serveix per descriure i simular fenòmens naturals: oceans, arbres, rius, línies de la costa, muntanyes, núvols… El terme fractal (del llatí frāctus, que significa ‘trencat’, ‘fracturat’, ‘irregular’) va ser establert per primera vegada per Benoît Mandelbrot, investigador que l’any 1975 va publicar el llibre Fractals: Form, chance and dimension.

Fractal és una textura que genera un tipus de patró visual basat en els algoritmes dels fractals (vegeu la figura). El seu ús és especialment útil com a mapa de relleu per a la simulació de textures orgàniques o creació de formes naturals.

Figura Representació del patró visual de la textura procedimental 2D ‘Fractal’
fug21.jpg

La característica recursiva dels fractals permet que aquesta textura presenti un nivell de detall a qualsevol nivell d’aproximació o magnificació, és a dir, la distància de la càmera envers la textura del model.

Els atributs més rellevants que determinen el patró visual de la textura fractal són (vegeu la figura):

  • Amplitud (Amplitude): grau de granularitat del patró visual, aplicable a tots els valors de la textura. El valor de 0 significarà un gris homogeni; el valor d’1 significarà el màxim de contrast de la gamma de grisos.
  • Límit (Threshold): grau de granularitat del patró visual, aplicable a tots els valors de la textura. El valor de 0 significarà el màxim de contrast de la gamma de grisos; el valor d’1 significarà un blanc homogeni.
  • Proporció (Ratio): estableix el valor de definició del patró visual de tots els valors de la textura. Un valor de 0 proporcionarà un efecte visual borrós de la textura, i un valor d’1, una màxima agudesa visual.
  • Proporció de la freqüència (Frequency Ratio): valor que determina l’escala espacial relativa de les freqüències de soroll.
  • Nivell mínim, nivell màxim (Level Min, Level Max): aquests dos valors representen el mínim i el màxim d’iteracions (recursivitat) per calcular el patró del fractal. Els valors vàlids o rang vàlid van de 0 a 25; el valor per defecte és de nivell mínim de 0, i per al nivell màxim, de 9.
Figura Atributs de la textura procedimental 2D ‘Fractal’
fug21b.jpg

Aigua ('Water')

Es tracta d’un algoritme que produeix patrons d’ones superposades (vegeu la figura).

Figura Representació del patró visual de la textura procedimental 2D ‘Aigua’
fug22.jpg

Aquesta textura procedimental, si bé no és la més idònia per simular l’aspecte visual de l’aigua, sí que té un ús pràctic en aquelles superfícies del món real que mostren onades, com és el cas de la sorra dels deserts, i que funcionaria com a mapa de relleu.

Dels atributs que determinen el patró visual de la textura aigua en destaquem (vegeu la figura):

  • Nombre d’onades (Number Of Waves): nombre de les onades en la textura. El rang vàlid va del 0 al 100, però només accepta valors de 0 a 32; el nombre per defecte és de 8.
  • Moment de l’onada (Wave Time): controla l’aparença de les onades a través del temps. El rang vàlid és de 0 a 1, i el valor per defecte és de 0.
  • Velocitat de l’onada (Wave Velocity): tal com indica el seu nom, es tracta de la velocitat de l’onada. El rang va de 0 a 1, i per defecte és d’1.
  • Amplitud d’onada (Wave Amplitude): determina l’alçada de l’ona. Té un rang de valors de 0 a 1, i per defecte el valor és de de 0,05.
  • Freqüència de l’onada (Wave Frequency): determina la distància entre les onades principals. Els valors possibles van de 0 a l’infinit. El valor per defecte és 4.
  • Freqüència de la subonada (Sub Wave Frequency): determina la distància entre les onades secundàries. Els valors possibles van de 0 a l’infinit. El valor per defecte és de 0,125.
Figura Atributs de la textura procedimental 2D ‘Aigua’
fug22b.jpg

Les textures procedimentals 3D

La diferència més notable entre les textures procedimentals 2D i 3D és que les d’aquest últim grup no estan subjectes a les coordenades UV com a mètode de posicionament de la textura. Les textures 3D presenten el valor de la profunditat i, per tant, travessen el sòlid o volum 3D en lloc de projectar-se sobre el model 3D, com fan les textures 2D. Dit d’una altra manera, són textures volumètriques. Vegeu el vídeo següent, on s’explica de manera visual aquesta característica de les textures 3D sobre les textures 2D:

Tipus de textures procedimentals 3D

Totes les textures 3D disponibles a Autodesk Maya són procedimentals. El tipus de textura procedimental dependrà de l’algoritme i, per tant, obtindreu un determinat patró visual d’acord amb l’algoritme però també dels atributs o valors d’entrada de la textura.

Dins la categoria de les textures procedimentals 3D que trobareu al panell de creació de l’editor Hypershade d’Autodesk Maya (vegeu la figura) hem seleccionat les següents per fer-ne una descripció més detallada:

  • Marbre (Marble)
  • Roca (Rock)
  • Fusta (Wood)
  • Granit (Granite)
  • Cuir (Leather)
Figura Llista de textures procedimentals 3D disponibles a l’editor Hypershade d’Autodesk Maya
fug23.jpg

Marbre ('Marble')

Aquesta textura genera un patró que simula l’aspecte visual i tàctil del marbre (vegeu la figura).

Figura Patró visual de la textura procedimental 3D ‘Marbre’
fug24.jpg

Els diferents atributs que permeten modificar el patró visual de la textura marbre són aquests (vegeu la figura):

Figura Atributs de la textura procedimental 3D ‘Marbre’
fug24b.jpg
  • Color de farciment i color de la vena (Filler Color, Vein Color): el color de farciment és el color general de la textura, i el color de la vena és el color que defineix el color de la vena de la textura. Aquests dos colors els podeu modificar a través de la finestra flotant del selector de color.
  • Amplada de la vena (Vein Width): determina l’amplada de la vena.
  • Difusió (Diffusion): aquest valor determina la quantitat de color de la vena que es barrejarà amb el color de farciment. Es mesura amb el rang de valors de 0 a 1. Un valor 0 significarà que no hi ha cap barreja entre els dos colors, i un valor d’1 equivaldrà a una barreja molt suau. Per defecte, aquest valor és de 0,5.
  • Contrast (Contrast): valor que determina el contrast entre el color de farciment i el color de la vena. Per defecte, el valor és de 0,5.

Roca ('Rock')

Proporciona un aspecte visual com el de la superfície d’un roca fent servir una distribució aleatòria 3D de dos tipus diferents de gra (vegeu la figura).

Figura Patró visual de la textura procedimental 3D ‘Roca’
fug25.jpg

Els atributs que permet modificar el patró visual de la textura roca són (vegeu la figura):

  • Color1 i Color2: els colors del gra de les dues textures.
  • Mida del gra (Grain Size): determina el valor de la mida del gra de la textura. El rang de valors contempla des del 0 (no gra) fins al 0.1 (gra de mida molt gran); el valor per defecte és 0.01.
  • Difusió (Diffusion): determina el grau de barreja entre els valors del Color1 i el Color2. El rang de valors va del 0 (cap barreja) fins a l’1 (barreja suau); per defecte el valor és 1.
  • Radi de la barreja (Mix Ratio): determina quin serà el color dominant de la barreja dels colors Color1 i Color2. El rang de valors van del 0 (el Color1 és completament dominant) fins a l’1 (el Color2 és el dominant); per defecte, el valor és de 0,5.
Figura Atributs de la textura procedimental 3D ‘Roca’
fug25b.jpg

Fusta ('Wood')

A través de la projecció de patrons 2D, la textura ‘Fusta’ simula l’aspecte visual del tall d’un arbre, és a dir, capes d’anells concèntrics (vegeu la figura). Quan projectem aquesta textura 3D sobre la superfície del model, el resultat és com si la superfície fos tallada de la seva escorça.

Figura Patró visual de la textura procedimental 3D ‘Fusta’
fug26.jpg

Els atributs que permeten modificar l’aspecte final de la textura Fusta són (vegeu la figura):

Figura Atributs de la textura procedimental 3D ‘Fusta’
fug26b.jpg
  • Color de farciment (Filler color): representa el color de l’espai entre venes. El color de les venes es barreja i difumina amb aquest (els contorns, per tant, no són precisos).
  • Color de les venes (Vein Color): representa el color de les venes de la fusta. Aquest color es difumina amb el color de farciment.
  • Disseminació de les venes (Vein Spread): aquesta variable representa l’espai de les venes que arriba a barrejar-se amb el color de farciment. El rang de valors van del 0 al 3; per defecte, el valor és de 0,25.
  • Mida de la capa (Layer Size): mitjana del gruix de cada anell. El deslliçador permet un rang de valors del 0 al 0,5; per defecte, el valor és de 0,02.
  • Aleatorietat (Randomness): genera aleatòriament el valor del gruix de cada anell. El rang de valors pot anar del 0 a l’1; per defecte, el valor és de 0,5.
  • Edat (Age): es refereix a l’edat o temps de la fusta (en anys). Aquest valor identifica el nombre total de capes o anells de la textura, així com la seva influència en la definició del gruix dels anells centrals i perifèrics. El deslliçador permet un rang de valors del 0 a 100; per defecte, el valor és de 20.
  • Color del gra (Grain): indica el color del gra de la fusta.
  • Contrast del gra (Grain Contrast): determina la quantitat del color del gra que es barreja amb el color de la fusta. El rang és de 0 a 1, i per defecte el valor és d’1.
  • Espai del gra (Grain Spacing): mitjana de la distància entre els punts de gra. El rang de valors va del 0,002 fins al 0,1.
  • Centre (Center): determina el centre o punt d’origen dels anells concèntrics de la textura en les direccions U i V. El rang va de -1 fins a 2. Per defecte, el valor d’U és de 0,5 i el de V, de -0,5.

Cuir ('Leather')

Textura amb la qual s’obté un patró que simula l’aspecte visual del cuir (vegeu la figura), tot i que també pot funcionar com a textura per representar la pell de cocodrils o serps, i també el formigó.

Figura Patró visual de la textura procedimental 3D ‘Cuir’
fug28.jpg

Els atributs que permeten modificar l’aspecte final de la textura de cuir són (vegeu la figura):

  • Color de la cel·la (Cell Color): color individual de la cel·la.
  • Color del plec (Crease Color): color dels voltants de la cel·la.
  • Mida de la cel·la (Cell Size): mida individual de la cel·la.
  • Densitat (Density): atribut que controla l’espai entre cel·les de la textura. A menor valor d’aquest atribut, major serà l’espai entre cel·les.
  • Grau de tacat (Spottyness): aporta un grau d’aleatorietat de la brillantor de les cel·les per simular brutícia o taques.
  • Aleatorietat (Randomness): determina el grau d’aleatorietat de la posició de les cel·les. A menor valor, les cel·les es distribuiran en la forma d’una graella.
  • Llindar entre cel·les (Threshold): ajusta el nivell de color i plec de la cel·la que es barrejarà amb les cel·les adjacents.
  • Plecs (Creases): l’activació d’aquesta opció crearà una vora entre les cel·les de la textura similars als plecs que podem identificar en el teixit del cuir.
Figura Atributs de la textura procedimental 3D ‘Cuir’
fug28b.jpg

Granit ('Granite')

Tal com diu el seu nom, aquesta textura genera un patró que simula l’aspecte de la superfície del granit (vegeu la figura).

Figura Patró visual de la textura procedimental 3D ‘Granit’
fug27.jpg

Internament, la textura del granit és idèntica a la textura del cuir excepte pel fet que presenta tres cel·les de color en lloc d’una. Per aquest motiu, la textura del granit comparteix bona part dels atributs de la textura del cuir (vegeu la figura):

  • Color1, Color2, Color3 i color de farciment (Color1, Color2, Color3, Filler Color): els colors dels tres tipus diferents de cel·les de la textura (Color1, Color2, Color3) i l’espai de farciment entre elles (Filler Color).
  • Mida de la cel·la (Cell Size): mida individual de la cel·la.
  • Densitat (Density): assigna el valor d’espaiat entre cel·les.
  • Proporció de la barreja (Mix Ratio): determina quin dels colors és el dominant. Un valor de 0 representarà el Color1 com a dominant; un valor de 0,5 representarà el Color2 com a dominant; un valor d’1 donarà com a dominant el Color3.
  • Grau de tacat (Spottyness): aporta un grau d’aleatorietat de la brillantor de les cel·les per simular brutícia o taques.
  • Aleatorietat (Randomness): determina el grau d’aleatorietat de la posició de les cel·les. A menor valor, les cel·les es distribuiran en la forma d’una graella.
  • Llindar entre cel·les (Threshold): controla el grau de barreja entre les cel·les de color i el color del farciment.
  • Plecs (Creases): crea vores entre les cel·les de la textura. Si aquesta opció està desactivada, les cel·les es difuminaran entre si.
Figura Atributs de la textura procedimental 3D ‘Granit’
fug27b.jpg

Fixació de les procedimentals 3D a la geometria

En el moment de crear una textura procedimental 3D (Núvol, Granit, Neu, Cuir, Fusta…) en l’àrea de treball de l’editor Hypershade, el node que representa la textura 3D està connecta per defecte a un altre node: place3Dtexture (vegeu la figura).

Figura Representació en l’àrea de treball de l’editor Hypershade de la textura procedimental 3D ‘Núvol’
fug29.jpg

Trobareu el node place3Dtexture a la categoria Utilities del panell de creació (Create) a l’editor Hypershade, amb el nom de 3D Placement. El principal objectiu és el posicionament, l’orientació i l’escala de la projecció de la textura 3D en l’espai tridimensional del món (world space) de l’escena.

Per editar els valors de desplaçament, orientació i escala de la projecció de la textura 3D teniu dues opcions. Per una banda, si seleccioneu el node place3Dtexture us apareixeran al panell de propietats els diferents atributs (Translate, Rotate, Scale…) com a valors numèrics (vegeu la figura) per a una edició més precisa. Per l’altra, com a segona opció, en el moment que es crea el node place3Dtexture a l’editor Hypershade també apareix, en l’àrea de treball 3D d’Autodesk Maya, un manipulador virtual que us permet, de manera interactiva, modificar la posició, la rotació i l’escala de la projecció de la textura 3D sobre el model (vegeu la figura).

Les textures 3D, a diferència dels mapes de posicionament de les textures 2D (place2Dtexture), no utilitzen les referències UV, fet que, entre altres coses, descarta qualsevol opció de visualitzar talls o repeticions del patró de la textura. En canvi, el problema més important relacionat amb l’ús de textures 3D és, justament, el seu posicionament: el fet que la projecció de la textura 3D depengui de l’espai del món i no del model al qual s’aplica; si es mou o s’anima, el resultat és una textura 3D animada, fet que produeix un efecte visual de la textura del model animat no desitjat.

Figura Atributs del node ‘place3Dtexture’
fug31.jpg
Figura Manipulador virtual de la projecció de la textura 3D
fug30.jpg

Les textures procedimentals de Maya en materials d'Arnold

Tot i que Arnold està plenament integrat al programari Maya, encara hi ha algunes funcions que no són del tot compatibles, i les textres procedimentals en són un bon exemple. No totes elles renderitzen correctament quan les assignem a un shader d’Arnold. A continuació, us enumerem la relació que hi ha amb les textures més habituals.

Taula Comportament de les textures de Maya amb el motor Arnold
Nom Renderitza amb Maya Renderitza amb Arnold
2D Textures
Bulge
Checker
Cloth
File
Fluid Texture 2D No
Fractal
Grid
Mandelbrot No
Mountain
Movie
Noise
Ocean No
Ramp
Water
3D Textures
Brownian
Cloud
Crater
Fluid Texture 3D No
Granite
Leather
Mandelbrot 3d No
Marble
Rock
Snow
Solid Fractal
Stucco No
Volume Noise
Wood No
Anar a la pàgina anterior:
Referències
Anar a la pàgina següent:
Activitats