You are on page 1of 296

Tecnologas Libres para Sntesis

de Imagen Digital Tridimensional


IV Jornadas Blendiberia 2006
Ciudad Real, 7 y 8 Julio
Tecnologas Libres para Sntesis
de Imagen Digital Tridimensional
IV Jornadas Blendiberia 2006
Ciudad Real, 7 y 8 Julio
TTULO
Tecnologas Libres para n!esis de I"agen #igi!al Tridi"ensional
AUTORES (Por orden alfabtico)
Ja$ier %lonso %lbusac Ji"&ne', (ernando %rroba Rubio, Ja$ier Belanc)e %lonso,
%le*andro Con!y +s!&$e', Rober!o #o"ngue', Jos& %n!onio (ern,nde' orribes, Luis
(ernando Rui' -ago, Carlos (olc) .idalgo, /iguel -arca Corc)ero, In"aculada -i*0n
Card0s, Juan #a$id -on',le' Cobas, Carlos -on',le' /orcillo, /iguel 1ngel -uill&n, Carlos
L0pe' 2rigaray, +"ilio Jos& /olina Ca'orla, -uiller"o Vay,3
EDITOR
Carlos -on',le' /orcillo
PORTADA Y MAQUETAI!"
Carlos -on',le' /orcillo
IMPRESI!"
er$icio de publicaciones on4line Lulu3co"
IS#" $%&'$(&()$*&+
", RE-ISTRO *'.%/$(*
LIE"IA
e per"i!e la copia y dis!ribuci0n de la !o!alidad o par!e de es!a obra sin ,ni"o de lucro
ba*o licencia Creative Commons 5ue se de!alla a con!inuaci0n3 Toda copia !o!al o parcial
deber, ci!ar e6presa"en!e el no"bre de los au!ores3 %l reu!ili'ar o dis!ribuir la obra, !iene
5ue de*ar bien claro los !&r"inos de la licencia de es!a obra3 %lguna de es!as condiciones
puede no aplicarse si se ob!iene el per"iso del !i!ular de los derec)os de au!or3 Los derec)os
deri$ados de usos leg!i"os u o!ras li"i!aciones reconocidas por ley no se $en a7ec!ados por lo
an!erior3
+s!e docu"en!o 7ue "a5ue!ado e6clusi$a"en!e con so7!8are libre9
-:;<Linu6 con =pen=77ice 230, -I/>, Blender y 2a7ray3
LICENCIA CREATIVE COMMONS
Reconocimiento-NoComercial-SinObraDerivada 2.5 Espaa
Usted es libre de copiar, distribuir comunicar p!blicamente la obra,
ba"o las condiciones si#uientes$
Reconocimiento. Debe reconocer los cr%ditos de la obra de la
manera especi&cada por el autor o el licenciador.
No comercial. No puede utili'ar esta obra para &nes comerciales.
Sin obras derivadas. No se puede alterar, trans(ormar o #enerar
una obra derivada a partir de esta obra.
Fotograma de la Pelcula de Animacin
Elephants Dream realizada con Blender
Copyright 2006, Blender Foundation
Netherland !edia Art "ntitute
###$elephantdream$org
Emo... Es que no ves la belleza Emo... Es que no ves la belleza
de este lugar? El modo en que de este lugar? El modo en que
funciona... Lo perfecto que es. funciona... Lo perfecto que es.

Don't lose your


head
m
o
n
k
e
y
Tabla de Contenidos
Los libros que el mundo llama inmorales
son libros que muestran al mundo su propia vergenza
Oscar Wilde
Prefacio ........................................................................................ 1
Filosofa
Creative Commons: entre el copyright y la copia ................... 5
Q! pasa en este pas" .......................................................... 11
#af$ay de la # a la y .................................................................. 1%
Software Libre .................................................................................... 20
Ingeniera del Software ...................................................................... 23
Ingeniera del Software Tradicional: Software Propietario ........... 24
Ingeniera del Software Libre ........................................................ 24
La Catedral y el Bazar ....................................................................... 29
YafRay: de la catedral al bazar organizado .................................. 3
Desarrollo libre para el software libre ................................................. 33
Conclsiones ..................................................................................... 3!
"eferencias ........................................................................................ 3#
&a retrocomptaci'n est( de moda" .................................... )*
$n poco de %istoria ............................................................................ 3&
Intencione! ................................................................................... 3"
Coleccionis'o ................................................................................... 39
('laci)n*"ecreaci)n ....................................................................... +2
Recreaci#n ................................................................................... 44
$ardware %&'lation ..................................................................... 4(
,ardwriting*Low -rogra''ing ........................................................... +#
La retroinfor'.tica y el arte actal ..................................................... +/
-ara saber n poco '.s .................................................................... !0
[ i ]
[ ii ] Tecnologas Libres para Sntesis de Imagen 3D
Fndamentos
Te+tras procedrales .............................................................. 5)
0nda'entos de los con1ntos fractales ............................................ !3
)ondicione! b*!ica! de di&en!i#n .............................................. +3
,i&en!ione! topol#gica y de $a'f!dorff ...................................... +4
)on-'nto! fractale! ....................................................................... ++
2e3tras iterati4as .............................................................................. !!
.'ncione! de r'ido ....................................................................... +(
.'ncione! de r'ido Perlin ............................................................. +/
R'ido! en 0lender 3, .................................................................. +"
2errynoise .......................................................................................... #0
Psicofisiologa de la percepci'n ............................................. ,)
(l siste'a 4isal ................................................................................ #3
1!pecto! f'ncionale! de la retina ................................................. (4
1!pecto! f'ncionale! de la 2i!i#n ................................................. ((
5spectos psicol)gicos de la percepci)n ............................................ &0
Leye! de la percepci#n ................................................................ /3
&a matem(tica de los gr(ficos )- ........................................... *)
Siste'as de coordenadas ................................................................. &3
6lgebra 4ectorial ................................................................................ &!
4peracione! con 2ectore! ............................................................ /+
Interpretacione! geo&5trica! ....................................................... /(
0a!e! ........................................................................................... //
7eo'etra afn y proyecti4a ............................................................... &/
Plano! .......................................................................................... /"
Lnea! .......................................................................................... 63
7eo&etra de la incidencia y geo&etra &5trica .......................... 6
8atrices y transfor'aciones geo'9tricas .......................................... /2
S'&ario proyecti2o ....................................................................... 6/
,eter&inante! .............................................................................. 66
6lgebra lineal n'9rica y resolci)n de ecaciones ......................... 90
La de!co&po!ici#n L8 ................................................................. "
)*lc'lo de deter&inante! ............................................................. "2
Re!ol'ci#n de !i!te&a! de ec'acione! lineale! .......................... "2
In2er!i#n de &atrice! ................................................................... "4
Re!ol'ci#n de ec'acione! ............................................................ "4
7eo'etra diferencial en catro palabras .......................................... 9#
)'r2a! .......................................................................................... "(
S'perficie! .................................................................................... "/
Interpolaci)n y apro3i'aci)n ........................................................... :00
.#r&'la de interpolaci#n de Lagrange ....................................... 33
1-'!te por &ni&o! c'adrado! ................................................... 32
Tabla de Contenidos [ iii ]
8odelado de cr4as y sperficies; splines ....................................... :0+
Spline! nat'rale! ........................................................................ 34
Interpolante! de $er&ite ............................................................ 3+
)'r2a! de 05zier ........................................................................ 3+
09!pline! .................................................................................... 3(
:8R0S ....................................................................................... 3"
Spline! para !'perficie! para&5trica! ........................................ 3
T cara me sena .................................................................... 111
Inst... conceptos b.sicos .................................................................. :::
;<'5 e! el !onido= .....................................................................
>elocidad del !onido? refracci#n? refle@i#n interferencia! ........... 2
2ono< ti'bre< intensidad ................................................................... ::+
-sicobiologa de la percepci)n ac=stica ........................................... ::!
%!t5reo? !'rro'nd? efecto doppler ............................................... /
Aona! de percepci#n .................................................................. 6
5lg=n da< todo ser. digital .............................................................. :20
.or&ato! .................................................................................... 2
S'rfeando en la onda ................................................................. 22
Conclsi)n y cierre .......................................................................... :22
.isi'n /stereosc'pica ............................................................ 10)
>?9 es la 4isi)n estereosc)pica@ .................................................. :23
C)'o i'itiar la 4isi)n estereosc)pica %'ana ................................ :2+
89todos de 4isalizaci)n ................................................................. :2!
>i!i#n Libre ................................................................................. 2+
%&pleando di!po!iti2o! .............................................................. 2+
6reas de aplicaci)n .......................................................................... :29
-rincipios 'ate'.ticosA c.lclo de la distancia focal ....................... :30
Configraci)n en Blender ................................................................ :32
"eferencias ...................................................................................... :32
1nimaci'n
T!cnicas de animaci'n en 2lender ....................................... 1)5
8o4iendo Blender ............................................................................ :3!
-yt%on .............................................................................................. :3/
,irigiendo el &o2i&iento e@terna&ente: ,ri2er! ........................ 36
1pro2ecBando el 7a&e9%ngine ................................................. 3"
(sBeletos en Blender ..................................................................... :39
1ccione! ..................................................................................... 3"
Defor'aci)n de 'allas .................................................................... :+0
5ni'aci)n facial y sincronizaci)n labial ........................................... :+2
Creaci)n de 7$Is personalizados con dri4ers ................................. :++
[ iv ] Tecnologas Libres para Sntesis de Imagen 3D
2lender y -oom ) ................................................................... 135
Cideo1egos y 'ods ......................................................................... :+!
>C)'o pedo crear n 'od@ .......................................................... :+#
Id Software ................................................................................. 4(
>al2e .......................................................................................... 4/
(l apartado gr.fico y Blender ........................................................... :+/
Creaci)n de n persona1e con Blender ............................................ :+9
Codelado del per!ona-e ............................................................. 4"
)reaci#n del &apa 8> ............................................................... +
Render to Te@t're y :or&al Capping ......................................... +4
)reaci#n de %!D'eleto! ............................................................. ++
SEinning F Pe!ado de 25rtice! ................................................... +(
)ine&*tica directa e in2er!a ...................................................... +6
La! 1ction! ................................................................................. +"
(3portando a Doo' 3 ...................................................................... :#0
%@portar per!ona-e! a C,+ ........................................................ (3
%@portar ob-eto! a 1S% .............................................................. (
Preparando para i&portar el per!ona-e en ,oo&%dit ................ (2
Preparando para i&portar el ob-eto en ,oo&%dit ...................... (3
Saltar al desarrollo Indie .................................................................. :#+
$ender
4lminando con #afray ............................................................ 1,*
D,.gase la lzE ................................................................................. :#&
(l "ido ........................................................................................... :&0
"edciendo el rido ......................................................................... :&2
<'5 Bacer c'ando la! l'ce! !on peD'eGa! ................................ /3
)onfig'rar lo! fotone! ................................................................ /4
Casos co'nes donde peden aydar los fotones ......................... :&#
PeD'eGa! zona! il'&inada!: e!t'dio de do! ca!o! ................... /(
4b-eto! e&i!ore! ....................................................................... /6
L'z dif'!a por 'na 2entana ........................................................ /"
>F a%ora B9@ ................................................................................. :&9
Irradiance )acBe ........................................................................ 63
Ca=sticas ......................................................................................... :/3
#af$id: 5istema 6rid para $ender ........................................ 175
Gb1eti4os .......................................................................................... :/!
5rBitectra ..................................................................................... :/&
Ser2idor Yafrid ............................................................................ 66
Pro2eedor ................................................................................... "+
"esltados ....................................................................................... :9!
Re!'ltado! analtico! ................................................................. "+
Re!'ltado! e&prico! ................................................................. "/
Tabla de Contenidos [ v ]
1n*li!i! de lo! re!'ltado! ........................................................... ""
)oncl'!ione! !obre el rendi&iento del !i!te&a ......................... 233
/stdio de 8!todos de $ender ............................................. 091
Sntesis de I'agen 0otorrealista ..................................................... 20:
T5cnica! de Trazado de Rayo! .................................................. 232
T5cnica! de Radio!idad ............................................................. 233
T5cnica! Ci@ta! .......................................................................... 23+
(stdio de 89todos de "enderizado ............................................... 20!
Scanline ..................................................................................... 23(
Raytracing .................................................................................. 23/
1&bient 4ccl'!ion ..................................................................... 236
Radio!idad ................................................................................. 23"
PatBtracing ................................................................................. 23
PBoton Capping ......................................................................... 22
PatBtracing 0idireccional ............................................................ 22
Cetr#poli! ................................................................................... 23
)o&paraci#n de tie&po! en 'na e!cena ................................... 24
Bibliografa ....................................................................................... 2:#
-esarrollo
#af$ay:et: ;ard<are a medida para #afray ........................ 01%
DiseHo %ardware .............................................................................. 222
-orting de Faf"ayIet a co'a fi1a .................................................... 223
/+portaci'n desde 2lender ................................................... 005
(ntrando en el 'en= sin %acer 'c%o rido .................................... 22!
$n 4istazo a lo Be necesita'os ..................................................... 22/
8n poco de &ate&*tica! ............................................................ 226
0lender Hla &adre del corderoI ................................................... 22"
.acilitando la 2ida al '!'ario ...................................................... 233
Los ob1etos 4istos desde Blender .................................................... 23:
Los ob1etos desde C"8L ................................................................. 233
Re'tilizando co!a! ..................................................................... 233
(l script co'pleto ............................................................................. 23+
Programando Plgins de Te+tras ........................................ 0)%
Introdcci)n a las te3tras y a las te3tras procedrales ................ 239
Consigiendo b'aJe ....................................................................... 2+0
(strctra de n plgin de 2e3tras ................................................. 2+2
(1e'plo; S'iley.c ............................................................................. 2+!
Iotas y '.s infor'aci)n ................................................................. 2!:
(l c)digo del plgin co'pleto .......................................................... 2!2
[ vi ] Tecnologas Libres para Sntesis de Imagen 3D
$edise=o de #afray: Parte 1. &a l> ...................................... 055
(stado actal ................................................................................... 2!!
Caloraci)n del estado actal ............................................................ 2!/
Interacci)n lzKs%ader ...................................................................... 2!9
-ropesta de diseHo para fentes de lz ......................................... 2#0
Il'inaci)n 'ontecarlo 4a 7-$ ...................................................... 2#:
Tarea! a co&pletar ..................................................................... 2(2
,ri2er 7P8 ................................................................................. 2(3
>-or d)nde e'pezar@ ..................................................................... 2#!
7P8 Be&iligBt ............................................................................ 2(+
7P8 !pBereligBt ......................................................................... 2(/
7P8 a&bient occl'!ion .............................................................. 2(6
Conclsi)n ....................................................................................... 2#9
8odelado )- basado en 2ocetos: 8o5?45 .......................... 0*1
Introdcci)n ..................................................................................... 2&:
Creaci)n de n ob1eto ...................................................................... 2&2
)on!tr'cci#n de la !il'eta .......................................................... 2/2
4btenci#n de la !'perficie .......................................................... 2/3
,etecci#n y ele2aci#n de la e!pina dor!al .................................. 2/+
4btenci#n del 2ol'&en &ediante &eta!'perficie! ..................... 2//
Ce-ora! en la obtenci#n del 2ol'&en ......................................... 2/6
5lgorit'o de e3trsi)n ..................................................................... 2&9
Trazo del '!'ario ........................................................................ 2/"
Triang'larizaci#n y generaci#n de la e!pina ............................... 263
7eneraci#n de la e@tr'!i#n ......................................................... 26
"esltados ....................................................................................... 2/2
Prefacio
Este libro que tienes en tus manos es el resultado de varias ediciones
de las jornadas Blendiberia, celebradas en Barcelona (2003/2004), Zara
goa (200!) " #iudad $eal (200%)& En esta reco'ilaci(n se )an recogido
algunas de los documentos realiados 'ara ediciones anteriores de
Blendiberia " todas las 'onencias 're'aradas 'ara la *ltima edici(n,
celebrada los d+as , " - de .ulio en #iudad $eal, coincidiendo es'aciotem
'oralmente con la ma"or concentraci(n in/orm0tica de #astilla1a 2anc)a
llamada 3art" 4uijote 200%&
3ara de/inir qu5 son las jornadas, citamos algunos '0rra/os originales
de la 'rimera edici(n, manteniendo los mismos objetivos, concentrando el
inter5s en torno a 'roducciones in/ogr0/icas " so/t6are basado en modelo
de c(digo abierto& El estudio t5cnico de la in/orm0tica gr0/ica alcana su
m07imo e7'onente cuando el usuario es ca'a de intervenir, modi/icar "
ada'tar el so/t6are a las necesidades de la sociedad& En cada una de las
contribuciones descubrimos la )eterogeneidad de dos cam'os en /ren5tico
avance tecnol(gico8 el 9o/t6are 1ibre " la :n/orm0tica ;r0/ica&
<9uerte de laboratorio o encuentro eventual de estudiosos a las t5cnicas de
'roducci(n " realiaci(n de im0genes de s+ntesis tridimensional " toda
'eri/eria creativa que 'ueda emerger del mismo& El gui(n lo /irma
cualquier colaboraci(n ajena, abierta a cualquier 'ersona o colectivo que
trate la circulaci(n de la in/ormaci(n con libertad de uso, inter'retaci(n "
distribuci(n&
=unque no e7ista un m5todo de trabajo *nico, ni siquiera su
continuidad, el esquema que le da /orma es el de una suma de breves
'ieas que describen un gran 'ule te(rico'r0ctico que va desde el goce
abstracto de la 'rogramaci(n gr0/ica a la reivindicaci(n 'ol+tica, aunque
ambas cosas se /unden en muc)os casos&
1o que s+ se 'uede a/irmar es que todas las 'ieas tienen en com*n
estar )ec)as desde una libertad absoluta, de la que nos servimos con el
objeto " /in de e7'lorar el g5nero de la com'utaci(n gr0/ica considerando
el usuario como c(m'lice inteligente, ca'a de entender " dis/rutar del
viaje 'ro'uesto& Blendiberia desde su contenido a un gru'o de
colaboradores que a'ortan ideas, re/le7iones o 'ieas seg*n su est+mulo
intelectual& Es obvio remarcar que la ma"or 'arte de las intervenciones
giran alrededor de dos )erramientas Blender " Yafray, modelos de
so/t6are 3> basados en el marco jur+dico ;?@, 'ero tambi5n se )a
querido aAadir un acento al desarrollo de 'ro"ectos 'ro'ios que toman
como 'unto de 'artida o re/erente la 'osibilidad del c(digo /uente
dis'onible& B
[ 1 ]
[ 2 ] Tecnologas Libres para Sntesis de Imagen 3D
1a maquetaci(n del documento )a intentado conservar la 'aginaci(n,
/ormato " tamaAo de los gr0/icos originales
C
& 9i )ubiera alg*n error en la
misma, seguramente el res'onsible sea el maquetador " no los autores
originales del art+culo&
En el diseAo de la 'ortada del libro " las separatas entre secciones se
)a utiliado la mascota de blender (9uanne), una primitiva 3> que /ue
originalmente renderiada 'or Javier Belanche
2
&
Es'eramos que esta documentaci(n, /ruto del es/uero de todos los
colaboradores de Blendiberia 200% sea de tu agrado, " si no lo es, siem're
'odr0s enviar tus quejas a /dev/null&
@n saludo " happy blending!
C 1a conversi(n de algunos art+culos )a sido 'osible gracias a la a"uda de 'acientes escribanos
(Luis F. Ruiz ) , aut5nticos parsers de /(rmulas 1aDeE a /ormato F>D&
2 9+, el monomonocrom0tico es obra su"a&
Fotograma de la Pelcula de Animacin
Elephants Dream realizada con Blender
Copyright 2006, Blender Foundation
Netherland !edia Art "ntitute
###$elephantdream$org
Seccin Seccin I I
Filosofa Filosofa
F
o
l
l
o
w

t
h
e






M
o
V
e
M
e
n
T
m
o
n
k
e
y
Creative Commons:
entre el copyright y la copia
Javier Belanche Alonso
xbelanch@gmail.com ::
uera comenzar esta charla sobre CREATIVE
COMMO! "i#ien#o #iscul"as. $inalmente no %o& a
hablar #emasia#o sobre el constructor #e licencias 'ue
actualmente est( tenien#o una gran "ro&ecci)n en (mbitos no
exclusi%os #el #esarrollo #e so*t+are.
,
La ltima portada de la revista WIRED -responsable en gran medida
del nacimiento de CREATIVE COMMO!- regalaba de "orma ldica #n
CD con $% canciones con #na &n#eva ' radical( licencia ' )#e s#s
protagonistas *David +'rne, T-e Rapt#re o +eastie +o's, entre otros.
"orman parte de #na iniciativa no carente de di"ic#ltades por liberar la
prod#cci/n m#sical de las act#ales restricciones legales ' creativas0
1rente a las limitaciones )#e -a tra2ado la ind#stria m#sical, los $3 artistas
)#e s#scriben la prop#esta -an grabado ba4o #na licencia di"erente5 la
&!ampling 6l#s License(, )#e nos permite a los #s#arios compartir
digitalmente las canciones *&"ile-s-aring(., pero tambi7n nos o"rece la
posibilidad de a8adir a n#estras prod#cciones comerciales partes o
&samples( de estas canciones, siempre ' c#ando n#estro traba4o sea lo
s#"iciente &di"erente( al original para )#e no res#lte #na b#rda copia0 En
l#gar de condenar la -abit#al pr9ctica de &pirater:a( )#e los grandes
medios acost#mbran a bombardear, se pro-ibe la "alta de creatividad0 Est9
pro-ibido crear #na copia e;acta con "ines comerciales pero no #n
&sampleado( c#'os res#ltados deriven a #n traba4o di"erente, )#i29 m9s
e;citante o genial0 O )#e comercialmente p#eda res#ltar #n 7;ito
inesperado0 < tenemos precedentes0 C#ando el gr#po &T-e Orb( consig#i/
con &Little 1l#""' Clo#ds( #n 7;ito planetario a partir de "ragmentos de
composiciones del "amoso creador minimalista !teve Reic-, el mismo
artista no s#po )#7 -acer0 1inalmente ren#nci/ a demandar al gr#po
&ambient -o#se( considerando la acci/n misma de &depredar(
"ragmentos sonoros *no e;cl#sivos de la msica, tambi7n vale di9logos de
series de televisi/n, r#idos de la calle. ' obtener #n res#ltado nico, #na
s#erte de collage m#sical, independiente de las "#entes #tili2adas para s#
creaci/n, a#n)#e el gr#po T-e Orb no las cite0
[ 5 ]
F
i
l
o
s
o
f

a
[ 6 ] Tecnologas Libres para Sntesis de Imagen 3D
Es posible la resp#esta de !teve Reic- se debe al rec#erdo de la -istoria de
la msica o la -istoria de las pr9cticas del s#rrealismo ' dada:smo, donde
el #so ' rec#rso indiscriminado de im9genes tomadas de obras de terceros
o incl#so adoptando el estilo de creaciones de artistas marginales o tribales
era absol#tamente aceptado ' generali2ado0 Es obvio )#e 6icasso
"#ndament/ las bases del c#bismo en la interpretaci/n personal de las
m9scaras a"ricanas, de la l:nea de Ingres ' de la investigaci/n pict/rica de
Ce2anne0 Incl#so Andr7 +reton, padre intelect#al del movimiento
s#rrealista, invitaba a los creadores pl9sticos la e;periencia de &l=ob4et
retro#v7(0 ada de la vang#ardia art:stica del primer c#arto del siglo >>
pod:a ser considerado acto ilegal0 En este caso, el artista tomaba s#s
re"erencias de obras )#e, en cierta manera, podemos considerarlas en la
act#alidad de &dominio pblico(0 < en cierta manera ' en otro "rente,
c#ando Walt Disne' bas/ gran parte de s# genialidad como animador en la
literat#ra in"antil de los -ermanos ?rimm ' otra parte de s#s logros
gr9"icos a la atm/s"era permisiva de a)#ella 7poca en la )#e los artistas
dis"r#taban de gran libertad para crear obras &derivadas( de otras0
6arad/4icamente, en la act#alidad nadie se atrever:a a tomar los persona4es
cl9sicos de Walt Disne' para #na n#eva interpretaci/n o, simplemente,
para s#mar n#evas -istorias a las 'a "orman parte de la -istoria0
!encillamente por)#e ser:a ac#sado de #n acto criminal0
@6or )#7 en la act#alidad se -a llegado a #n e;cepcional ' di":cil -ori2onte
donde est9 en 4#ego las libre circ#laci/n de las ideasA En #nos pocos a8os,
el panorama occidental en c#anto a las reglas de protecci/n ' derec-os de
a#tor se -a incrementado incre:blemente el nmero de licencias de
car9cter "#ertemente restrictivo0 Es m9s, en 9mbitos como la prod#cci/n '
dise8o so"tBare -emos visto c/mo en s#s or:genes pertenec:a a #n campo
libre de #so ' lect#ra del c/digo "#ente a s# privati2aci/n en t7rmino
legales, sin olvidarnos )#e, en el tramo "inal, la pr9ctica de patentar c/digo
representa la ltima "rontera, el ltimo paso a la e;cl#si/n de la c#lt#ra a la
sociedad0 Esta act#aci/n nica ' "ocali2ada - la e;cl#si/n, la privati2aci/n
"#erte de las ideas -, pero omnidireccional abierta en todos los mercados
c#lt#rales p#ede observarse ' detectar s#s consec#encias en mensa4es )#e
mani"iestan la inteligencia ' la creatividad -#mana propiedad de #n
cerebro, de #n individ#o, conocido pop#larmente como &artista( o
&cient:"ico(, convirti7ndose descaradamente en marcas registradas de la
c#lt#ra pop#lar0 As:, +ill ?ates es a la in"orm9tica lo )#e 6icasso
representa en la evol#ci/n de la -istoria del Arte del siglo >> o,
rec#perando #na -istoria anterior, lo )#e Walt Disne' representa a la
-istoria de la animaci/n0 Este pensamiento no permite la mati2aci/n0 o
se permite pensar )#e lo )#e generalmente conocemos como &invenci/n
individ#al( es prod#cto de #n "en/meno m9s comple4o donde intervienen
#n nmero de inter"erencias o &inteligencias(0 Ese lema llevado -asta la
e;asperaci/n cond#ce claramente a #n posicionamiento #ltra conservador
Creative Commons: entre el copyright y la copia [ 7 ]
)#e, tal como -e comentado antes, de"ender9 -asta el ltimo aliento #na
"/rm#la de estandari2aci/n ab#siva5 #n s/lo prod#cto, #n solo nombre, #n
monopolio comercial de la c#lt#ra0
1rente a esta dictad#ra de la comerciali2aci/n ' prod#cci/n e;cl#siva de la
c#lt#ra, tenemos otra corriente, #n movimiento "ractal )#e, sin entrar en
s# propia rec#rsividad, l#c-a abiertamente por la libre circ#laci/n de las
ideas0 Dentro de esta post#ra se dib#4an otras, )#i29 menos visibles, pero
no por eso menos importantes0 V#elvo a incidir en la c#esti/n de la
#nicidad creativa0 !egn estos movimientos de resistencia, la creatividad
es propiedad de la -#manidad ' "omentada en la agr#paci/n de personas
con a"inidades e intereses com#nes ' re#nidos en torno a #na com#nidad0
El acento de esta rev#elta se sita en t7rminos de cooperaci/n, de &ba2ar(
en palabras de Eric Ra'mond0 Este movimiento c#estiona abiertamente
#nas le'es )#e t#vieron s# ra2/n en otro momento -ist/rico, pero )#e, en
la act#alidad, -an perdido el sentido0 La digitali2aci/n de la c#lt#ra -a
trastornado radicalmente el tr9"ico incesante de la c#lt#ra, de las ideas0 La
digitali2aci/n -a trans"ormado completamente el conte;to, el marco en el
)#e la tecnolog:a emp#4/ a de"inir el signi"icado de Cop'rig-t como "orma
legal de proteger las inversiones en la creaci/n de #na obra ' la creaci/n
misma5 la copia0 En estos momentos, los centros de prod#cci/n masiva de
c#lt#ra se -an descentrali2ado0 C#al)#ier persona, desde s# casa, p#ede
ser "#ente de prod#cci/n de in"ormaci/nC p#ede copiar, reprod#cir e
incl#so compartir sin p7rdida en la calidad de la in"ormaci/n de los bienes
inmateriales con otras personas0 6ero, contradictoriamente a lo )#e
parec:a #na actividad inoc#a -ace #nas d7cadas como el pr7stamo de #n
libro a #n amigo o grabarle a #n vecino #na canci/n, en el d:a de -o', estas
' otras actividades se -an criminali2ado con el "in de proteger, segn la
/ptica monopolista del negocio c#lt#ral, los derec-os del a#tor0 o es
e;tra8o )#e ba4o esta atm/s"era pro-ibitiva de la circ#laci/n de la c#lt#ra
-a'an cristali2ado movimientos como el del so"tBare libre, &cop'le"t( o
&all rig-ts reversed(0 Movimientos )#e -an permitido respirar libertad '
)#e o"recen de manera legal - ' es bastante triste con"irmarlo - el poder
compartir bienes inmateriales con t# vecino sin riesgo de ser 4#2gado como
#n criminal0
Dno de los aspectos m9s interesantes )#e contradice los monopolios del
comercio c#lt#ral ' )#e p#ede ser motivo de #na larga re"le;i/n es el
"en/meno 4apon7s conocido por &do#4ins-i(0 Todos conocemos la
ind#stria del c/mic en Eap/n, &manga(0 Los 4aponeses son verdaderos
"an9ticos de los c/mics0 Dn FGH de las p#blicaciones en la act#alidad son
c/mics ' socialmente c#bren todas las edades5 desde los m9s pe)#e8os
-asta las personas de edad avan2ada0 A di"erencia de la c#lt#ra occidental,
el &manga( no "orma parte de #n #so e;cl#sivo de #n gr#po o per"il de
personas0 En Espa8a, el c/mic siempre -a arrastrado di"erentes comple4os
' pre4#icios0 !/lo en paises como 1rancia o Estados Dnidos p#ede decirse
[ 8 ] Tecnologas Libres para Sntesis de Imagen 3D
)#e -a' #na "#erte tradici/n ' )#e la sociedad acepta s# creaci/n como
parte de la c#lt#ra social0 !in entrar en m9s detalles sobre el &manga(, lo
)#e realmente me interesa e;plicar es este "en/meno, &do#4ins-i(, )#e en
t7rminos legales o ba4o el parag#as restrictivo del Cop'rig-t act#al estar:a
en el terreno de la ilegalidad0
&Do#4ins-i( son c/mics, pero #n tipo de c/mic especial0 Los creadores o
dib#4antes de &do#4ins-i( tienen permisos para crear obras derivadas de
&mangas( o"iciales5 no copian, modi"ican en t7rminos de contrib#ci/n '
desarrollo del original0 Dn &do#n4ins-i( p#ede tomar los persona4es de #n
&manga( ' cambiarlos de manera signi"icativa en s#s at#endosC o crear
n#evas -istorias para los persona4es cambiando s# conte;to geogr9"ico o
-ist/ricoC o simplemente contin#ar -istorias all9 donde el c/mic original
-a terminado0 En Eap/n, los &do#n4ins-i( son permitidos en t7rminos
legales0 o estamos -ablando de copias, sino de obras derivadas de otras
consideradas &o"iciales(0 En Eap/n el mercado &do#n4ins-i( m#eve a
330GGG c:rc#los de creadores ' dos veces al a8o se organi2an enc#entros
donde FIG0GGG 4aponeses se renen para el intercambio o venta de
&do#n4ins-i(0 Este mercado e;iste paralelamente al mercado o"icial
&manga( ' el seg#ndo no teme por s# "lorecimiento0 En t7rminos
occidentales, &do#4ins-i( e)#ivale a &obra derivada( ', por lo tanto, ilegal0
@J#7 es lo m9s sorprendente de este movimiento &legal( en Eap/nA !#
e;istencia0 < al rev7s de lo )#e podr:a pensarse, el mercado &manga( no -a
decrecido en absol#to0 Al contrario0 La e;istencia de este mercado de
a"icionados al &manga( "avorece el crecimiento de la ind#stria o"icial en
t7rminos de circ#laci/n de in"ormaci/n0 Esta sit#aci/n no era m#' distinta
en los primeros tiempos del c/mic americano, donde los dib#4antes
aprend:an los #nos de los otros, copiando s# estilo, modi"ic9ndolo o
adapt9ndolo, ' del )#e Walt Disne' es #n e4emplo0 En el d:a de -o', la
ind#stria del c/mic americano, sig#iendo la -istoria, la adaptaci/n o la
obra derivada est9 pro-ibida0 Es m9s0 6ersona4es como !#perman # otros
s#per--7roes tienen bien de"inidos s# rol0 Ka' cosas )#e p#eden -acer,
pero otras )#e "ormen parte de la de"inici/n de otro s#per--7roe no0
Contrariamente, la derivaci/n en el #niverso del manga permite #na ma'or
"le;ibilidad ' promisc#idad creativa0 < el m#ndo de las obras derivadas, tal
como oc#rre con el &do#4ins-i(, en l#gar de restar movimiento al mercado
o"icial parece a'#dar s# contin#idad0
Retomando la interpretaci/n polari2ada de la sit#aci/n act#al, la post#ra
)#e persig#e la mercantili2aci/n de la c#lt#ra "#ndamenta s# arg#mento
en la protecci/n "7rrea de los intereses del a#tor0 Recordemos )#e en la
act#alidad, c#al)#ier a#tor -especialmente escritores ' msicos- )#e
b#s)#e #na di"#si/n de s# obra en los circ#itos comerciales, "irmar9 con #n
editor o &p#blis-er(, casa discogr9"ica o distrib#idora #n contrato
econ/mico en el )#e se delimita la a#tor:a intelect#al de la obra0 En $L$G,
Creative Commons: entre el copyright y la copia [ 9 ]
los derec-os de a#tor en el primer estat#to de Inglaterra se de"inen como
#n derec-o )#e e)#ilibra dos partes interesadas5 el reconocimiento del
a#tor ', por lo tanto, la protecci/n de la e;presi/n de #n contenido, no el
contenido del mismo ', en palabras te;t#ales, &animar a los -ombres
il#minados a componer ' a escribir libros tiles(0 !i bien el a#tor tiene el
monopolio legal de permitir la representaci/n de s# obra con s#
consentimiento, la sociedad -a de poder acceder a la misma con
consec#encias creativas0 La obra no -a de representar #n ob4eto cerrado a
la sociedad ' 7sta -a de bene"iciarse de las creaciones0 6ara alcan2ar este
consenso se "i4/ #na cad#cidad a los derec-os de a#tor )#e permitiera )#e
la obra "ormara parte del dominio pblico desp#7s de #n nmero de a8os0
En la le' de la propiedad intelect#al espa8ola *L6I. ' m#' similares en
otros pa:ses, tomaron como re"erencia s# desarrollo las bases redactadas
en el Convenio de +erna para la protecci/n de traba4os literarios '
art:sticos de $MM% donde se di"erencian derec-os morales ' patrimoniales0
Los derec-os morales protegen inde"inidamente la a#tor:a ' la integridad
de la obraC los derec-os patrimoniales -ablan del derec-o "#ndamental de
la e;plotaci/n econ/mica de la obra ' p#eden ser cedidos a #n tercero de
"orma parcial o total de "orma e;cl#siva o no, segn el contrato )#e se "i4e
entre creador ' la empresa encargada de la e;plotaci/n econ/mica de la
obra0 Los derec-os patrimoniales tienen #na d#raci/n de LG a8os desp#7s
de la m#erte del a#tor, en el caso de la le' espa8ola para pasar desp#7s a
"ormar parte del dominio pblico0
La cesi/n de derec-os del a#tor a #n tercero se de"ine mediante #n
contrato denominado &licencia(0 En t7rminos amplios, cada licencia
de"ine los permisos del #so de la obra, como por e4emplo s# e;plotaci/n o
no econ/mica, la creaci/n de obras derivadas, etcC la licencia protege
as:mismo la atrib#ci/n o a#tor:a de la obra como el impedimento legal de
c#al)#ier modi"icaci/n de la misma como de la licencia0 6or otro lado, la
licencia permitir9 a #n tercero - con e;cl#sividad o no -, tal como -emos
comentado anteriormente, a la copia, distrib#ci/n ' representaci/n de la
obra0
Dentro de esa de"inici/n amplia ' general de licencia )#iero retomar la
&Creative Commons( ' as: c#mplir con el ob4etivo de esta c-arla0 1#ndada
en el NGG$ ' dirigidos por e;pertos en materia legal de la propiedad
intelect#al, derec-o en la sociedad de la in"ormaci/n e in"orm9tica, la
&Creative Commons( viene a ser #na s#erte de meta-licencia )#e permita
en el panorama digital de la in"ormaci/n #na a'#da ' cobert#ra legal a los
creadores protegiendo s# a#tor:a *e;cepto el caso de dominio pblico. pero
)#e a #n mismo tiempo sea "actible la circ#laci/n legal de la obra0 El lema
es evidente5 &Creative Commons is a nonpro"it t-at o""ers a "le;ible
cop'rig-t "or creative BorO(0 Kablar de "le;ibilidad es sencillamente
-ablar de ciertas libertades en c#anto a copia, distrib#ci/n ' creaci/n de
obras derivadas0 El 7;ito pop#lar )#e est9 ad)#iriendo esta metalicencia es
[ 10 ] Tecnologas Libres para Sntesis de Imagen 3D
b9sicamente por tres motivos5 el a#tor p#ede de"inir la licencia )#e m9s le
interese en apenas tres pasosC #na ve2 de"inida, el a#tor tendr9 a s#
disposici/n tres versiones de la licencia5 #na versi/n legible para c#al)#ier
persona *Commons Deed., #na seg#nda versi/n especiali2ada en t7rminos
legales *Legal Code. ', "inalmente, #na tercera )#e p#eda ser interpretada
digitalmente por aplicaciones ' motores de bs)#eda )#e identi"i)#en la
a#tor:a ' los t7rminos de licencia0 En seg#ndo l#gar comprobamos )#e, a
di"erencia de licencias como la ?D, la Creative Commons e;tiende s#
cobert#ra a disciplinas como la msica, video, im9genes, te;to e incl#so
ed#caci/n0 1inalmente, Creative Commons -a encontrado trad#cci/n legal
en #n nmero grande de pa:ses, en los )#e incl#imos Espa8a ' Catal#n'a,
gracias a la colaboraci/n desinteresada de la Dniversitat de +arcelona0
La creaci/n de #na licencia a partir de Creative Commons se "#ndamenta
en la combinaci/n de c#atro condiciones5 la atrib#ci/n, la no-
comercialidad, la negaci/n a traba4os derivados ', c#arto, el permiso a
traba4os derivados *s-are-aliOe., siempre ' c#ando la obra derivada #se '
respete la misma licencia )#e el original0 6ero siempre manteniendo dos
condiciones previas5 a"irmar la a#tor:a de la obra ' el permiso a terceros a
copiar ' distrib#ir la obra con los c#atro condicionantes antes comentados0
6ermitir, sin l#gar a d#das, )#e la c#lt#ra ' la circ#laci/n de las ideas no
est7 s#4eta a s/lo intereses comerciales ' revivir el concepto de creatividad
como #na act#aci/n derivada, no nica ' genial0
Qu pasa en este pas?
Alejandro Conty Estvez
aconty@gmail.com ::
ste articulo recoge una serie de impresiones personales
sobre el mundo laboral del programador en Espaa. Las
directivas que en l se recogen no son evidentemente
aplicables como norma. La intencin del texto es la de denunciar
una serie de aspectos a mi juicio profundamente perjudiciales
para el sector.
E
Como se menciona en "The mythical man-month": Recogiendo patatas
el individuo ms productivo puede tener una relacin de 2, como mucho 3
a 1 contra el menos productivo. En el mundo del desarrollo de softare, la
relacin entre el ms productivo ! el menos productivo puede ser de 1" e
incluso 1"" a 1. #in em$argo, el ms productivo aceptar tra$a%ar slo por
el triple.
Esta venta%a &ue en principio tienen los empresarios pasa totalmente
desaperci$ida en este pa's. (a! !a unos cuantos programadores &ue
pueden ser productivos. )am$i*n ha! unos pocos programadores
$rillantes &ue podr'an, en el entorno adecuado, generar verdaderas
fortunas. +ero el programador no es una persona respetada en el mundo
la$oral. ,i si&uiera se le respeta en la calle.
-no se encuentra programadores co$rando menos &ue los del servicio de
limpie.a. ,o es &ue *stos de$an co$rar menos, es &ue los programadores
de$er'an co$rar ms. /dems nos da una idea de como valora la empresa
el papel del programador. /l fin ! al ca$o, en la industria del softare son
los programadores los &ue crean ri&ue.a de la nada. Es dif'cil entender
como pueden tener una valoracin tan $a%a. )am$i*n es sorprendente &ue
los propios programadores lo consientan.
)odos sa$emos lo &ue supone reempla.ar a un programador en medio de
un pro!ecto. +uede significar un retraso de 0 meses en el me%or de los
casos. El atasco completo del pro!ecto en el peor de ellos. +ero nadie en la
direccin de las empresas se da cuenta. Es ms, ni si&uiera les importa. En
Espa1a el 2"3 de las empresas se dedican a vender humo o a hacer
pro!ectos con la /dministracin cu!o $uen fin preocupa a mu! pocos. ,o
es de e4tra1ar &ue de a&u' no salga ninguna empresa espectacular como
#5!pe, 6e!hole, o no digamos !a, 7oogle. 8e$e e4istir alg9n motivo.
[ 11 ]
F
i
l
o
s
o
f

a
[ 12 ] Tecnologas Libres para Sntesis de Imagen 3D
)ra$a%ando como programador uno se enfrentar a un montn de
iluminados visionarios &ue, sin tener ning9n conocimiento, proponen cada
d'a ideas como "Y si hacemos un sistema de telefona por internet?".
,ormalmente estos ata&ues de creatividad ocurren al d'a siguiente de &ue
salga por la tele la noticia de &ue alguien ha hecho lo mismo en alguna
parte. / los dos a1os cuando la idea est* !a implantada podrn decir "eso
se me ocurri a m, pero nadie me apoy".
)odo este entorno frena a cual&uier programador de provecho de hacer
nada 9til ni revolucionario. / diferencia &ue en otros paises, las empresas
de tecnolog'a no estn dirigidas por personal t*cnico. Estn dirigidas por
gente de mucho dinero o tipos &ue ganaron algo de dinero haciendo otra
cosa ! ahora &uieren apuntarse al carro. ,unca saldremos del agu%ero
tecnolgico hasta &ue esto cam$ie.
En mi corta e4periencia como programador he ido desarrollando fuertes
alergias a prcticas comunes. Como ahora estn de moda los estatutos, he
decidido empe.ar a redactar un Estatuto de los +rogramadores. +ara
generar pol*mica, todo estatuto tiene &ue tener un prem$ulo incendiario
&ue reclame derechos de nacin o algo similar. Como no est el horno para
$ollos, hemos de ma&uillarlo un poco para &ue no suene mu! radical.
El prem$ulo propuesto es el siguiente:
El mundo de la programacin es una realidad
prostitucional
8icho esto procedemos con el primer ! ms importante art'culo:
Artculo 1: Toda persona incapaz de realizarlas tendr,
terminantemente prohi!ido, tener ideas.
:leva un poco de refle4in darse cuenta de cunto $eneficio har'a una
norma como *sta. +rimero invito a pensar si podr'a en alg9n caso hacer
da1o a la sociedad. ;(a ha$ido alguna ve. una $uena idea tecnolgica o
cient'fica &ue surgiera de mano de alguien incapa. de desarrollarla<
/un&ue as' fuera =&ue no es>, la idea se hu$iera echado a perder por la
mala gestin de la misma. Resulta impensa$le &ue el %efe de la oficina de
patentes donde Einstein tra$a%a$a se presentara un d'a en el tra$a%o
diciendo:
Qu pasa en este pas? [ 13 ]
""l!ert, he pensado #ue #uizs la $elocidad de la luz es una
constante uni$ersal no su%eta a la medicin relati$a #ue sufren
todas las dems mediciones& 'as consecuencias pueden ser muy
interesantes, podemos llegar incluso a la energa nuclear& (uiero
#ue dedi#ues todos los das un par de horas a desarrollar esto&
Tiene #ue estar listo en seis meses&
'os hitos del proyecto son)
*+,- - relati$idad especial .un primer !oceto de la idea/
*+*- - relati$idad general .desarrollo matemtico y
generalizacin/
*+-, - centrales nucleares"
Es mucho ms pro$a$le &ue lo &ue ocurriera fuera algo como:
""l!ert, el futuro es desarrollar unas nu!es tan densas #ue la gente
pueda $olar en ellas y $ia%ar prescindiendo del a$in, #ue es un
in$ento o!soleto& En dos a0os ya se ha!r superado y no podemos
#uedarnos atrs& "s #ue de%a esos papeles #ue gara!ateas todos
los das y ponte con esto ya&"
:as ideas son mucho ms &ue una simple frase. En el mundo de la
programacin no cuenta slo la idea, sino la idea de com llevar a ca$o la
idea. / los fundadores de 7oogle no se les ocurri simplemente hacer un
$uscador. Eso lo hac'a todo el mundo por a&uel entonces. #e les ocurrieron
ideas para hacer uno mucho me%or &ue el de los dems. ? eso nunca podr'a
ha$*rsele ocurrido a un tipo &ue reuni unos millones vendiendo
camisetas ! ahora &uiere revolucionar la informtica =por&ue *l lo vale>.
-n d'a el %efe llega ! dice "1amos a hacer un programa de 2"3 #ue
des!an#ue al "uto2"3". -no se &ueda esperando por lo &ue de$er'a venir
a continuacin. / ver cules son esas ideas para un programa de C/8
revolucionario. +ero no las ha!, eso !a lo har el programador &ue
contratemos. /l final, si a caso el %efe nos dir donde colocar los $otones de
di$u%ado para &ue el programa sea $ueno de verdad.
Este tipo de casos tendr'an &ue conllevar incluso penas de crcel. Es por
ello &ue el art'culo 1 es fundamental. :as prcticas como *sta llevan a un
total desperdicio de tiempo, dinero, paciencia ! todo tipo de recursos.
@amos ahora con el segundo art'culo de nuestro estatuto:
[ 14 ] Tecnologas Libres para Sntesis de Imagen 3D
Artculo 2: El uso del 4o5er4oint y herramientas similares
ser perseguido y castigado&
/dmito &ue puede parecer demasiado radical. Cierto es &ue a la hora
de e4poner algo a un p9$lico, unas transparencias pueden venir $ien. +ero
en los 9ltimos a1os, estas herramientas se han convertido en el 9nico
o$%etivo de tra$a%o de un montn de desorientados. Es uno de los casos
donde el medio aca$a convirti*ndose en el propio fin. ;/ cuntas
presentaciones vac'as de contenido hemos de asistir para darnos cuenta<
-na herramienta &ue permite a cual&uiera hacer una presentacin
consigue implantar la creencia de &ue todos tienen algo important'simo
&ue decir.
/hora mismo la relacin se1alAruido en cuanto a presentaciones es
$a%'sima en todas partes. Bontones de personas en esta industria llegan
cada d'a al tra$a%o para a$rir inmediatamente el poerpoint ! ponerse a
hacer la presentacin de ma1ana. @endemos humo, pero vendemos humo
con colorines, animaciones, grficas dinmicas ! so$re todo, mucha negrita
e imgenes del catlogo "$ussines".
,adie &ue &uiera decir algo necesita esa parafernalia. #iempre se han
hecho "diapositivas", pero se hac'an de otra forma, ! no se hac'a una
presentacin cada dos d'as. :o &ue estos programas han creado, es una
"cultura del poerpoint". El lector puede estar pensando ahora &ue el
hecho de &ue un cuchillo pueda usarse para matar, no &uiere decir &ue
ha!a &ue prohi$ir los cuchillos. Efectivamente, pero si nos fi%amos en el
art'culo 2, nadie ha$la de prohi$ir las herremientas. #e trata de perseguir !
castigar su uso. ;Cuntas veces hemos &uerido decir "Ese grfico no dice
nada, es ms, causa confusin, vas a ir a la carcel chaval" <. Cue ocurra
alguna ve. es acepta$le, pero no &ue ocurra todos los d'as, miles de veces,
en todas las empresas al mismo tiempo.
? finalemente vamos con el tercer ! 9ltimo art'culo por ahora:
Artculo 3: 6e proh!e el desarrollo de ning7n
programa #ue no sea suscepti!le de ser
programado por una sola persona&
Esto no &uiere decir &ue no puedan tra$a%ar varios en *l. +ero un programa
&ue no pueda ser hecho por un slo programador est, sencillamente, mal
pensado. ;Cu* pasa con los grandes sistemas comple%os< /ntiguamente se
tend'a al desarrollo de grandes programas monol'ticos &ue ten'an un
montn de funcionalidades. Enormes sistemas de gestin &ue controla$an
hospitales enteros, sistemas operativos &ue lo controla$an todo con el
mismo cdigo.
Qu pasa en este pas? [ 15 ]
/hora, la tendencia en el mundo ha cam$iado. Esos grandes sistemas se
desglosan en pe&ue1os programas. :os sistemas de gestin se componen
ahora de muchos servicios distintos &ue se interconectan usando m9ltiples
protocolos. :os programas comple%os de por si se reducen al m'nimo de
funcionalidades ! se de%an puertas a la integracin con otros programas
&ue hacen otras cosas.
Con esta pol'tica de desarrollo, sin duda me%or &ue la otra, se consiguen
programas &ue hacen unas pocas cosas mu! $ien. :os programas son ms
pe&ue1os ! por tanto ms manteni$les. Dncluso los sistemas operativos se
dividen ahora en mdulos totalmente independientes encargados de tareas
espec'ficas. :os clientes prefieren tam$i*n estas soluciones, por&ue
cuando &uieren a1adir algo nuevo al sistema no tienen &ue reempla.arlo
todo. +ueden comprar el sistema de visuali.acin de esta empresa, la
gestin de $ases de datos de esta otra ! el interfa. e$ de la de ms all.
+ero a&u' los empresarios no parecen ha$erse dado por enterados. #alvo
unas pocas mu! $uenas, la ma!or'a de pe&ue1as empresas &ue &uieren
crecer se o$sesionan con sacar un programa &ue lo haga todo. )iene &ue
servir para ha$lar por tel*fono, para gra$ar cdEs, para gestionar los
clientes, para mandar un mail, etc ... #lo las grandes compa1'as parecen
adaptarse a este nuevo modelo de desarrollo. +ero es &ue en Espa1a, *stas
llevan tiempo haciendo meras tareas de fontaner'a informtica. En las
pe&ue1as &ue se dedican a nuevos pro!ectos se cometen muchos errores.
Dncluso aun&ue pare.ca &ue los productos &ue se plantean son mu!
especiali.ados, al final se le pide al programador &ue implemente todo tipo
de funcionalidades &ue en ese programa no tienen ning9n sentido. El
resultado son programas &ue hacen un montn de cosas, pero ninguna
$ien.
(a! unos pocos e%emplos de empresas en Espa1a &ue triunfan con
productos espec'ficos ! de calidad. ,o slo por el personal de calidad,
adems tienen mu! claro el o$%etivo del desarrollo. +or desgracia empresas
as' no a$undan. +ero con pocas &ue sean, se demuestra &ue no es
imposi$le.
/&u' aca$a este primer $oceto del estatuto del programador. /un&ue son
slo tres directivas, son cruciales para arreglar el desastre local &ue
sufrimos. )odo el mundo est invitado a intentar completar la lista de
art'culos en caso de &ue me ha!a olvidado de alg9n aspecto.
/hora llegamos a la pregunta final. ;Cu* hacer< :o primero a$andonar ese
tipo de empresas ! convertirnos en su competencia. Buchos
programadores deciden mu! acertadamente ponerse a tra$a%ar por cuenta
propia. ,o todo el mundo se atreve de$ido a diversas ra.ones. Entre ellas
ha! dos mu! comunes.
[ 16 ] Tecnologas Libres para Sntesis de Imagen 3D
:a primera es el miedo a perder la tran&uilidad de &ue vas a co$rar a final
de mes. +ero esta tran&uilidad no es ms &ue una ilusin. #i en un
momento dado la empresa de%a de funcionar de%ars de co$rar. ? el
pro$lema es &ue no puedes hacer nada al respecto. Es decir, es posi$le,
mu! posi$le, &ue un grupo de inconscientes estrelle la empresa contigo
dentro. Cuando slo dependes de ti mismo o de otros como t9 al mismo
nivel, s' se puede hacer algo. 8epende slo de &ue hagas las cosas $ien.
:a segunda es una e4tra1a concepcin de la moral. (a! gente &ue
considera incorrecto o desleal irse de una empresa para ir a hacerle la
competencia. (a! &ue deshacerse de esa $arrera imaginaria. :a empresa
no dudar'a ni un segundo en prescindir de tus servicios si !a no te necesita.
)ampoco vers un c*ntimo de la ri&ue.a &ue ha!as podido generar ms
all de tu m'sero sueldo. ,o slo se de$e hacer por uno mismo, los
programas merecen ser $ien hechos.
+or desgracia uno no puede decirle a su %efe &ue va a ser 1" veces ms
productivo ! &ue &uiere co$rar por lo tanto die. veces ms. )omo prestada
esta frase de +aul 7raham. Entre sus ensa!os podemos encontrar un
montn de conse%os a la hora de lan.ar iniciativas de empresa. /l contrario
&ue !o, *l es un hom$re con e4periencia en este campo. #u coleccin de
"$om$a.os" empie.a en el 2F con un sistema de comercio electrnico &ue
vendi a ?ahoo ! &ue le hi.o inmensamente rico.
G$viamente no estamos ha$lando del t'pico &ue hi.o dinero vendiendo
/8#: ! &ue ahora &uiere hacer programas. Estamos ha$lando de un gran
programador.
:a falta de am$icin es otro gran pro$lema local. ,adie piensa ni de le%os
&ue puede llegar a hacerse inmensamente rico con un producto. /lgunos lo
dicen, pero ni ellos ni los &ue les rodean creen realmente en ello. :a gente
aspira a ganar un poco de dinero para comprar un HBI ! poder presumir
en el $arrio como "hom$re de negocios".
Como advertencia a todo a&u*l &ue va!a a salir al mundo la$oral de la
programacin como asalariado, a&u' viene lo &ue encontrar:
Salarios bajos. 8ependiendo de la regin, el sueldo de
principiante va desde los 1F""" a los 2J""" euros al a1o.
)eniendo !a cierta e4periencia se puede llegar con suerte a los
3"""". / modo de comparacin, en Dnglaterra, un sueldo de
programador raso es de F"""" li$ras. -nos K"""" euros. /l igual
ms o menos &ue el resto de Europa. ,o mencionamos !a los
sueldos de Estados -nidos por no deprimir al lector. :a e4cusa del
precio de la vida !a no es vlida. /un&ue un 8@8 cueste ms &ue
a&u', en /lemania se puede al&uilar un piso por 3"" euros.
Qu pasa en este pas? [ 17 ]
Rgimen de desprecio. 7eneralmente se apila a los
programadores en alg9n cuarto apartado. #i viene alguien
importante, o simplemente, el gerente de otra empresa, en caso de
&ue los llegue a ver ser a modo de "? estos son los
programadores". Dgual &ue si se tratara de una %aula de monos.
Buchas veces he &uerido colocar un cartel de "no den de comer a
los programadores". Este trato se de$e a muchos motivos. +ero de
todos ellos, el ms sangrante es el miedo. El miedo a &ue alguien
de fuera aca$e haciendo una oferta a alguno de los programadores
para &ue se va!a con *l.
Total anonimato. ,o tienes derecho a ning9n reconocimiento
e4terno por tu tra$a%o. El producto es de la empresa. Be%or dicho,
del presidente de la empresa. ,adie vendr a felicitarte por lo &ue
has hecho ! mucho menos vers un c*ntimo de los $eneficios. En
este pa's ha! empresarios &ue ser'an capaces de poner a Biguel
/ngel a esculpir, hacer millones con sus esculturas ! pagarle una
miseria de sueldo. +or&ue al fin ! al ca$o, el mrmol &ue usa es
m'o ... ;)e gustan las esculturas &ue hace mi empresa<
#i no nos &ueda otro remedio &ue tra$a%ar para una de estas empresas
por&ue ha!a &ue pagar una hipoteca o cual&uier cosa, mi conse%o es el
siguiente: Lamas regalar ni una sola idea a la empresa. #i se te ocurre
cual&uier forma de hacer me%or las cosas, lo haces en casa. :o desarrollas
por tu cuenta ! !a lo venders, lo dars como cdigo li$re o lo &ue
apete.ca. ?a &ue nos tratan como a ganado, actuemos como ganado. ,o
hacer nada &ue no se ordene e4pl'cita ! detalladamente.
,o ha sido mi intencin mostrar al programador como un individuo
e4tramadamente valioso ni superior al resto de los mortales. El *nfasis no
se de$e a una especial estima por la profesin sino al profundo agu%ero en
el &ue se ha!a hundida. +ero e4iste el riesgo de &ue como pas con otros
colectivos marginados, se produ.ca un efecto re$ote hacia la
so$revaloracin. Convendr'a no esperar a &ue la herida fuera demasiado
profunda o &ue todos ha!an emigrado hacia otros paises. Este mal no es
adems e4clusivo de la industria del softare. )odos conocemos el
fenmeno de la fuga de cere$ros &ue sufren todas las disciplinas
intelectuales en Espa1a. Este caso es slo uno ms de la lista.
[ 18 ] Tecnologas Libres para Sntesis de Imagen 3D
Referencias
Ensa!os de +aul 7raham:
http://www.paulgraham.com/articles.html
#o$re +oer+oint:
http://www.norvig.com/Gettysburg/
http://www.unc.edu/~healdric/Powerpoint.html
YafRay de la Y a la y
Reflexiones sobre los Proyectos de Software Libre
Luis Fernando Ruiz Gago
luis@yafray.org ::
uando uno oye hablar del software libre por primera vez
le asaltan un montn de dudas. Quien desarrolla ese
software? Por qu se llama libre y no gratis? !"ratis#?
Por qu se desarrolla y $mo? %i los roedores pudieran roer
robles& 'u(ntos robles roer)a un roedor? *ntentaremos $ontes+
tar a estas preguntas en el presente do$umento& siguiendo el
$i$lo de vida del proye$to en el que me he visto involu$rado ,en
el sentido m(s amplio de la palabra- en los .ltimos a/os:
YafRay.
'
YafRay. Bajo este nombre de lavavajillas se esconde Yet Another Free
Raytracer, un raytracer gratuito y multiplataforma, creado por mi gran
amigo Alejandro Conty Estvez. Un raytracer es un programa que se
vale de una tcnica llamada raytracing para generar imgenes
fotorrealistas con un computador.
Su desarrollo comen! en "ulio de #$$#. %nicialmente se trataba de un
raytracer bsico para el sistema operativo &'U()inu*. +osteriormente se
le fueron a,adiendo funcionalidades, una de las ms importantes fue el
cargador de escenas en un formato propio utiliando -.). /e este modo
fue posible la e*portaci!n de escenas desde programas de modelado para
la posterior generaci!n de la imagen utiliando YafRay.
0ste 1ec1o produjo un gran inters en comunidades internacionales
relacionadas con el mundo de los grficos tridimensionales 20lysiun 3a1ora
Blender 4rtists3, Blender.org, 5ings6/.org, entre otras7, crendose
programas que permit8an la e*portaci!n de escenas desde los modeladores
ms importantes dentro del soft9are libre como son Blender y
Wings3D.
:omo fruto de ese inters se ampli! el desarrollo de YafRay a otros
sistemas operativos a parte de &'U()inu*. +rimero se llev! a cabo la
traducci!n para sistemas operativos 5indo9s. /e manera casi simultnea
se desarrollaron versiones para .ac ;S -.
4ctualmente, YafRay se basa en un modelo de plugins, en el cual el motor
de render est contenido en una librer8a separada del cargador -.). /e
esta manera, es relativamente sencillo construir cargadores o invocarlo
[ 19 ]
F
i
l
o
s
o
f

a
[ 20 ] Tecnologas Libres para Sntesis de Imagen 3D
desde otros programas. 4 su ve, el motor de render 2librer8a principal7 es
el encargado de cargar, en tiempo de ejecuci!n, los plugins relativos a los
mtodos de iluminaci!n 2shaders, luces, etc7. 0sta modularidad 1a
facilitado su integraci!n con Blender.
0n un principio todo el trabajo de desarrollo reca8a sobre 4lejandro :onty.
4 medida que pasaba el tiempo y el inters por YafRay aumentaba,
aparec8an nuevos desarrolladores y colaboradores. )o que empe! como
un proyecto personal para pasar las 1oras del verano de #$$#, se acab!
convirtiendo en un largo proyecto de soft9are libre que involucra a
programadores de todo el mundo y con una comunidad de cientos de
usuarios.
4ntes de entrar de lleno en el proyecto YafRay, me gustar8a sentar las bases
del modelo de soft9are libre, sin pretender un anlisis e*1austivo sobre el
ciclo de vida del mismo. 'o 1ablar aqu8 sobre 1erramientas de ingenier8a
o de desarrollo de una manera profunda. 0l objetivo de este documento,
que es el apoyo a la c1arla del mismo nombre, es introducir al lector en la
problemtica del soft9are libre, refle*ionando sobre las motivaciones de
sus desarrolladores, entendiendo el funcionamiento de las comunidades
que orbitan alrededor de estos proyectos y sopesando las ventajas e
inconvenientes de este modelo.
0*isten multitud de estudios a este respecto muc1o ms precisos que este,
en su mayor8a elaborados con rigor cient8fico por personas ms
capacitadas, pero <'o dejes de leer a=n> 4unque no vayas a encontrar aqu8
una fuerte base te!rica de ingenier8a del soft9are 2libre7, puede que te
resulte interesante la e*periencia del desarrollo del YafRay, c!mo se nutre
de aportaciones desinterasadas y sobre todo, c!mo esta peque,a
comunidad de desarrolladores y usuarios se apoya en otras comunidades
mayores.
Software Libre
0s de suponer que alguien que lee sobre la evoluci!n de proyectos de
soft9are libre sabe a qu se refiere ese tipo de soft9are. +ero como todos
1emos sido lectores despistados en alguna ocasi!n, 1ay que comentar una
ve ms que el soft9are libre, seg=n la definici!n del proyecto &'U, es
aquel soft9are que brinda al usuario las siguientes libertades?
Libertad 0: )a libertad de usar el programa, con cualquier
prop!sito.
Libertad 1: )a libertad de estudiar c!mo funciona el programa, y
adaptarlo a tus necesidades. 0l acceso al c!digo fuente es una
condici!n previa para esto.
YafRay de la Y a la y [ 21 ]
Libertad 2: )a libertad de distribuir copias, con lo que puedes
ayudar a tu vecino.
Libertad 3? )a libertad de mejorar el programa y 1acer p=blicas
las mejoras a los dems, de modo que toda la comunidad se
beneficie. 0l acceso al c!digo fuente es un requisito previo para
esto.
0n internet se puede encontrar una inmensa cantidad de literatura,
documentaci!n y @4ABs sobre el esta filosof8a. 0l lector que no est
familiariado con el trmino deber8a detenerse en este punto y buscar
informaci!n al respecto, no s!lo para poder seguir con fluide este
documento, sino porque la idea que subyace bajo el concepto es digna de
ser meditada. 'o 1ay que olvidar que dic1a idea se 1a convertido para
muc1os en toda una forma de vida.
Auis el soft9are libre pareca una idea actual, una vuelta de tuerca a las
protestas contra el sistema. %ncluso en 00UU 1an llegado a tac1ar de
actitudes comunistas los principios en los que se basa. +ero realmente,
aunque estemos acostumbrados al modelo de soft9are propietario
2comercial7, en los inicios de la informtica era imposible concebir el
soft9are como un producto aislado, susceptible de ser vendido. )as
licencias por el uso del soft9are y las restricciones para ejecutarlo o
copiarlo, sencillamente no e*ist8an.
0n aquellos tiempos los programas y las mquinas que los ejecutaban
estaban 8ntimamente ligados. 'o e*ist8a el concepto de programa como
piea separada que se tiene 1oy. Campoco 1ab8a usuarios domsticos, sino
que las personas que ejecutaban los programas sol8an tener muc1os
conocimientos de programaci!n y por lo general eran cient8ficos e
ingenieros.
0ntre estos usuarios e*pertos, lo normal era intercambiar y mejorar los
programas, compartiendo sus modificaciones, que a veces recib8an el
nombre de hacks 2de a18 la palabra hacker, tan mal utiliada en los =ltimos
tiempos7.
Uno de aquellos usuarios e*pertos era Ri!ard "at!e# $tall%an 2a
veces nombrado por el acr!nimo R.S, basado en su nombre de usuario en
los computadores del .%C7, un personaje a la ve genial y controvertido,
imprescindible para comprender el soft9are libre.
0ste f8sico, graduado en DEFG en Harvard, trabajaba en el laboratorio de
inteligencia artificial del %nstituto de Cecnolog8a de .assac1ussetts 2.%C7
desde DEFD. 0n su laboratorio dispon8an de una impresora que ten8a ciertos
problemas con la alimentaci!n de papel, de manera que se atascaba
1abitualmente y no 1ab8a otra forma de descubrirlo que desplaarse 1asta
donde estaba.
[ 22 ] Tecnologas Libres para Sntesis de Imagen 3D
Ric1ard se puso en contacto con los fabricantes, con la idea de modificar el
soft9are que controlaba la impresora y 1acer que enviase una se,al al
atascarse, de forma que no se perdiese tanto tiempo de trabajo.
Sin embargo, stos se negaron a facilitarle el c!digo fuente, que son como
Ilos planosI de un programa y que 1ace posible modificar su
comportamiento. 0ste episodio le contrari! muc1o e 1io que terminase de
consolidarse su idea de que el c!digo fuente de los programas ten8a que
estar accesible para todo el mundo.
.ovido por este deseo, abandon! el .%C en enero de DEJG, para iniciar el
&royeto '(). &'U es un acr!nimo recursivo que significa GNU's Not
Unix, &'U 'o 0s U'%-, en referencia a que el proyecto busca desarrollar
un sistema operativo de tipo U'%-, pero libre.
0n sus comienos, el proyecto &'U se concentr! en desarrollar las
1erramientas necesarias para construir un sistema operativo, como
editores y compiladores y en las utilidades bsicas para la gesti!n del
sistema. Sobre DEJK, Ric1ard Stallman cre! la licencia &+) 2General
Public License7 como mecanismo para proteger el soft9are libre,
sustentado sobre el concepto de copyleft. .ediante este concepto, se le da
la vuelta a la idea de copyright, definiendo las cuatro libertades
mencionadas anteriormente.
Uno de los conceptos que se suelen meclar con el soft9are libre
2reconoco que me sucede 1abitualmente7 es el de Open Source c!digo
abierto". +odemos considerarlo como un error justificable, ya que en la
prctica el soft9are #pen $ource y el soft9are libre comparten las mismas
licencias. 4unque la @S@ 2Free $oft%are Foundation7 opina que el
movimiento #pen $ource es filos!ficamente diferente del movimiento del
soft9are libre.
4pareci! en DEEJ con un grupo de personas, entre los que cabe destacar a
Eri $* Ray%ond 2autor de I)a :atedral y el BaarI y de fetch&ail7 y
Br+e ,erens 2padre del proyecto 'ebian7, que formaron la #pen $ource
(nitiati)e 2;S%7. Buscaban darle mayor relevancia a los beneficios prcticos
del compartir el c!digo fuente, e interesar a las principales casas de
soft9are y otras empresas de la industria de la alta tecnolog8a en el
concepto. 0stos defensores ven que el trmino #pen $ource evita la
ambigLedad del termino %ngls free en free soft%are.
.uc1a gente reconoce el beneficio cualitativo del proceso de desarrollo de
soft9are cuando cualquiera puede usar, modificar y redistribuir el c!digo
fuente de un programa. 0sta es la idea subyacente de la obra de Raymond,
I)a :atedral y el BaarI, que analiaremos ms adelante. 0l movimiento
del soft9are libre 1ace especial nfasis en los aspectos morales o ticos del
soft9are, viendo la e*celencia tcnica como un producto secundario
YafRay de la Y a la y [ 23 ]
deseable de su estndar tico. 0l movimiento #pen $ource ve la e*celencia
tcnica como el objetivo prioritario, siendo la compartici!n del c!digo
fuente un medio para dic1o fin. +or dic1o motivo, la @S@ se distancia
tanto del movimiento #pen $ource como del propio trmino.
Ingeniera del Software
)a ingenier8a de soft9are es la rama de la ingenier8a que crea y mantiene
las aplicaciones de soft9are aplicando tecnolog8as y prcticas de las
ciencias computacionales, manejo de proyectos, ingenier8a, el mbito de la
aplicaci!n, y otros campos.
0ste trmino es relativamente nuevo, ya que no apareci! 1asta finales de
los M$, cuando ya e*ist8an grandes compa,8as informticas. 0n aquella
poca, una serie de estudios sobre desarrollo de soft9are llegaron a la
conclusi!n de que e*ist8a una Icrisis del soft9areI. 0sta crisis tiene los
siguientes s8ntomas?
0l soft9are no es fiable y necesita de un mantenimiento
permanente.
0l soft9are se entrega muy a menudo con retrasos y con unos
costes superiores a los presupuestados.
4 menudo el soft9are es imposible de mantener, carece de
transparencia y no se puede modificar ni mejorar.
:omo soluci!n a esta crisis surge la idea de aplicar un proceso de
ingenier8a para el desarrollo de soft9are. Seg=n la definici!n del %000, la
ingenier8a del soft9are es Iun enfo*ue siste&+tico y cuantificable al
desarrollo, operaci!n funciona&iento" y &anteni&iento del soft%are- es
decir, la aplicaci!n de la ingeniera del soft%areI.
)a ingenier8a, no s!lo la del soft9are, pretende aplicar con criterio el
conocimiento matemtico y cient8fico obtenido a travs del estudio, la
e*periencia, y la prctica. 0n la mayor parte de las ramas de la ingenier8a
es posible cuantificar con e*actitud plaos, recursos 1umanos, costes y
tcnicas que lleven a cabo un determinado producto. +ero cuando ese
producto se trata de soft9are surgen los problemas, ya que a=n no se 1an
encontrado mtodos de desarrollo y tcnicas que permitan producir
soft9are de gran calidad con unos recursos limitados.
4 pesar de que la ingenier8a del soft9are 1a conseguido notables *itos, no
es menos cierto que no 1a sido capa de superar la crisis del soft9are. Hay
quien piensa que ms que de una crisis, estamos 1ablando de una
[ 24 ] Tecnologas Libres para Sntesis de Imagen 3D
enfermedad cr!nica. 0s una refle*i!n plausible, ms a=n viendo como en
los =ltimos a,os se 1an retomado viejos caminos bajo nuevas f!rmulas de
ingenier8a. Auien sabe, quis sean los nuevos modelos de desarrollo los
que permitan al soft9are librarse de esta crisis, 1asta 1oy irresoluble.
Ingeniera del Software tradicional: Software
propietario
/entro del modelo propietario, la propia forma de desarrollar soft9are
1a sido quien 1a llevado a la ingenier8a del soft9are a la crisis. 'o es una
afirmaci!n a la ligera ya que, como afirma &regorio Robles, Iel for&ato
binario del soft%are, la opacidad en los &odelos de negocios, los secretos
y barreras co&erciales se encuentran entre las principales causas *ue
han i&posibilitado estudios cuantitati)os y cualitati)os a gran escala del
soft%are cuyos resultados pudieran ser )erificados siste&+tica&ente por
e*uipos de in)estigaci!n independientesI.
0s parad!jico ver como el propio modelo de desarrollo destinado a evitar
que un soft9are robusto y potente pueda ser aprovec1ado por la
competencia, impide la consecuci!n del objetivo primordial? :onseguir un
soft9are robusto y potente.
Ingeniera del Software Libre
'o 1ay que entender al soft9are libre como un competidor directo
sobre el soft9are propietario. Hay diferencias de base, como las raones
motivacionales, casi filos!ficas, de los desarrolladores. Campoco se puede
comparar a nivel econ!mico, ya que el soft9are libre sigue sus propias
pautas de mercado y desde luego, no suele coincidir con el soft9are
propietario en la forma de obtener beneficios. Y lo que es ms importante,
la forma de producir soft9are es totalmente diferente.
)a ingenier8a del soft9are no es ajena a todo esto y desde 1ace unos cinco
a,os viene estudiando este nuevo modelo de desarrollo. 0n un principio
podemos pensar que la propia naturalea del desarrollo de soft9are libre
va a 1acer fracasar cualquier intento de aplicaci!n de ingenier8a. +or
ejemplo, si en el caso propietario la medici!n de costes es dif8cilmente
cuantificable, en el caso del soft9are libre tendremos que acudir a magos y
1ec1iceros para que nos resuelvan la papeleta. Sin embargo, la
transparencia en todos los procesos, la disponibilidad del c!digo y en la
mayor parte de los casos de todas las versiones de desarrollo, permiten que
podamos analiar profundamente cualquier proyecto.
YafRay de la Y a la y [ 25 ]
'o debemos caer en la tentaci!n de reducir el anlisis a un simple punto de
vista estad8stico. Hay muc1as caracter8sticas dentro de un desarrollo libre
que caen dentro del campo de lo sociol!gico. 4naliar la comunidad de
usuarios y desarrolladores que orbita alrededor de un proyecto de soft9are
libre nos dar una gran informaci!n sobre la naturalea de las decisiones,
fallos o aciertos, que se 1ayan tomado durante el desarrollo. 'uevamente
el carcter abierto de estas comunidades nos brinda la posibilidad del
anlisis, ya que las bases del conocimiento suelen estar contenidas en foros
y listas de distribuci!n.
)as comunidades son el autntico motor del soft9are libre. Habitualmente
las forman indistintamente usuarios y desarrolladores. 'o suele estar muy
clara la distinci!n entre ambos roles ya que, incluso los usuarios que no
generan c!digo, se convierten en parte del proceso de desarrollo realiando
una de las labores ms tediosas en la producci!n de soft9are? las pruebas.
0ste es uno de los grandes aportes del soft9are libre, puesto que los
usuarios influyen, directa e indirectamente, en el desarrollo. )a evoluci!n
de la comunidad pues, forma parte de la evoluci!n del propio soft9are.
Neamos el caso de YafRay. 0n un principio no era ms que un proyecto
personal de su autor, planteado como programa independiente y con unas
pocas funcionalidades. 0sto suele ser una constante en el soft9are libre,
donde los proyectos surgen por acciones puramente personales.
'ormalmente el desarrollador decide publicar el c!digo cuando ve limitada
su capacidad, no necesariamente en conocimientos, sino que tambin se
suele deber a falta de tiempo para realiar todo el trabajo. 0n el caso de
YafRay el c!digo se liber! desde un principio, ya que no pretend8a ser ms
que un e*perimento del autor con el fin de aprender y aplicar conceptos
sobre raytracing.
)os usuarios de la comunidad fueron los que convirtieron el proyecto en
algo ms serio y de alguna forma, marcaron el camino sobre qu
funcionalidades deber8an ser implementadas primero. 4dems crearon la
necesidad de integrar este motor de render al modelador Blender, ya que
en aquellos momentos Blender sufr8a de muc1as carencias en el proceso de
renderiado. 0sa Opresi!nP de la comunidad llev! a YafRay a lo que es
a1ora, un raytracer tan funcional que puede ser 2y de 1ec1o, es7 utiliado
profesionalmente.
4 d8a de 1oy tiene una alta integraci!n con Blender y 5ings6/, y el
proyecto a crecido tanto que en estos momentos se est llevando a cabo
una fase de redise,o, con el fin de solventar ciertas problemas debidos a
este nuevo rumbo que la comunidad 1a querido que YafRay tomara.
4dems, el nuevo redise,o se est pensando para que atraiga a ms
desarrolladores a la comunidad, y los que ya e*isten se sientan ms
involucrados tomando decisiones Odesde abajoP.
[ 26 ] Tecnologas Libres para Sntesis de Imagen 3D
+ero... QAuienes son los miembros de las comunidadesR 4l 1ablar de
comunidades de soft9are libre nos suele venir a la cabea un grupo de
frikis discutiendo sobre $tar .ars y las posibles consecuencias de
enfrentar a /at&an y a La 0asa. 0s una injusticia que a las personas que
amamos el soft9are libre se nos encasille de esta manera, as8 que es 1ora
de desmitificar la leyenda. /e todos modos, espero que quede claro que La
0asa patear8a el culo a /at&an.
)as comunidades de soft9are libre son actualmente el objetivo de estudio
de economistas, psic!logos y soci!logos. Se trata de una nueva forma de
comunidad virtual, con reglas y jerarqu8as propias, y en muc1os aspectos
totalmente diferentes a las que conocemos en la sociedad tradicional.
Saber quin forma parte de estas comunidades y cules son sus
motivaciones es determinante para entender este movimiento. 0n el caso
de los desarrolladores las inc!gnitas son a=n mayores, debido a que en
una sociedad de consumo es dif8cil entender por qu las personas dedican
su tiempo libre a una actividad, aparentemente costosa y con beneficios
directos prcticamente nulos.
Hay una gran cantidad de recientes estudios cient8ficos que intentan
definir el perfil del desarrollador de soft9are libre. 0n el documento
I%ntroducci!n al soft9are libreI de la U;: podemos leer?
1Los desarrolladores de soft%are libre son general&ente personas
2!)enes3 La &edia de edad est+ situada en torno a los 45 a6os3 La
)arian7a de la edad es &uy grande, ya *ue el grupo predo&inante se
encuentra en una hor*uilla *ue )a desde los 48 a los 49 a6os, siendo
la &ediana : el )alor *ue aparece con &ayor frecuencia : los 4; a6os3
<s interesante obser)ar c!&o la edad de incorporaci!n al
&o)i&iento de soft%are libre tiene sus &+xi&os entre los 8= y 4>
a6os, siendo especial&ente pronunciada entre los 48 y 4; a6os , lo
*ue e*ui)aldr?a a la edad uni)ersitaria3 <sta e)idencia contrasta con
la afir&aci!n de *ue el soft%are libre es cosa principal&ente de
adolescentes, aun*ue su presencia es e)idente alrededor de un 4@A
de los desarrolladores tiene &enos de 4@ a6os"3 <n definiti)a,
pode&os )er co&o los desarrolladores suelen ser &ayoritaria&ente
)eintea6eros un B@A", &ientras *ue los &enores de 4@ y los
&ayores de ;@ se reparten a partes iguales el 9@A restante.C
0n el mismo te*to se 1ace referencia a otros estudios, en los que se llega a
la conclusi!n de que la mayor parte de los desarrolladores, el M$S, tienen
pareja e incluso un DMS tiene 1ijos. :on esto se acaba de desmoronar el
mito del desarrollador de soft9are libre como una persona adolescente y
aislada, sin ms conocimientos ni relaci!n con el mundo e*terior que los
que llegan a travs de su computadora. 0l 1ec1o de que el perfil del
desarrollador coincida con el del universitario medio no deber8a
c1ocarnos, a fin de cuentas el movimiento del soft9are libre tiene sus
YafRay de la Y a la y [ 27 ]
or8genes en ambientes universitarios. Ric1ard Stallman recuerda su
trabajo en el Artificial (ntelligence Lab del .%C en los a,os setenta,
cuando el soft9are compartido se consideraba parte fundamental del
proceso?
1A nuestro soft%are no lo lla&+ba&os soft%are libre, por*ue ese
tDr&ino aEn no exist?a, pero es exacta&ente lo *ue era3 Fuando gente
de otra uni)ersidad o una e&presa *uer?an un progra&a para
hacerlo co&patible y utili7arlo, se lo prest+ba&os con &ucho gusto3
$i )e?as a alguien usar un progra&a desconocido *ue te interesaba,
sie&pre pod?as pedir *ue te de2aran )er el c!digo fuente para as?
poder leerlo, ca&biarlo o des&ontarlo para crear un nue)o
progra&a.C
Sin embargo, otro de los grandes mitos se torna real en las encuestas. 0l
soft9are libre es desarrollado en su mayor parte por varones. )a presencia
de las mujeres en las comunidades var8an entre el DS y un 6S, compitiendo
d=ramente por el protagonismo en las grficas estad8sticas con el error de
muestreo...
.ientras que es relativamente sencillo saber la distribuci!n de los
desarrolladores seg=n su edad, se*o y estatus social, averiguar las
motivaciones por las cuales se emplea tiempo y, en ocasiones, dinero,
resulta una tarea muc1o ms complicada. 4 veces los propios
desarrolladores no tienen demasiado claras las motivaciones o, lo que es
muy 1abitual, e*iste una conjunci!n de varios factores. /esde luego las
encuestas nos sirven para eliminar posibles causas de participaci!n.
)a primera causa en ser descartada es la econ!mica porque, aunque es
totalmente factible obtener beneficios econ!micos con el soft9are libre,
estos beneficios nunca se podrn obtener de una forma directa por la venta
de licencias, como en el caso del soft9are propietario. 4=n as8, el K$S de
los desarrolladores encuestados afirman 1aber obtenido recompensa
econ!mica como causa de su implicaci!n en un proyecto de soft9are libre.
Sin embargo, 1ay muc1os que no lo ven tan claro. 0l propio Ric1ard
Stallman, ante la pregunta de qu debe 1acer un desarrollador de soft9are
libre para ganar dinero, suele responder? Ipuede traba2ar de ca&areroI.
+ersonalmente opino que quitando la palabra libre a la pregunta, la
respuesta no var8a.
4l ser preguntados por su ocupaci!n profesional, los desarrolladores se
definen como ingenieros soft9are 266S7, estudiantes 2#DS7,
programadores 2DDS7, consultores 2D$S7, profesores de universidad 2FS7,
etc. 0s interesante observar como, a pesar de que en el soft9are libre no se
aplican tcnicas clsicas de ingenier8a del soft9are, 1ay tres veces ms de
personas que se definen a s8 mismos como ingenieros de soft9are antes
que programadores.
[ 28 ] Tecnologas Libres para Sntesis de Imagen 3D
Una ve descartada la motivaci!n econ!mica se suele recurrir al ego de los
desarrolladores. Si el lector estaba pensando en desarrollar soft9are libre
buscando la fama, puede ir olvidando la idea. 0n el documento?
IFreeGlibre and open source soft:%are- $ur)ey and study : part (HI de
&1os1, &latt, Trieger y Robles 2#$$#7 se incluy! una pregunta, dirigida a
los desarrolladores, para que indicaran a qu colegas de una lista dada
conoc8an, no necesariamente de manera personal. )os resultados fueron
determinantes.
)a mayor parte de las personas conoc8an a pesos pesados del desarrollo,
personas como Stallman, -aza 2GN#0<7 o .orvalds 2Linux7, eran
conocidas por la prctica totalidad de los encuestados. 'i
que decir tiene que son personas que se dedican a algo ms que al
desarrollo y que tienen grandes connotaciones filosofico31ist!ricas dentro
del mundo del soft9are libre. )o curioso es que otros grandes
desarrolladores que ven8an en la lista, como /0rg $!illing 2cdrecord7,
"aro ,ressenti 'ritti 2Galeon7, '+ent!er Barts! 2xine7 o Bryan
Andre#s 2Apache toolbox7 ten8an el mismo grado de popularidad que
.artin Hoffstede o 4ngelo Roulini, personas ine*istentes y 1bilmente
a,adidas por los encuestadores para averiguar el margen de error de las
encuestas.
4s8 que, amigo lector, olvide el desarrollo del soft9are libre como ve18culo
para obtener 1a%a y 1ort+na. 4 menos, claro est, que sea realmente
bueno sirviendo copas y que su aspiraci!n sea obtener la misma fama que
las personas que no e*isten.
4unque no se 1an realiado estudios rigurosos, podemos afirmar que el
proyecto YafRay encaja en los valores medios comentados anteriormente.
:omparte una parte de su comunidad con Blender. .artine 4albers de la
A&sterda& Uni)ersity reali! un estudio sociol!gico entre FGM personas
de la comunidad de desarrolladores y usuarios de Blender, entre los que
nos encontramos gran parte de los miembros del proyecto YafRay.
Se refrendaron algunos datos anteriormente comentados, como la baja
participaci!n femenina. 'o obstante, en el caso de Blender, la 1orquilla de
edad es mayor 2un JKS entre DK y 6K a,os7, sin duda debido a que e*iste
una gran cantidad de usuarios adolescentes. Sin embargo, s!lo un #DS de
los encuestados reconoc8an 1aber desarrollado parte del soft9are.
Un dato interesante es que el EDS de los encuestados se consideraban
usuarios de Blender, lo cual supone que los desarrolladores son, adems,
usuarios del producto final.
0n cuanto a las motivaciones que llevan a las personas a formar parte de la
comunidad de Blender, la respuesta obtenida fu la siguiente 2ordenada de
mayor a menor motivaci!n7?
YafRay de la Y a la y [ 29 ]
0ntretenimiento. +articipar por diversi!n.
4ltruismo. Auerer ayudar a la gente sin obtener nada a cambio.
4yuda a la comunidad. +articipar porque estas comprometido con
la comunidad.
Reciprocidad. Auerer ayudar a la gente y esperar recibir algo a
cambio.
Reputaci!n. +articipar para labrarse una reputaci!n.
.ejoras en el soft9are. +articipar por querer o necesitar mejoras
en el soft9are.
Recompensa econ!mica. +articipar para ganar dinero.
:omo se ve, las motivaciones que se pueden considerar ms Iego8stasI son
las que estn menos presentes. /e 1ec1o, en el propio estudio se resalta la
inesperada posici!n del altruismo entre las motivaciones.
La atedral y el !azar
0n DEEF 0ric S. Raymond escribi! el primer documento que trataba de
describir las caracter8sticas de los modelos de desarrollo de soft9are libre,
comparndolas con el modelo propietario. 0l art8culo, como 1emos
mencionado antes, se titula I)a catedral y el baarI y se 1a convertido en
uno de los ms conocidos y criticados del mundo del soft9are libre, 1asta
el punto que para algunos supone el comieno de la ingenier8a del soft9are
libre.
Raymond establece una analog8a entre el modo de construir las catedrales
medievales y la forma de clsica de producir soft9are. 0n ambos casos
e*iste una distribuci!n de tareas diferenciada, en la que el dise,ador est
por encima de todo, controlando el desarrollo de la actividad. Cambin la
planificaci!n est totalmente detallada desde el principio, marcando las
funciones de cada uno de los participantes y las tcnicas que 1an de utiliar
para llevar a cabo su labor.
/entro de esta idea de catedral no s!lo est incluido el desarrollo clsico de
soft9are propietario. Raymond encuentra que proyectos de soft9are libre
como &'U o 'etBS/ estn fuertemente centraliados, ya que unas pocas
personas son las que realian el dise,o e implementaci!n del soft9are. Si
una persona quiere entrar a formar parte del equipo de desarrollo, los
supervisores del proyecto le asignaran un rol y una tarea. 4dems, este tipo
de proyectos tiene unas entregas del soft9are releases espaciadas en el
tiempo siguiendo una planificaci!n bastante estricta.
[ 30 ] Tecnologas Libres para Sntesis de Imagen 3D
0n contraposici!n al modelo de la catedral est, seg=n Raymond, el
modelo del baar. 0n un baar no e*iste una autoridad que controle todos
los procesos que se estn desarrollando ni que realice una planificaci!n de
lo que 1a de suceder. )os roles de los participantes son difusos, ya que los
vendedores se pueden convertir en clientes, y viceversa, sin indicaci!n
e*terna.
4l contrario que en el modelo de la catedral, en el baar 1ay entregas
tempranas del soft9are 2release early7. 0n el caso de YafRay, como se 1a
dic1o, se liber! desde prcticamente el primer momento. 0sto suele
motivar que aparecan rpidamente personas que ten8an el mismo
problema 2en el caso de YafRay, que quer8an desarrollar un raytracer7 o
que puedan estar interesadas en la soluci!n 2que necesitan lo que YafRay
les puede ofrecer7.
)as pruebas son, como se 1a comentado, una de las labores ms pesadas
en el desarrollo de soft9are. 4fortunadamente son un proceso altamente
paraleliable. )a release early de YafRay permiti! que muc1as personas se
pusieran a probar el soft9are simultneamente, llevando as8 a cabo la fase
de pruebas. Su uso aument! drsticamente cuando 4ndrea :arbone reali!
la primera versi!n de Yable, un e*portador de escenas desde Blender
programado en +yt1on. /e este modo 4ndrea, usuario de Blender, se
convirti! en desarrollador de parte del proyecto dentro del baar YafRay.
0ste tipo de relaci!n en que todo el mundo puede aportar algo es
altamente productiva. )os usuarios encuentran motivaci!n en encontrar,
notificar y corregir errores, ya que saben que su petici!n va a ser atendida
casi inmediatamente. 4dems e*iste cierta satisfacci!n personal por 1aber
aportado algo, algo as8 como un Iyo tambin 1e puesto mi granito de
arenaI de cara al reconocimiento de la comunidad. /e 1ec1o, algunas
comunidades se apoyan en una &eritocracia, es decir, las decisiones ms
importantes las toman las personas que ms aportan a la comunidad.
0l modelo del baar, con frecuentes entregas del soft9are, puede asustar a
usuarios que buscan la estabilidad. 4lgunos proyectos, como Blender,
mantienen ramas diferentes de desarrollo. Una ms estable, en la que las
nuevas funcionalidades s!lo se a,aden despus de muc1as pruebas,
asegurndose que no repercuten en la estabilidad del producto final. Y
otras e*perimentales como Cu1opoo, the e)il tree o la reciente rama
Orange, creada espec8ficamente durante el desarrollo del corto
Elephant Dreams.
+ero el baar no es solo aplicable a los desarrolladores. 0n ocasiones la
vorgine del baar intimida a nuevos usuarios, lo cuales pueden llegar a
encontrar bruscos algunos comportamientos de los usuarios ms antiguos.
0ste recelo de los veteranos de la comunidad suele ser debido a la
repetici!n sistemtica de los mismos errores por parte de los nuevos
miembros.
YafRay de la Y a la y [ 31 ]
:omo ejemplo de esto, en la tristemente e*tinta comunidad de usuarios de
Blender 1ispanos, (iodigital, los nuevos usuarios realiaban las mismas
preguntas de novato una y otra ve. )os usuarios ms veteranos se
cansaban de repetir las mismas respuestas continuamente. Se lleg! a 1acer
famosa la frase IIusa el buscadorJJ, en relaci!n al poco uso que daban los
novatos al buscador del foro para encontrar posibles respuestas a sus
preguntas. :on el doble fin de evitar preguntas innecesarias por parte de
los nuevos y motivar a los veteranos a contestar, el administrador del foro
2'icols .orenas, alias Faronte7 cre! un sistema de crditos. )os crditos
se obten8an, entre otras formas, por visitar la 9eb y contestar preguntasU
mientras que se perd8an por realiarlas. 4 los pocos meses se creo toda una
sociedad basada en el intercambio de crditos. 0s una lstima no 1aber
podido seguir la evoluci!n de este e*perimento, ya que la imposibilidad de
mantenerse econ!micamente, junto con una serie de desavenencias,
precipitaron el cierre de la comunidad.
4 pesar de la buenas intenciones en el modelo del baar, las decisiones
tienen que estar controladas. Raymond supone que todo proyecto de
soft9are libre 1a de contar con un dictador benevolente, una especie de
l8der que generalmente coincide con el fundador del proyecto, para guiarlo
reservndose siempre la =ltima palabra en la toma de decisiones. Sobre el
papel, esa persona 1a de saber motivar y coordinar un proyecto, entender a
los usuarios y desarrolladores, buscar consensos e integrar a todo aquel
que pueda aportar algo al proyecto. +ero la realidad es que esa persona,
como queda dic1o, suele ser el propulsor original de la idea. +or tanto es
un desarrollador al que le apasiona producir soft9are pero que,
1abitualmente, se preocupa poco por los usuarios y las relaciones dentro
de la comunidad. 0ste tipo de desarrolladores suele ver como una perdida
de tiempo las labores de ingenier?a social organiativa.
YafRay: de la catedral al bazar organizado"
YafRay 1a seguido desde un principio el modelo de procesos en el
soft9are libre. Surge como un proyecto personal y la persona que lana el
desarrollo es la que realia las labores de dictador, considerado por todos
benevolente porque si no, nos pegar...
%nicialmente, en la primera etapa de liberaci!n del c!digo 2versi!n $.$.D7,
la pgina 9eb de YafRay era un simple documento ht&l de fondo blanco
con letras negras. :onten8a una peque,a e*plicaci!n del proyecto, un par
de imgenes y un enlace al c!digo. Si YafRay 1ubiese sido una empresa,
esta presentaci!n tan pobre 1abr8a desencadenado un s+iidio oletivo
del departamento de marVeting. /esafortunadamente, YafRay no pudo
1acer este favor a la 1umanidad ya que era un proyecto de un estudiante de
informtica. 4provec1o la ocasi!n para saludar a los c1icos de marVeting
de mi empresa.
[ 32 ] Tecnologas Libres para Sntesis de Imagen 3D
4 pesar de esta puesta en escena tan austera, el proyecto tom! gran inters
por parte de los usuarios de Blender, que por aquel entonces no contaba
con un motor de render de calidad. 0ste inters oblig! a mejorar aquella
9eb, incluyendo documentaci!n e*tra y un foro para que los usuarios
pudieran solventar sus dudas. /eber8amos refle*ionar c!mo una buena
idea, en el momento adecuado, crece por si misma sin necesidad de
envolverla en una nube de bullshit dentro de e*tensas presentaciones de
Po%erpoint.
Ya 1emos dado el primer paso de la catedral al baar casi sin darnos
cuenta. )a necesidad de crear un foro de usuarios surge de la imposibilidad
de "andro para contestar a todos los correos de los usuarios, que
emocionados con el nuevo raytracer no paraban de 1acer preguntas. 0l
arquitecto de la catedral pierde ms tiempo en resolver dudas sobre el
proyecto que en su desarrollo. )a soluci!n est clara, permitir que la
comunidad se comunique para que los usuarios ms e*perimentados
puedan ayudar a los nuevos.
/e manera casi simultnea al anuncio del proyecto, el 1olands 4lfredo de
&reef comen! a aportar c!digo, convirtindose en uno de los grandes
impulsores del proyecto 1acindose responsable de la intergraci!n con
Blender. ;tros vinieron despus, casi todas fueron peque,as pero
importantes aportaciones. 0n poco ms de un a,o YafRay contaba con una
comunidad de usuarios grande, teniendo en cuenta el reducido mbito del
proyecto.
0n #$$G, durante las jornadas BoingBoingBlend, tuve la oportunidad
de realiar una ponencia similar a esta. 0ntonces la situaci!n de YafRay era
bastante delicada. 0l proyecto estaba en crisis. 4lejandro no ten8a tiempo
para dedicar al desarrollo, 4lfredo estaba volcado en otros proyectos y no
aparec8an nuevos programadores. +or otra parte, la poca documentaci!n
que e*ist8a estaba desfasada y la 9eb lleva a,os sin cambiar de aspecto.
.is conclusiones de entonces eran bastante pesimistas. 0l proyecto estaba
en una situaci!n de interbloqueo. )as pocas personas interesadas en
colaborar, bien desarrollando c!digo o documentando, no sab8an como
1acerlo porque la poca documentaci!n e*istente era de mala calidad. Coda
la informaci!n estaba en la cabea de los desarrolladores, que
precisamente carec8an de tiempo para documentar. )a pescadilla que se
muerde la cola.
0l c!digo no estaba libre de problemas. 0l dise,o inicial, pensado para un
peque,o raytracer ya no soportaba ms parc1es para introducir las nuevas
funcionalidades que los usuarios requer8an. 0so llev! a 4lejandro a pensar
en empear un nuevo dise,o desde cero, mejor estructurado y con
algoritmos de raytracer ms avanados. +ara un programador interesado
en colaborar era muy complicado ampliar el viejo c!digo y el nuevo no era
ms que un esboo.
YafRay de la Y a la y [ 33 ]
:on este panorama, las pocas personas que intentaban ayudar, al poco
tiempo escapaban del desastre organiativo que era el proyecto.
'ecesitbamos ms compromiso y para ello optamos por un arma
infalible? la verg2enza &3blia. /urante aquellas jornadas de Barcelona,
en mitad de la ponencia pedimos a ciertas personas que colaborasen con el
proyecto y que se comprometieran all8 mismo, cara a cara con otros
miembros de la comunidad. )a jugada no sali! mal? 4penas recibimos
amenaas de muerte y conseguimos que "avier &aln dise,ase una nueva
imgen para YafRay y su 9eb, muc1o ms profesional.
0n mi opini!n aquello fue clave para el estado actual de YafRay. /os a,os
despus, la documentaci!n est creciendo gracias al ingente trabajo de
4lvaro )una. "at!ias Wein 1a tomado las riendas del proyecto,
introduciendo grandes mejoras al c!digo original, mientras el nuevo
redise,o 2llamado Fry7 va madurando. Auiero agradecer desde aqu8 a estas
personas y a tantas otras que con su trabajo, sus mensajes en los foros y
sus trabajos art8sticos de calidad profesional estn consiguiendo que
YafRay creca cada d8a ms.
#esarrollo libre para el software libre
Hemos 1ablado de la cooperaci!n de las comunidades en el desarrollo de
proyectos de soft9are libre, pero Q:!mo se comunican sus miembrosR
QAu 1erramientas se utilian para coordinar los esfuerosR
4fortunadamente la comunidad de soft9are libre se retroalimenta y
e*isten multitud de 1erramientas libres =tiles para el desarrollo de
soft9are y la cooperaci!n entre personas de todo el mundo.
)os foros y las listas de correo son el epicentro de las comunidades. /e
1ec1o son la parte visible de la comunidad. 4mbas 1erramientas permiten
la comunicaci!n y las dos comparten la idea de facilitar el env8o de
mensajes a todos los miembros. Su diferencia fundamental el sentido en el
que viaja la informaci!n. 0n las listas de correo la informaci!n llega
pasivamente a los usuarios, los mensajes enviados a la lista llegan a toda la
comunidad. Sin embargo en los foros son los usuarios los que se OacercanP
a la informaci!n. +or esto, las listas se deber8an utiliar para intercambiar
informaci!n =til para todos sus destinatarios. Un ejemplo clsico es una
lista para los desarrolladores, donde cada miembro env8a un registro de
sus modificaciones.
0n los foros, sin embargo, el usuario es el que decide leer o no un mensaje.
Se dividen en secciones y cada usuario lee s!lo la que le interesa. )a
informaci!n est a18, s!lo 1ay que ir a buscarla. Son una 1erramienta =til
tanto para usuarios como para desarrolladores. 'o s!lo se utilian para
[ 34 ] Tecnologas Libres para Sntesis de Imagen 3D
resolver dudas sobre el uso de un soft9are, sino que sirven para poner en
contacto a los desarrolladores y los usuarios.
Una de las 1erramientas que est invadiendo la escena del soft9are libre es
el .iki. /el 1a9aiano %iki %iki, OrpidoP, es una forma de sitio 9eb en
donde se acepta que usuarios creen, editen, borren o modifiquen el
contenido de una pgina 9eb, de una forma interactiva, fcil y rpida.
/ic1as facilidades lo convierten una 1erramienta efectiva para la escritura
colaborativa. 0n el proyecto YafRay, la instalaci!n de un 9iVi 2una 9iVi
para algunos 2algunas para algunos(as77 le 1a permitido salir de la penosa
situaci!n documental que se encontraba durante el =ltimo a,o. Se est
redondeando una documentaci!n completa y actualiada. 4dems la 9iVi
1a permitido que los usuarios pudieran traducir por si mismos la
documentaci!n a otros idiomas, como el espa,ol, portugus o c1ino.
0n cuanto al desarrollo en si, 1ay que decir que YafRay empe! siendo
desarrollado con 1erramientas libres, desde el compilador &'U 1asta el
Ni& con el que "andro tecle! las primeras lineas. 4ctualmente el =nico
soft9are propietario que se utilia es el compilador Nisual : CoolVit 2la
versi!n gratuita del compilador de .icrosoft para 5indo9s,7. 4unque
inicialmente se utili! el Cyg#in como 1erramienta de compilaci!n para
5indo9s, la idea se abandono ya que la integraci!n con Blender, usando
YafRay como plugin, requer8a el uso del compilador de los de Redmond.
0n el momento en el que ms de una persona aportaba c!digo al proyecto
se 1io necesario el uso de una 1erramienta para el control de versiones,
:NS en el caso de YafRay. 0l C4$ 2Foncurrent Hersions $yste&7,
implementa un sistema de control de versiones? mantiene el registro de
todo el trabajo y los cambios en la desarrollo de un proyecto 2de programa7
y permite que distintos programadores colaboren. )a mayor parte de los
proyectos de soft9are libre utilian esta 1erramienta o la ms avanada
subversion.
+ara terminar este peque,o repaso por las 1erramientas de desarrollo
quiero 1acer una menci!n a las utilidades de tipo /ugtracker, literalmente
Orastreador de erroresP. Se trata de una especie de foro 2en muc1as
ocasiones se utilia como tal7 en el que los usuarios dejan constancia de los
fallos que van encontrando en el soft9are, permitiendo en muc1os casos
a,adir sugerencias sobre nuevas funcionalidades 2feature re*uests7. 0l
/ugtracker permite asignar programadores al problema, que sern los
encargados de investigar las causas del error y subsanarlo. 0s una
1erramienta muy potente y que recomiendo a todos aquellos proyectos que
empiecen a tomar cierta relevancia.
YafRay de la Y a la y [ 35 ]
onclusiones
0l mbito de aplicaci!n y desarrollo del soft9are propietario suele 2o debe7
estar definido de antemano. Se puede realiar una predicci!n, ms o
menos acertada, sobre la envergadura del proyecto as8 como del n=mero y
perfil de los usuarios finales.
+ero el soft9are libre es totalmente impredecible. Un proyecto
inicialmente peque,o, comenado desde cero por una =nica persona puede
volverse muy grande en muy poco tiempo.
0l desarrollador que empe! por diversi!n empiea a ver que los usuarios
demandan su ayuda y piden nuevas funcionalidades al soft9are. 4parecen
los primeros bugs que 1ay que resolver, lo que genera nuevas peticiones de
los usuarios. Codo empiea a dejar de ser divertido. Usuarios curiosos
inundan la cuenta de correo del programador. 4parecen nuevas personas
intentando colaborar. 0n este caos organiativo el desarrollador debe
asumir que su proyecto es de inters para la comunidad, utiliando parte
de su tiempo en la organiaci!n de la comunidad que se 1a formado
alrededor de su soft9are. .uc1os lo vern como una perdida de tiempo,
pero es necesario, ya que una buena planificaci!n a tiempo favorecer un
desarrollo ms fluido del proyecto.
)os desarrolladores 1an de tener en cuenta que afortunadamente no estn
s!los, ya que e*isten una amplia gama de 1erramientas libres que permiten
crear comunidades organiadas. Sabiendo el potencial de estas
1erramientas se podr poner en las manos de los usuarios la oportunidad
de colaborar. :onociendo las alternativas y eligiendo los instrumentos
adecuados se puede formar una comunidad que se OautomantengaP,
1aciendo que sean los usuarios los que contesten sus dudas y escriban la
documentaci!n.
Uno de los principales errores de YafRay fue descuidar estos aspectos y 1a
costado muc1o levantar el vuelo. Si t=, amigo lector, ests empeando a
desarrollar soft9are libre ten en cuenta que debers dedicar parte de tu
tiempo al cuidado de las personas que se agrupan alrededor de tu proyecto.
Si por el contrario lo tuyo no es programar y el men= del v8deo es todo un
misterio para ti, no te preocupes. Hay muc1a labor que 1acer en el
proyecto de tu soft9are favorito. :ualquier peque,a aportaci!n, como
ayudar a los usuarios ms ine*pertos, puede 1acer mejorar el soft9are.
'o quiero terminar sin agradecer a 4lejandro :onty la oportunidad de
participar en un proyecto como YafRay. .il gracias tambin a 4lfredo de
&reef, "avier &aln, .at1ias 5ein, 4lvaro )una y a toda la comunidad
1ispana e internacional de usuarios de YafRay, con especial cari,o a los de
Blender...
[ 36 ] Tecnologas Libres para Sntesis de Imagen 3D
)legados a este punto s!lo queda contestar a una pregunta? Q:uantos
robles roer8a un roedor, si los roedores royesen roblesR Bien... un roedor
no roer8a robles, ya que los roedores no roen robles, pero si un roedor
pudiera roer y royera alguna cantidad de robles, Qcuntos robles roer8a un
roedorR 4unque un roedor pudiera roer robles y aunque un roedor royera
robles, Qdebe un roedor roer roblesR Un roedor deber8a roer si un roedor
pudiera roer robles, siempre que el roedor royera robles.
;1, <allate>
Referencias
&regorio Robles. O(ngenier?a del $oft%are Libre3 Una )isi!n
alternati)a a la ingenier?a del soft%are tradicionalK. #$$#.
"es=s &onle Bara1ona, "oaquin Seoane, &regorio Robles.
O%ntroducci!n al soft%are libreK. #$$6
0ric S. Raymond. OLa catedral y el ba7arK. DEEF
.artine 4albers, O0oti)ation for participating in an online open
source soft%are co&&unityK. #$$G
http://pulsar.unizar.es/gluz/manual-sl/c35.html
http://es.wikipedia.org
La Retrocomputacin est de moda?
Javier Belanche Alonso
xbelanch@gmail.com ::
La retrocomputacin est de moda? Es evidente que s. El
sentimiento de nostalgia por la tecnologa del ordenador
personal, consolas mquinas recreativas !no puedo
encontrar un nombre me"or# de la $poca comprendida entre
mediados de los %& '&, ha ido tomando maor (uer)a
visibilidad en el momento actual.
*
Esta charla tratar de describir las diferentes manifestaciones de la
retrocomputacin y, en particular, de la necesidad para muchos de volver a
repetir el embargo emocional que representa jugar, programar, construir y
coleccionar la informtica de 8 bits.
Un poco de historia
El punto de partida es la aparicin del primer videojuego comercial en
Estados Unidos en 1!". #ong, idea y dise$o de %olan &ushnell y
formali'ado por el ingeniero de (l (lcorn, inaugura el festival del ocio
informtico popular como la industria que, a e)cepcin de un tiempo de
crisis a mediados de la d*cada de los 8+, en la actualidad factura un
volumen de ingresos superior a la del cine.
,e la primera mquina recreativa surge la idea, poco ms tarde, de %olan
&ushnell de trasladar la e)periencia de las mquinas recreativas al entorno
dom*stico- reiventa un proyecto tan fallido como visionario, la consola
.agnavo) /dissey. 0a edicin 1home1 del #ong fue un *)ito de ventas de
las navidades del !2. Es la *poca de confrontacin entre (tari y
3olecovision por dominar el mercado de mquinas recreativas y consolas
dom*sticas. 4rente a la produccin masiva de 3olecovisin, la (tari de
%olan &ushnell determinar, mediante el acto de la innovacin, un tercer
paso hacia la definicin contempornea de la consola5 la invencin del
1cartucho1 o la posibilidad de intercambiar juegos en la misma consola.
6eguirn a$os de creatividad e innovacin en cuanto al dise$o y
produccin de juegos para dos mundos que conviven inevitablemente, el
de las mquina recreativas, superior en calidad grfica al segundo, y el de
las consolas dom*sticas. 6pace 7nvaders, #ac.an, ,on8ey 9ong, (steroids
[ 37 ]
F
i
l
o
s
o
f

a
[ 38 ] Tecnologas Libres para Sntesis de Imagen 3D
se convertirn rpidamente en la primera coleccin de clsicos de la
historia de los videojuegos. %o sorprende, por lo tanto, que seran objeto de
variaciones, con mejor o peor gusto hasta nuestros d:as y que tendrn
representacin en soportes y medios tan diferentes como singulares.
0a segunda parte de esta historia la ocupa el ordenador dom*stico. ;res
a$os despu*s del *)ito de #ong, 6teve <obs y 6teve =o'nia8 presentan en
1!! el (pple >?, con el procesador @2+A de la casa ./6 y que tendr un
enorme eco comercial, en parte por su cualidad t*cnica y en gran medida
por la aplicacin de ofimtica Bisicalc, la primera hoja de clculo de la
historia.
#ero el principal inter*s que nos trae
aqu: la obra de =o'nia8 y <obs es por un
motivo clave para la evolucin del
videojuego5 gracias al int*rprete de
&(673, los usuarios pod:an desarrollar y
programar sus propios juegos,
almacenarlos y, finalmente compartirlos o
venderlos. ,e nuevo, como fue en el caso
de (tari, la empresa (pple descubre una
doble industria Cla del softDare y la del
hardDareE que, en poco a$os, se inundar
de un largo nFmero de ordenadores
dom*sticos, de los que destacamos la
produccin del 3ommodore @", 6inclair
GH6pectrum "88, .6H y 3#3 "@" de
(.6;I(,. ,urante los primeros cinco
a$os de los 8+, la e)plosin de creacin de
La retrocomputacin est de moda? [ 39 ]
videojuegos para los modelos antes mencionados se ver refor'ada por el
desarrollo, entre profesional y el amateur, de muchos jvenes que
aprenden a programar ensamblador para dos micros, el '8+ y el @2+A, en
sus habitaciones, aspirando a poder vivir de sus propios trabajos. %o
resulta e)tra$o que, desde la perspectiva actual, se considera ese momento
como la edad de oro del softDare espa$ol. Edad que vi su punto ms
lgido con la obra maestra del programador #aco .en*nde', 10a abad:a
del 3rimen1.
#unto final a esta historia lo pondr %intendo o, por qu* no, del encuentro
entre Jamauchi y 6higeru .iyamoto. En 182 aparece la consola %E6 de
%intendo y su juego estrella, 6uper .ario &ros, y que culmina dos a$os
ms tarde con ;he 0egend of Gelda.
Intenciones
Ke clasificado el contenido de esta ponencia en funcin de unos pocos
conceptos que engloban la gran totalidad de proyectos que han girado
alrededor de la informtica de 8 bits.
3oleccionismo
0oD#rogrammingLKard=iring
EmulacinLIecreacin
IeinterpretacinLIeinvencin
0a mayor parte de manifestaciones o acciones 1retro1 puede referirse a
estos cuatro apartados bsicos, y que, si bien se pueden tomar por
apartados independientes, la estrecha relacin entre ellas se har evidente
a lo largo de la e)plicacin de este te)to. Empe'aremos con el ms pasivo
de los cuatro, coleccionar, y acabaremos por el que ms se aleja de la
retroinformtica y s: se apro)ima al medio de la prctica del arte actual.
oleccionismo
3oleccionar, reunir o agrupar objetos de una misma :ndole o tema, que
despiertan un sentimiento entre nostalgia, pasin y deseo, es
probablemente la categor:a ms pasiva de las cuatro. 0a acumulacin de
ordenadores dom*sticos de 8 bits, consolas, calculadoras no es diferente de
la de coleccionar sellos, sin ocuparnos ahora si hay sospechas de un futuro
frum retroinformtico. En Espa$a contamos con algunos de las
colecciones privadas de retroinformtica ms importante a escala
internacional.
[ 40 ] Tecnologas Libres para Sntesis de Imagen 3D
6in duda, el componente de inter*s del
coleccionismo es el encuentro con lo
diferente, la e)cepcin o la singularidad y,
por lo tanto, con el objeto ms preciado.
Muiero destacar varias pie'as, e)plicar su
e)cepcionalidad como la magia y encanto
que han suscitado desde su desaparicin en
el mercado informtico. Es probable que la
eleccin no sea la correcta, la mejor o la
ms representativa, pero cada ve' que
aparecen en subasta, los precios finales
rebasan habitualmente los seiscientos
euros.
En primer lugar, <upiter (ce de 3antab,
ordenador britnico que, literalmente,
naci muerto a principios de los 8+. 3reado
por Iichard (ltDasser y 6teven Bic8ers,
parte escindida del equipo original del
desarrollo del GH 6pectrum, el <upiter (ce
heredaba del GH81 su fisonom:a, pero de
superficie blanca. .icro G8+ a N.A2 .K'
con N8 de I(. ampliables a un m)imo de
"8 y una resolucin grfica de A")NA
caracteres en blanco y negro, el <upiter (ce
se fundament en la estandari'acin de sus
componentes digitales. El (ce, a diferencia
de las U0( CUnidad (ritm*tico 0gicaE de la l:nea 6inclair, se dise$ bajo
el paraguas de la lgica transistorOtransistor y, por lo tanto, con chips de
serie. Mui', su peculiaridad mayor fue el int*rprete de 4orth en lugar del
habitual &(673. El (ce conten:a una I/. de 88 con el 6/ y el int*rprete
de 4orth. (unque la velocidad de
ejecucin era superior al resto de
int*rpretes de &(673 del momento,
el <upiter (ce se encontraba en
desventaja frente a otras mquinas
debido a su insuficiente capacidad
grfica como de sonido, limitando
las ventas del (ce hasta el punto de
su desaparicin tres a$os mas tarde.
En segundo lugar, el 6am 3oup*,
tambi*n britnico, hace su aparicin
en 18, cuando el mercado de los
ordenadores dom*sticos de 8 bits ha
entrado en ca:da libre. 0a empresa
La retrocomputacin est de moda? [ 41 ]
responsable fue .iles Pordon
;echnology. (l igual que el
<upiter (ce, el 6am 3oup* ten:a
el '8+ de Gilog por microproceO
sador, a @.h' de reloj, A2@9b de
I(. ampliables a 21A8b. Una
caracter:stica que luego se
converti en motivo de
confusin fue la posibilidad de
ejecutar juegos de la gama
6inclair gracias al chip (673,
compatible con el U0( del GH
6pectrum "88. 3onfusin que
llev a entenderse el 6am 3oup* como un clnico ampliado del GH
6pectrum. 0amentablemente, despu*s de tres cambios de propietarios, la
produccin del 6am 3oup* finali'a en 1A, tras 1@+++ unidades vendidas
y con el imparable mercado del #3 compatible como fondo.
4inalmente, el IainboDO7 fue un ordenador de 8 bits que apareci en 18
en la localidad de .anchester, bajo el dise$o de los hermanos 7an y
6tephen 6mith, dos jvenes
apasionados de la electrnica
digital, la informtica, la mFsica
de 1.adcheter1, la literatura y
arte decadente ingl*s del siglo
H7H y las drogas. El IainboDO7
nunca super las 1++ unidades5
la caja era de madera de cere'o,
con grabados de ornamentacin
en gran parte de su superficie, se
vend:a a peticin personal o se
regalaba a colegas. .s en la
l:nea del romanticismo del 1homebreD computer1 que de la produccin
comercial, el IainboDO7 tuvo un cierto eco en revistas especiali'adas
debido al uso de dos micros '8+ en paralelo, mejorando
considerablemente la profundidad de color. Un a$o ms tarde, 7an 6mith
se suicid destruyendo toda la informacin y el poco stoc8 disponible de
los IainboDO7. ,e muy ve' en cuando, aparece como art:culo de subasta de
ebay, en particular de la regin del Ieino Unido, algun prototipo del
IainboDO7, superando los A2++ euros.
[ 42 ] Tecnologas Libres para Sntesis de Imagen 3D
!mulacin"Recreacin
Kablar de la vida de estas mquinas nos lleva a la segunda categor:a, la
emulacinLrecreacin. 0a emulacin es la solucin pobre de una
e)periencia real, pero si sumamos la recreacin, la sensacin es mayor y
ms pr)ima al sentimiento original. 0a retroOemulacin es un e)tra$o
virus5 se e)tiende con suma facilidad a todas los dispositivos digitales
actuales, desde relojes hasta las consolas de Fltima generacin, pasando
por pdas. El inter*s de la emulacin es doble5 la satisfaccin que produce el
reproducir el comportamiento de una vieja mquina, una cierta necrofilia
digital y, una l:nea qui' menos habitual, pero no por ello menos atractiva
y enriquecidora, la programacin de emuladores de mquinas de 8 bits.
El principio que subyace la emulacin en el campo de la informtica es la
compatibilidad. Mue el softDare de un primer ordenador sea compatible
con un segundo es posible si, gracias si est disponible el cdigo fuente y
podamos compilar el binario en la segunda mquina. ;area esta Fltima
dif:cil si entre las dos mquina la arquitectura *s diferente. Un camino
alternativo es la 1ilusin1 de poder 1emular1 el comportamiento del primer
ordenador en el segundo. ,e esta manera podr:amos ejecutar el softDare
del primer ordenador sin dificultad en el segundo.
0os primeros emuladores de mquinas viejas de 8 bits aparecen a
principios de los +, con la desventaja de la todav:a precaria velocidad del
micro para ejecutar con suavidad el sistema emulado, como un emulador
del 3ommodore @" para (miga.
3on el rpido incremento de la velocidad de los microprocesadores para
los #3 compatible, la aparicin a mediados de los + de una 1emuscene1 se
cristali' en los primeros emuladores de la serie de mquinas de 8 bits de
principios de los 8+, 6inclair GH 6pectrum, .6H, 3ommodore @", (miga e
incluso (pple >?, pero tambi*n las primeras consolas como la %E6, la 6uper
%E6 o la 6ega .aster 6ystem. 0a ventaja en cuanto a implementacin y
programacin de estos emuladores es que todas estas mquinas guardan
similitudes t*cnicas y de dise$o muy parecidas- muchos compart:an micros
de 8 bits, 7nterl 8+8+, .otorola @8+, Gilog G8+ o ./6 @2+A. 0as
diferencias ven:an por los dispositivos e)ternos Cteclado, cintas o disco de
almacenamientoE o el chip grfico Cla U0( famosa del GH 6pectrumE o del
sonido.
3ontrariamente a lo que podamos pensar, la documentacin alrededor del
dise$o y programacin de emuladores es bastante limitada y dispersa si la
comparamos con el volumen de comunidades, proyectos y usuarios
interesados en la emulacin desde su arista ms lFdica. En general, la
motivacin que hay detrs de la programacin de emuladores es variada5
aprender ms sobre computacin y la arquitectura de los ordenadores y
La retrocomputacin est de moda? [ 43 ]
consolas de 8 bits, saber cmo funcionaban los videojuegos de antes y qu*
hab:a detrs de ellos Opregunta muy ra'onable cuando *ramos ni$osO y,
desde un lado ms humano, preservar la memoria de nuestra infancia.
(corde al movimiento de la QemusceneQ y del sentimiento de preservacin
del pasado de 8 bits, el 2 de febrero de 1! %icola 6almoria publica la
versin +.1 de .(.E, acrnimo de .ulti (rcade .achine Emulator,
siguiendo una filosof:a estricta de la emulacin a nivel de registros e
instrucciones, contrariamente a la t*cnicas Kigh 0evel de Emulacin. 0a
velocidad de la emulacin no es tan importante como el grado de realismo
de la emulacin, por lo que .(.E depender siempre de velocidades de
reloj enormemente elevadas para una emulacin fluida.
.(.E representa en la actualidad un gigante centro de gravedad en lo que
se refiere al universo de la emulacin de videojuegos5 el nFmero de juegos
que alcan'a emular est en los 1++++, aunque tambi*n se sabe que
alrededor de @++ se encuentran fuera de los l:mites de su emulacin por
.(.E. (l mismo tiempo, .(.E representa un quebradero legal5 en
cuanto a emulador, la pertenencia y distribucin de .(.E es legal, su
venta es ilegal. Iespecto las I/., la mayor:a estn sujetas en la actualidad
al copyright de la empresa o autores propietarios y, por lo tanto, imposible
su venta y distribucin. Esta situacin se vuelve surrealista en funcin de la
situacin legal de cada pa:s, en el hecho de que las I/.6 dejaron de ser
objeto de mercado hace tiempo o que, ro'ando el rid:culo, algunas
empresas propietarias de las I/.s dejaron de e)istir. Estas I/.6 pasan
a ser consideradas hu*rfanas, pero mantienen paradjicamente su
copyright, sin que por ello beneficie econmicamente a nadie. 0aDrence
0essig, padre del 3reative 3ommons, debate y denucia en la actualidad la
irregularidad del copyright de los juegos hu*rfanos y defiende el traspaso
al dominio pFblico.
Ke mencionado ms arriba la t*cnica de emulacin Kigh 0evel, en
contraposicin de la filosof:a seguida por los desarrolladores de .(.E.
,os a$os despu*s de la primera versin pFblica de .(.E, se anuncia un
nuevo emulador, UltraK0E, que difiere en cuanto a metodolog:a de
emulacin y por tanto, el enfoque conceptual de emulacin. ( diferencia de
.(.E, que representa la t*cnica 00E C0oD 0evel EmulationE y concentra
sus esfuer'os en emular a bajo nivel todo los componentes del sistema
emulado, con especial atencin en la 3#U, UltraK0E intenta adivinar que
necesita el juego en cada momento y emula la peticin con gran rapide'.
,e hecho, UltraK0E se hi'o enormemente popular en muy poco tiempo.
4ue el primer emulador con *)ito de la %intendo @", de juegos imposibles
de emular como 6uper mario @" y Gelda5 /carina of the ;ime.
[ 44 ] Tecnologas Libres para Sntesis de Imagen 3D
UltraK0E muri de *)ito repentino. #ocas horas despu*s de su
publicacin, los desarrolladores abandonaron el proyecto, aunque poco
despu*s, Ieality.an, uno de los desarrolladores, volvi a la carga para
sucumbir debido a las sugerencias de %intendo para olvidar el proyecto,
incluso la emulacin.
Recreacin
0a recreacin es bic*fala5 busca obtener una e)periencia ms rica al
dotar a la emulacin de un soporte f:sico espec:fico y pr)imo al original.
0as retro.acas ilustran a la perfeccin esta idea. 0a lstima es que esta
recreacin se limita a la habitacin del retrogee8. 0a recreacin perfecta,
casi como siempre, es colectiva y en este sentido la e)periencia original se
deber:a completar en una sala llena de humo de tabaco negro, ceniceros
quemados y llenos de nicotina, el estar a punto de conseguir una bandera
1+ en el Pala)ian mientras una multitud annima y silenciosa admira tus
movimientos y, cmo no, un jubilado con mono a'ul y ri$onera llena de
monedas de A2 de las viejas pesetas.
0a aparicin de .(.E, su capacidad
t*cnica para emular fielmente los
videjuegos clsicos, lo convirtieron en
el softDare ideal para la recreacin de
una mquina recreativa, o 1maca1. 0a
construccinLobtencinLcompra de
una 1maca1 se ha convertido en s: misO
mo en fenmeno unido a la e)perienO
cia de la retro emulacin. #odemos
comprarla de segunda mano, readapO
tarla, recuperarla del cementerio de
recreativas- podemos construirla
desde cero Cfrom scratchE y ser
nosotros quienes definamos el dise$o,
entre el clsico y el 1coc8tail1, o estilo
mesilla. El mercado de 18its de
construccin1 de macas es cada ve'
mayor- se venden accesorios como los
monederos clsicos, las 1arcade
controls1 y tarjetas grficas de
frecuencias de refresco inferiores a los
@+K', <Opac...
La retrocomputacin est de moda? [ 45 ]
Kago un alto. Ke de hablar de la P#AH, sucesora de la malograda P#NA.
;ras una tortuosa gestacin y sin llegar al a$o de vida en el mercado virtual
Cla consola oficialmente slo se distribuye a trav*s de internetE, la P#AH ha
sabido encontrar un pFblico fiel y adepto a la retroinformtica. Pran parte
de la atencin recibida se debe a su orientacin de desarrollo libre de
videojuegos, aplicaciones y emuladores. 6in pasar del l:mite de los 1!+
euros, la P#AH contiene un firmDare OfinalmenteO libre Cbasado en
P%UL0inu)E sobre un procesador (I. de doble nFcleo, velocidad reloj
de A++.h', almacenamiento en tarjetas 6,, @"mb de I(. y resolucin de
pantalla de NA+)A"+ CMBP(E. ,ispone de un 6,9 oficial igualmente bajo
licencia P%U, aunque la mayor:a de programadores prefieren usar 6,0
nativas de la P#AH.
,estacar la importancia de la escena espa$ola concentrada en la
comunidad gpNAspain, liderada por 4ran)is.
(l basar su sistema operativo en P%UL0inu), no ha sido raro que la
consola se beneficiera rpidamente de las comunidades. ,estacar que es la
primera consola de mano que tiene un int*prete de #ython C#ygameE y
Iuby para el desarrollo rpido de videojuegos y aplicaciones.
[ 46 ] Tecnologas Libres para Sntesis de Imagen 3D
#ard$are !mulation
0a m)ima e)presin de la emulacinLrecreacin corresponde al uso
de chips 4#P( que traspasan la frontera misma del la emulacin por
softDare. 7dentificamos la clonacin perfecta mediante la emulacin por
hardDare al uso de la recreacin de mquinas y consolas de 8 bits antiguas.
0os chips de (ltera y Hilin), el lenguaje vhdl y un enorme conocimiento de
la mquina a emular Cy tiempo,
miucho tiempoE se suman para
aparecer en forma de viejas mquinas
recreativas y antiguos ordenadores
dom*sticos. Mui', del conjunto de
proyectos basados en 4#P(
orientados a la retro e)periencia,
se$alar sin duda el de <eri EllsDorth,
autodidacta en la programacin de
chips 4#P(, el 3O/ne.
3O/ne representa una iniciativa de
<eri EllsDorth por mejorar el
3ommodore @" original, pero que
finalmente deriv en una placa base
que permitiera la clonacin de
cualquier mquina de 8 bits. 3O/ne
es una suerte de multiOhardDare Cen
lugar de multiplataformaE que,
mediante el uso de 4#P( y una
e)pansin modular de la 3#U Cque
por defecto incorpora el @2318@ del
3ommodore @"E se logra implementar la emulacin por hardDare de
cualquier mquina de 8 bits y que, por su naturale'a abierta y modular,
permite nuevos dise$os personali'ados.
#ard$irin%"Lo$ pro%rammin%
El a$o pasado, (ndr* 0a.othe, autor especiali'ado en la publicacin de
libros sobre dise$o, creacin y programacin de videojuegos Ccuenta con
casi una veintena de librosE, da un giro radical de contenidos y celebra una
vuelta radical al pasado5 crear videojuegos desde una perspectiva 1loDO
level15 electrnica, dise$o digital, programacin en ensamblador,
conocimiento del conjunto de instrucciones del micro. Esta ve' el libro no
es un simple recetario de algoritmos, ejemplos y cdigo para nuestro
en*simo proyecto de videjuego fallido en ,irectH. En su lugar, el libro es
La retrocomputacin est de moda? [ 47 ]
una me'cla de curso de electrnica y justificacin de la eleccin del dise$o
de la Hgamestation, una consola basada en el microcontrolador 6H2A y de
la que los usarios pueden aprender a programarla Oen ensamblador, por
supuestoO o ampliar.
REs la Hgamestation un caso aisladoS ,entro del libro, (ndre 0a.othe
e)plica el desarrollo de una edicin m:nima del Hgamestation, el #ico
Edition. Un protoboard, el 6H2A y un set de resistencias y algFn
condesador proporciona una infraestructura m:nima en el que podemos
jugar a nivel de montaje ChardDiringE y de programacin del 6H2A CloDO
programmingE. El #ico Edition no es novedad y (ndr* 0a.othe debe su
iniciativa a un anterior proyecto personal de un estudiante sueco de
electrnica, Iic8ard Punee, al utili'ar microcontroladores de la familia #73
y 6H para dise$ar sistemas de videojuegos amateur. 0a sensibilidad
1homebreD console1 es evidente y trascienden el simple acto recreativo al
puro cacharrismo 1.a8e1 Crevista actual dedicada al hardDare y tecnolog:a
amateurE5 nuevos proyectos de 1homebreD computers1 Cincluso con
int*rpretes de &(673TE y 1homebreD games1.
1KomebreD games1 representa un paso final que nace desde el inter*s de
la emulacin de retro videojuegos, pasando por el estudio de cmo estos
juegos se programaron entonces y finalmente programando un juego que
probaremos en nuestro emulador favorito y que, una ve' conseguido,
desearemos transformar el juego en un cartucho.
0a escena de los 1homebreD games1 es todav:a muy incipiente. #rogramar
en ensamblador en estos d:as parece un acto de e)centricidad y de
fri8ismo. ($adir la dificultad que ello comporta en cuanto al aprendi'aje
como el de un suficiente control para poder desplegar sprites y la
[ 48 ] Tecnologas Libres para Sntesis de Imagen 3D
animacin de *stos por la pantalla. El Fltimo reto, superado lo anterior,
pasa por la fabricacin del cartucho. ,e nuevo el puente entre el loDO
programming al hardDiring o viceversa. Kabitualmente, los pocos
creadores de 1homebreD games1 tienen dos opciones5 cambiar la I/. de
un viejo cartucho y reempla'arla por la nueva I/. o, el ms dif:cil
todav:a, crear tu propio circuito impreso C#3&E y el pac8aging del cartucho.
Un ejemplo magistral de lo que hablo son las tiradas limitadas del juego 17,
3yborg1, de Peorge #eloni, para la m:tica consola 1Bectre)1.
La retroinformtica & el arte actual'
la deconstruccin como reinvencin de los clsicos
Ke querido dedicar el Fltimo apartado de esta charla a las relaciones que,
desde el A+++, se han ido estableciendo entre los videojuegos y el arte
actual y que, tal como ya dije al principio, es la cara de la otra moneda del
sentimiento del retrocoleccionista. Pran parte de la e)ploracin del artista
en la iconograf:a de los videojuegos remite a clsicos de los !+O8+ como
(r8anaoid, (steroids, 6pace 7nvaders, #ong o #acO.an. Peneralmente, la
finalidad de estas intervenciones es desvirtuar el propsito original del
juego Cmatar marcianos, vencer a tu contrincante, ganar a la mquina o
tomar todas las pastillas en un lugar oscuro bajo mFsica electrnica.E y
presentar un discurso diferente, contrario o inmerso en la iron:a.
La retrocomputacin est de moda? [ 49 ]
6i un estudio detallado de la relacin entre el arte actual y los videojuegos
escapa a los l:mites de esta charla, no pierdo la oportunidad de mencionar
unos pocos, en particular dos5 el proyecto spaceinvaders y la #ain6tation.
6pace7nvaders es un proyecto personal del frances 1invaders1 de
intervencin urbana5 la invasin del espacio cristali'ada en forma de
peque$os mosaicos que, no es casualidad la eleccin del soporte,
reivindican el p:)el como unidad de medida grfica. 6us mosaicos de
invaders estan repartidos por toda la geograf:a del primer mundo, en
especial Europa y Estados Unidos.
#ain6tation es una 1maca1 especial del tipo mesilla. 0os jugadores
compiten en el clsico terreno del #ong, a diferencia que, el jugador que
pierde un tanto de partida recibe una peque$a descarga el*ctrica.
[ 50 ] Tecnologas Libres para Sntesis de Imagen 3D
(ara sa)er un poco ms
4orster, =innie, 1Pame..achines, ;he encyclopedia of 3onsoles,
handhelds U home computers 1!AOA++21, A++2, Pameplan
.oya del &arrio, B:ctor, 16tudy of the techniques for emulation
programming Cby a bored and boring guyE1, A++1, U#3
9ohler, 3hris, 1Ietro Paming hac8s, tips U tools for playing the
classics1, A++2, /QIeilly
0a.othe, (ndr*, 1;he &lac8 (rt of Bideo Pame 3onsole ,esign1,
A++@, 6(.6
.art:ne', ,avid 1,e 6uper .ario a 0ara 3roft, la historia oculta de
los videojuegos1, A++N, ,olmen Editorial
Fotograma de la Pelcula de Animacin
Elephants Dream realizada con Blender
Copyright 2006, Blender Foundation
Netherland !edia Art "ntitute
###$elephantdream$org
Seccin Seccin II II
Fundamentos Fundamentos
What's this?
It's simple... Just a
m
o
n
k
e
y
Texturas Procedurales
Carlos Lpez Yrigaray
klopes@unizar.es ::
Fundamentos de los conjuntos fractales
Conjuntos conceptualmente simples, como puntos o lneas en un
espacio matemtico comn como el eucldeo, no dejan lugar a dudas sobre
sus propiedades caractersticas. Un punto, por ejemplo, sabemos que tiene
dimensin 0 porque es la interseccin de dos rectas que se cortan, e
igualmente un segmento de curva tiene dimensin 1 porque, sin ser un
punto, puede incluirse en una recta y cumple la eigencia intuitiva de algo
continuo.
Condiciones bsicas de dimensin
!o todos los conjuntos son tan simples, a pesar de poder ser
encerrados en trozos pequeos, o cualquier, poder generarse sin levantar el
lpi" del papel, o por sencillas reglas recursivas. #e $ec$o, la di%icultad de
la de%inicin del conjunto no tiene que ver con la complejidad de su
representacin gr%ica. &ara estos conjuntos en los que las de%iniciones
intuitivas de sus propiedades no parecen encajar, se $ace necesaria una
de%inicin rigurosa, como la del caso que nos ocupa' el concepto de
dimensin.
&ara abarcar las posibilidades de la de%inicin de dimensin para un
conjunto X
n
, eigiremos cumplirse las siguientes propiedades'
1. dim(p)*0, dim+,-*1, y en general, dim+,
n
-*n para el $ipercubo n.
dimensional ,
n
/. 0onotona' 1i XY entonces dim(X)<dim(Y)
2. 3stabilidad contable' 1i (4
j
) es una sucesin de
n
conjuntos
cerrados de , entonces
[ 53 ]
F
u
n
d
a
m
e
n
t
o
s
[ 54 ] Tecnologas Libres para Sntesis de Imagen 3D
dim

j=1

X
j

=sup
j1
dim X
j

5. ,nvariancia' &ara una aplicacin arbitraria perteneciente a


n
cierta sub%amilia del conjunto de $omeomor%ismos de en
n
, se
tiene'
dim X =dim X
6as condiciones +1- y +/- se cumplen %cilmente, mientras que la
tercera se puede %leibili"ar requiriendo slamente una cantidad %inita de
subconjuntos de
n
'
27. 1i X
1
, X
2
... X
m
son subconjuntos cerrados de
n
, entonces
dim

j =1
m
X
j

=max
1j n
dim X
j

6a condicin +5- implica invariancia topolgica del concepto de dimensin.


!o es trivial ver que las condiciones +1- y +5- no se contradigan, como
podra parecer por la construccin que &eano $i"o de una aplicacin
continua de 80,19 en el cuadrado 80,1980,19. :%ortunadamente, esta
aplicacin no es $omeomor%ismo por no ser biyectiva.
Dimensiones topolgica y de aufsdorff
Uryso$n y otros construyeron una %uncin dimensin que es invariante
topolgica y toma valores enteros. : esta la llamaremos dimensin
topolgica, dim
T
.
1e basa en la idea de dar el valor n;1 al conjunto del cual otro que tiene
dimensin n es borde, inductivamente. 3n topologa general se de%inen
tres tipos de dimensin sobre conjuntos de un espacio m<trico contable.
&odemos llamar dimensin topolgica a cualquiera de ellas, puesto que los
valores enteros son coincidentes en las tres.
: %inales del siglo 4,4, =orel investig sobre la idea de longitudes, reas y
volmenes en busca de de%inicin precisa, lo que estimul a 6ebesgue en su
teora de la medida. Cart$<odory generali" este trabajo a la medida s.
dimensional en
n
y, %inalmente >au%sdor%%, viendo que s daba sentido a la
teora an sin ser entero, de%ini la dimensin que lleva su nombre.
Texturas Procedurales [ 55 ]
6a dimensin de >au%sdor%% satis%ace las condiciones impuestas al
principio tomando como %amilia de aplicaciones de la condicin +5- el
conjunto de %unciones bi.6ipsc$it"ianas. #enotamos a la dimensin de
>au%sdor%% como dim
H
.
Conjuntos fractales
3n general, se cumple dim
T
(X) dim
H
(X). #ecimos que un conjunto 4
de
n
es fractal cuando'
dim
T
X dim
H
X
?ambi<n de%inimos de %orma pareja, el grado fractal, que nos da la
idea de la complejidad gr%ica del conjunto'
X =dim
H
Xdim
T
X
3sto conlleva, en primer lugar, que conjuntos como puntos aislados o
segmentos no son %ractales, por ser su dimensin topolgica un nmero
entero y, por tanto, igual a la de >au%sdor%%.
#ebemos, pues, alejar la idea de que los conjuntos %ractales son aquellos
que lo parecen por ser gr%icamente complejos, o los que albergan el
concepto de auto.similaridad que, si bien es caracterstico en muc$os de
estos conjuntos, no es una propiedad eclusiva.
Texturas iterati!as
Comoquiera que la idea de lo fractal implicara la reali"acin de in%initos
clculos, lo que podemos conseguir mediante t<cnicas por ordenador es
iterar el proceso de obtencin de estos conjuntos para acercarlos al lmite
de lo distinguible por los sentidos. 3sto no slo nos permitir representar
estos conjuntos de %orma satis%actoria, sino que podremos %leibili"ar el
proceso para conseguir dibujos con menos detalle que el que dara el
clculo completo, si as lo deseamos.
:qu abandonaremos la palabra %ractal y lo que conlleva, para retomar el
tema como la generacin de gr%icos complejos mediante t<cnicas
iterativas.
6as teturas que nos ocupan se basan en variaciones de un proceso de
clculo sencillo, que se aplica a conjuntos de nmeros generados por
distintos tipos de ruidos. @eamos qu< es esto.
[ 56 ] Tecnologas Libres para Sntesis de Imagen 3D
Funciones de ruido
,niciamos la generacin de teturas mediante ruido creando una
%uncin 80,19 base, que no es ms que la interpolacin de un nmero
+discreto- de puntos aleatorios P
1
, P
2
, ... , P
m
cuya segunda coordenada est
elegida en el rango 80,19. 3sta interpolacin debe $acerse, naturalmente, de
manera que los valores intermedios no salgan de este rango.
Comen"amos eligiendo como primeras coordenadas de (&
i
) los valores
enteros 1,/,... ,mA de esta manera podemos representar tal %uncin as'
3sto nos lleva a de%inir conceptos anlogos a los de teora ondulatoria
tradicional, como amplitud +que vendr dado por el rango de la curva
%uncional obtenida- o logitud de oda, que ser la interdistancia entre
puntos consecutivos, considerando esta como una cantidad constante. 3n
este caso inicial, esta longitud es 1. 6a frecuecia ser, directamente, la
inversa de la longitud de onda.
3n cuanto a la eleccin de los valores en (&
i
), los $emos recorrido
elegido en un intervalo 80,19 de manera equiprobable, pero podramos
$aber escogido cualquier %uncin de probabilidad. 3s ms, un m<todo
$abitual de escoger estos nmeros es el utili"ado para generar plasmas y
super%icies de 0andelbrot +su versin tridimensional-'
1. 1e determinan valores aleatorios en los etremos del intervalo, o
bien en los v<rtices de una rejilla. 3l objetivo es calcular las
intensidades en los dems puntos del espacio. 3legimos un
nmero d de subdivisiones +$abitualmente d*/-, y una cantidad H
que determina la variacin en cada iteracin. >abitualmente, en
torno a 1Bd. >acemos i*1 para comen"ar el proceso iterativo.
Texturas Procedurales [ 57 ]
/. 1e subdivide el intervaloBrejilla en d partes, obteniendo nuevos
puntos a los que les asignamos los valores por interpolacin de
algn tipo, respecto de los v<rtices originales adyacentes.
2. Cecurrimos a la %uncin de ruido +puede ser una cantidad
aleatoria-, o cualquiera de las que se eplican ms abajo. 3l valor
obtenido se multiplica por +1Bd-
i>d

5. @olvemos a / si los pieles del dibujo no se $an completado.
3l proceso que pretendemos eplicar es mecnicamente parecido, pero
permite generali"ar la generacin de puntos iniciales y el uso de las
%unciones de ruido.
Funciones de ruido Perlin
Den &erlin cre las %unciones que llevan su nombre sumando %unciones
de interpolacin de ruido sucesivas, %1,%/,E, %n, cuyas amplitudes
disminuyen progresivamente, mientras que las %recuencias van
aumentando. 3stas variaciones son geom<tricas, es decir, %recuencia y
amplitud cambiarn en cada nueva %uncin segn %actores multiplicadores
constantes.
6lamemos lacunarity y fracDim +laguaridad y dimesi! fractal- a las
variables que representan, respectivamente, a estas cantidades. : estas
%unciones las llamaremos octa"as, y darn el grado de detalle deseado a la
tetura. 6a %uncin resultante queda, entonces'
P
n
x=

i=1
n
{ fracDim
i
f
i
x lacunarity
i
}
&or ejemplo, tomando lacunarity*/ y fracDim*0FG, podemos obtener
un sucesin de %unciones &erlin +segn el nmero n de octavas- como esta'
n*1 n*/
[ 58 ] Tecnologas Libres para Sntesis de Imagen 3D
n*2 n*5
Hinalmente, podemos comparar dos %unciones en la quinta octava variando
los parmetros'
%rac#im*0.G %rac#im*0.I
lacunarity*/ lacunarity*/
%rac#im*0.G %rac#im*0.I
lacunarity*/.1 lacunarity*/.1
Texturas Procedurales [ 59 ]
3l dr. Horest Denton +Den- 0usgrave, cuyo m<todo se comenta ms
abajo, us el t<rmino persistece para re%erirse directamente a la amplitud
de cada sumando de la %uncin de &erlin, de manera que'
amplitud * persistenciaJi
1in ninguna di%icultad, podemos etender esta %orma de trabajar a
dominios en
n
, pudiendo obtener con este proceso, por ejemplo, un valor
num<rico para cada punto en el espacio bi. o tridimensional real. &or
ejemplo, dado un punto en una super%icie que queremos teturi"ar,
podemos aplicar un sencillo algoritmo tipo &erlin para obtener $asta la
tercera octava, obteniendo como suma esta tetura'
+ + =
"uidos en #lender $D
&erlin, tal cual $a sido de%inido, no es la nica manera de crear ruidos
en =lender, aunque s la ms adecuada para crear paisajes y eventos de
carcter natural' terrenos, teturas nubosas, super%icies lquidasE 3isten
m<todos para dibujar escenas pseudoaleatorias que nos permiten crear
entes ms o menos regulares, basados en la misma suma de %unciones de
interpolacin sobre puntos al a"ar, solo que ya no son tales %unciones, sino
algoritmos que generan otros tipos de %unciones, y que pueden requerir
ms parmetros. #iscutiremos la de%inicin y uso de la triangulacin de
@oronoi, sus parmetros +constantes de Korley-, y los resultados de
aplicarlo sobre distintas de%iniciones de distancia'
eucldea
d =

x
2
y
2
z
2
eucldea al cuadrado
d =x
2
y
2
z
2
0an$attan d = x y z
n.0inLovsLy
d =
1/ n

x
n
y
n
z
n

+generali"a las anteriores-
y se ver tambi<n el m<todo de #usgra"e, usado por Terragen y el
generador de mundos del propio autor, MojoWorld, para crear paisajes y
nubes.
[ 60 ] Tecnologas Libres para Sntesis de Imagen 3D
Terrynoise
Cuando =lender no dispona de teturas generadas por ruido, Alfredo De
Graaf, conocido como eeshlo en nuestros %oros, escribi una librera en C
que contena %unciones para generar nmeros aleatorios y basados en
algoritmos como los eplicados anteriormente. 3l objeto de esta librera,
llamada d$oise, era usarla como base para el proyecto #ynamica, con el
que se pretenda crear un motor de partculas y simulador de tejidos
%sicamente crebles. #ynamica %ue abandonado, pero dynoise segua
disponible para quien quisiera acceder a ella desde sus scripts.
Hue en esa <poca cuando program< Terr$oise, para aprovec$ar esta
capacidad que tan lejos quedaba para =lender por aquel entonces.
#e las %unciones disponibles, ?errynoise utili"aba'
0ultiHractal
Cigged 0ulti%ractal
>ybrid 0ulti%ractal
>etero?errain
cell!oise
?urbulence
vl!oise
!oise
Candom
3l script actuaba sobre los v<rtices aplicando en la coordcenada z una
cantidad generada por la %uncin elegida por el usuario. 6a primera
%uncionalidad consisti en seleccionar qu< v<rtices iban a ser a%ectados por
el clculo y en qu< medida. 3sto se consigui usando el grupo de v<rtices
llamado 7#M!N,137, en $omenaje a la librera de ees$lo.
=lender integr en la versin /.22 las %unciones en su cdigo, adems de
los nuevos tipos de tetura procedurales'
Distorted Noise +calcula ruido usando como lagunaridad el
valor de otro-
Voronoi +algoritmo de @oronoi de cercana, con sus variantes
K1.5-
Musgrave +aplicar la sntesis espectral al ruido, previamente
ampliado e interpolado-
lo que, unido a los ya eistentes +Clouds, 0arble, Kood- cre una nueva
Texturas Procedurales [ 61 ]
%orma de generar teturas con la nueva gama de ruidos'
Cellnoise
@oronoi CracLle
@oronoi H/.H1
@oronoi H5
@oronoi H2
@oronoi H/
@oronoi H1
,mproved &erlin
Nriginal &erlin
=lender Nriginal
lo que supuso un gran avance en la creacin de materiales en =lender.
3sto, unido a la implementacin de mapas de despla"amiento en la versin
/.2/, $i"o que Terr$oise %uese de repente obsoleto, ya que %ue incluso
superado por la eistencia de la opcin 7simple subdivision7, que permite
usar el mapa de despla"amiento sobre los v<rtices generados por
subdivisin en tiempo de render.
6a ventaja, sin embargo, reside siempre en la visuali"acin del ruido
durante el modelado, ya que se crea una nueva malla modi%icada, lo que
permite eportarla tal cual, o incluso usarla en el motor de juegos de
=lender.
6a incorporacin de teturas procedurales $i"o que pronto los
desarrolladores del :&, de &yt$on programaran un acceso a estas
caracterscas %unciones de ruido mediante m<todos en una nueva librera,
%leder.&oise.
3l paso siguiente %ue obvio' programar la posibilidad de que los v<rtices
%ueran a%ectados a lo largo de sus normales, para producir e%ectos de ruido
sobre objetos ya eistentes, no slo levantar meros paisajes sobre planos.
6a reciente intervencin de Mathias Panzen!c" +panzi- en el cdigo
%uente %ue decisiva' reali" una limpie"a de cdigo, e implement la
posibilidad de que el usuario entrara sus propias %unciones matemticas
implcitas, usando como variables las coordenadas de los v<rtices y los
operadores estndar, junto a las %unciones matemticas incluidas en la
librera mat' de &yt$on.
&an"i tambi<n se encarg del tratamiento de %ic$eros para grabar y salvar
parmetros.
Oracias a estas mejoras Terr$oise recibi un nuevo impulso, completando
sus capacidades ms all de sus aspiraciones iniciales, implementando
[ 62 ] Tecnologas Libres para Sntesis de Imagen 3D
entre otras nuevas mejoras la posibilidad de animar la proyeccin del ruido
sobre la malla y su intensidad, consiguiendo e%ectos de burbujeo, oleaje,
vuelos sobre terreno, o "oom, adems de introducir el tiempo como nueva
variable para las %unciones matemticas.
Hinalmente, es de resePar que puede aplicarse sobre cualquier nmero de
mallas, eistiendo un objeto activo sobre el que se trabaja, lo que permite
adems iterar ruidos si lo aplicamos sobre una malla previamente
modi%icada. 3sto se consigue usando las propiedades que eisten en el
motor de juegos para cada objeto, usndolas como variables de
con%iguracin.
Psicofisiologa de la percepcin
Fernando Arroba Rubio
gnotxor@gmail.com ::
uando hablamos de percepcin solemos tender a pensar
inmediatamente en la percepcin visual. Como sistema
perceptivo dominante es el que analizaremos a continua
cin, tanto desde un punto de vista funcional como psicolgico.
C
El ojo es una esfera que cumple con la estructura de una cmara
oscura. Sus funciones son tanto pticas como sensoriales. En su
funcionalidad ptica se comportara como una cmara fotogrfica: su
cometido es recibir la luz, a travs del iris diafragma! " enfocarla con su
sistema de lentes compuesta de crnea " cristalino, ajustando los ra"os
luminosos sobre la retina pelcula sensible!.
El sistema visual
#a esclera o esclertida correspondera con la caja o cuerpo de la cmara.
$a" que ver lo original que so" %aciendo estas analogas!. &unque en
realidad la anologa mejor no es la cmara fotogrfica sino la de video.
&travesamos las estructuras en la misma direccin que lo %ara la luz "
veremos su funcionalidad de manera rpida.
El ojo est estructurado en tres capas: la superficial o fibrosa, que
comprende la esclera " la crnea' la t(nica vascular, tracto uveal o (vea,
que comprende la coroidea, el cuerpo ciliar " el iris' " la t(nica interior o
retina, que inclu"e la porcin fotosensible de la pared posterior del ojo.
#a primera estructura que nos encontramos es la crnea. )ras atravesarla
nos encontramos en la cmara ocular, un espacio lleno de lquido entre la
crnea " el cuerpo vtreo. Este espacio se encuentra dividido en dos
cmara anterior " cmara posterior! por el iris. El %umor acuoso que lo
llena es el resultado de un ultrarrefinado de la sangre " su funcin es
aportar nutrientes " o*geno a la lente " a la crnea, que son avasculares.
[ 63 ]
F
u
n
d
a
m
e
n
t
o
s
[ 64 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 1. Corte transversal del ojo, vista sagital.
+or (ltimo, en la parte posterior nos encontramos la retina. Es el
elemento fotosensible. +odemos distinguir en la retina varias formas o
estructuras especiales. ,estacando el -dico ptico. " la -mcula.. El
primero es el punto ciego de la retina " la segunda presenta una fosa que es
la zona ms sensible a la luz.
Aspectos funcionales de la retina
+odemos considerar la retina como la parte mvil del cerebro. Es una
estructura del sistema nervioso central que se mueve con el ojo. /o
entraremos en las subestructuras que la componen sino en la
funcionalidad de la misma, comenzando con los fotorreceptores, los
-conos. " los -bastones..
Bastones y conos
)anto los conos como los bastones son clulas receptoras alargadas.
&mbos tipos de clulas difieren anatmicamente seg(n se encuentren en el
centro de la retina o en la periferia. #os bastones pueden medir 0 m de
dimetro en la zona central de la retina " llegar en las perifricas a 1 m
2 m. #os conos de la fosa miden 3,2 m mientras que los de las zonas que
la rodean alcanzan de 2 a 4 m.
Psicofisiologa de la percepcin [ 65 ]
#a rodopsina es el fotopigmento de los bastones. #os conos, por su parte,
pueden contener tres fotopigmentos diferentes, sensibles a los 152 nm
azul! cianolabe, 252 nm verde! clorolabe " 262 nm rojo! eritrolabe.
#a cantidad de energa radiante " las longitudes de onda son los factores
fsicos de la luz esenciales para el proceso visual. #a cantidad de energa
radiante se interpreta como -brillantez. mientras que las longitudes de
onda son la base para la discriminacin del color.
#os bastones son los sensores ligados a la percepcin del blanco, gris "
negro, respondiendo a todas las radiaciones del espectro visual e incluso a
las de la banda ultravioleta. & diferencia de los bastones, los conos slo son
sensibles a diferentes longitudes de onda de manera selectiva.
#a visin en color depende de dos procesos. El primero es la actividad
receptora de tres tipos de conos. El segundo el procesamiento dentro del
sistema nervioso central. ,el primer proceso se sabe muc%o " est bien
estudiado, sin embargo del segundo se desconoce prcticamente todo.
Teora dual de la visin
#a teora dual de la visin se basa en la concepcin de la retina como si
fuera un mosaico de -cuatro. tipo de receptores los bastones " los tres
tipos de conos!. #os bastones son sensibles a la luz de baja intensidad " los
conos se especializan en la visin en color " en el registro de detalles finos.
#as modernas variante de esta teora no %acen incapi en la distinta
funcionalidad de conos " bastones, sino ms bien en la interaccin entre
conos, bastones " otras neuronas retinianas.
Sin embargo, el nombre de esta teora evoca otra dualidad curiosa. #a
dualidad de la luz, como -partcula. " como -onda.. +arecera que los
bastones son sensibles a los fotones como partculas mientras que los
conos lo seran como ondas.
Campos receptores de la retina
En la retina de cada ojo e*isten unos 307 millones de bastones, 8
millones de conos " algo ms de un milln de clulas gaglionares cu"as
fibras forman el nervio ptico. #a desigualdad entre el n(mero de
receptores " de clulas -transportadoras. evidencia el fenmeno de
convergencia que opera en la retina. Esta convergencia es lo que
conocemos como campos receptores. 9n campo receptor es la superficie
que cubren los receptores que estimulan al mismo neurocito ganglionar.
[ 66 ] Tecnologas Libres para Sntesis de Imagen 3D
#a fosa o mcula carece de bastones " contiene entorno a los 1.777 conos
" la misma cantidad de neurocitos. En ella, el campo receptor se
corresponde con los 0 m apro*imadamente, lo que corresponde con un
ngulo corneal de slo unos pocos minutos. Esta zona es la regin de
ma"or discriminacin de la retina " la parte del objeto percibido con ms
detalle es el que se pro"ecta sobre esta zona.
En la retina perifrica un campo receptor puede tener %asta :3mm: de
dimetro, lo que corresponde con un arco de 3 en el campo visual que
abarca 160!.
Estos campos receptores e*trafoveales con sensores mezclados conos "
bastones! no son mu" precisos, pero a cambio pueden trabajar con
estimulaciones " umbrales ms bajos.
Aspectos funcionales de la visin
+ara nosotros es imposible mantener los ojos quietos un solo instante,
ni a(n cuando concentramos nuestra mirada en algo, siempre se producen
peque;os movimientos. Esta especie de -barrido. de alta frecuencia es
esencial para mantener una imagen visual. <uando e*perimentalmente se
consigue mantener la pro"eccin de una imagen sobre la retina de forma
esttica, la misma tiende a desvanecerse, a disminuir su coloracin " a que
sus contornos se desvanezcan, como se puede advertir en la figura 0.
Figura 2. Si fijamos la vista en el punto central la corola parece difuminarse.
Psicofisiologa de la percepcin [ 67 ]
Figura 3. !l efecto de in"i#ir los #ordes tiene como
resultado la aparici$n de puntos negros fantasmas.
Agudeza de contornos y contraste
En la percepcin de los contornos se encuentra implicado un fenmeno
perceptivo que se conoce como in"i#ici$n lateral. El fenmeno es un
mecanismo de interaccin entre las neuronas para enfatizar los lmites. +or
ejemplo, si colocamos un folio blanco sobre una zona negra. #os efectos de
esta peculiaridad se pueden apreciar en la figura 5.
#a percepcin de los contornos, del color " del contraste, es por tanto, una
apreciacin distorsionada desde la misma recepcin del estmulo. &lgunos
efectos son llamativos como el del ejemplo de Ed=ard $. &delson, que se
puede apreciar en la figura 1. En dic%a figura los cuadros % " & son
e*actamente el mismo tono de gris, sin embargo, el entorno " los
contrastes con las zonas ad"acentes %acen que se interpreten como
cromatismos diferentes.
Adaptacin agudeza visual y visin crom!tica
El ojo no es sensible siempre a la misma cantidad de luz. 9n ojo
adaptado a la oscuridad puede ser estimulado con una diezmilsima parte
de la energa que estimulara al mismo ojo adaptado a la luz. Sin embargo,
la velocidad a la que se adapta el ojo es variable. Se considera que se tarda
una media %ora en que el ojo se adapte a la oscuridad, mientras que la
adaptacin a la luz se realiza en pocos segundos.
[ 68 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 4. 'os cuadros marcados con la % ( la & presentan el mismo mati)
de gris sin em#argo, son perci#idos de manera distinta por el ojo.
#a capacidad que tiene el ojo para adaptarse a la oscuridad no depende
slo de la cantidad de luz. Se %a comprobado que determinados estados de
nimo, la cantidad de o*geno en sangre " otros factores influ"en en la
adaptacin de la pupila.
#a agudeza visual del ojo es la medida en que puede distinguir detalles.
,ic%o de otro modo: la agudeza visual la podemos medir como la distancia
mnima entre dos puntos para que sean percibidos como tales " no como
una sola forma. +or supuesto la zona de ma"or agudeza de la retina es la
fbea.
<lnicamente la agudeza visual se mide con una fraccin cu"o numerador
es siempre 07. Ese numero representa el n(mero de pies 6 metros
apro*imadamente! que se toma por referencia. Es decir, una persona con
una agudeza visual normal tendra un valor *0+*0, es decir a veinte pies
puede distinguir letras que se distinguen a 07 pies. Si tiene una agudeza
visual de *0+100 quiere decir que est distinguiendo a 377 pies las letras
que una persona normal distinguira a 07. Si la agudeza visual es de *0+1,
quiere decir que distingue las letras a tan slo 32 pies.
#a visin cromtica es la interpretacin que %ace el cerebro de la recepcin
de distintas longitudes de onda " es por tanto una e*periencia subjetiva. #a
interpretacin de la luz amarilla cuando se estimulan simultneamente
Psicofisiologa de la percepcin [ 69 ]
receptores rojos " verdes se considera que es consecuencia del
procesamiento cortical. #a percepcin del color es algo limitado a algunos
vertebrados diurnos. +arece que durante la filogenia la percepcin del
color evolucion de forma independiente muc%as veces.
El tono de un color es la medida de la longitud de onda que se percibe' el
rojo, verde, azul" amarillo son tonos diferentes.
El brillo de un color es la sensacin subjetiva determinada por la cantidad
de negro en el color. El ms negro es el menos brillante, es decir, a ma"or
cantidad de negro se absorbe una ma"or cantidad de luz " por tanto se
refleja una cantidad menor.
#a saturacin o pure)a de un color es la sensacin subjetiva
determinada por la cantidad de blanco dentro del mismo. El blanco altera
el tono debido a que est compuesto por colores. <uanto menos blanco
tenga se dice que el color est -ms saturado. o es -ms puro su matiz..
El efecto Pur"in#e
El efecto +ur>inje debe su nombre a dic%o e*perimentador que
observ que %aba diferencias de percepcin cromtica en situaciones de
poca intensidad lumnica. ?bserv que las flores ligeramente azules lo eran
ms a la cada de la tarde, mientras que en el crep(sculo las flores rojas
parecan prcticamente negras. ,e %ec%o, esa es la e*plicacin para la
abundancia del color rojo en el fondo marino, muc%os peces, corales "
animales presentan dic%o color para camuflarse en la oscuridad.
El ojo adaptado a la oscuridad es ms sensible al verde, mientras que el
adaptado a la luz lo es ms al amarillo.
Postim!genes
#as postimgenes son sensaciones pticas que persisten despus de
presentado el estmulo " pueden ser de dos tipos: las postimgenes
negativas " las postimgenes positivas.
#as postimgenes negativas se producen cuando miramos un estmulo
durante unos 37 segundos " despus fijamos la mirada en una superficie
blanca. #a imagen que se produce es complementaria al estmulo original.
)enemos un ejemplo en la figura 2.
#a postimagen positiva se produce cuando un estmulo iluminado
intensamente se presenta durante 0 5 segundos " despus se cierran los
ojos. Esta postimagen se parece al estmulo original en color " forma,
aunque no en intensidad.
[ 70 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 5. -irar fijamente a la cru) durante unos 10 segundos ( despu.s
fijar la mirada en la cru) de la derec"a, la postimagen formada de#er/a
corresponder con los colores de la #andera espa0ola
1
.
Aspectos psicolgicos de la percepcin
9no de los factores que ms influ"en en la percepcin es la atencin.
)odos conocemos la diferencia de actitud que %a" entre ver " mirar o entre
escuc%ar " or. #a atenci$n es pues uno de los primeros factores
psicolgicos que van a modificar la percepcin.
#a atencin dista bastante de ser una forma de informacin pasiva. &l
contrario, consiste en modificar el estado de vigilancia sobre determinados
estmulos, de forma que aumenta el nivel de -alerta. que producen los
mismos. #a cantidad de estmulos a los que puede atender el cerebro
%umano de forma simultnea est limitada a un rango de 6 a 33, seg(n los
casos. Esta limitacin se ve compensada por la concurrencia de otras
caractersticas o propiedades funcionales.
Esta limitacin de amplitud e*ige que se %aga una seleccin de estmulos
juzgando la relevancia de unos " otros. En esencia, sirven para establecer
esta relevancia factores como el contraste, el tama;o, la intensidad " el
movimiento de los objetos o estmulos.
$eyes de la percepcin
#as llamadas -le"es de la percepcin. fueron formuladas en su ma"ora
por los llamados -psiclogos de la forma. o 1estalt. El gran n(mero de
stas podemos reducirlo a tres grupos fundamentales: las que se refieren a
la separacin entre figura " fondo, las que aluden a las propiedades de las
1 ota del maquetador: !uponiendo que la impresin de este documento que tienes en tus
manos es en color. :" #n la imagen a color, las bandas exteriores son de color verde $ la
central de color azul.
Psicofisiologa de la percepcin [ 71 ]
totalidades figurales " las que precisan las condiciones por las que se
agrupan estmulos en figuras.
+or ejemplo, 2elson defini cinco principios:
3. Ley de la primaca, en virtud de la cual los todos son primarios
" aparecen con prioridad a las partes.
0. +ercibir todos es ms natural que percibir partes. Ley de la
pregnancia.
5. #os todos figuras! tienden a articularse de la forma ms completa,
simtrica, sencilla " perfecta posible. Ley de la buena figura.
1. #a ley de la autonoma que los todos tienden a ser regulados
por factores intrnsecos, ms que por factores e*ternos a ellos.
2. @inalmente, las partes derivan sus propiedades de su posicin, o
funcin en el todo. ,e a% la posibilidad de que un mismo estmulo
sirva de base a la percepcin de figuras diferentes, como en el caso
de las figuras reversibles. Ley de la flexibilidad del contorno.
#as le"es que rigen la agrupacin de los estmulos mencionan los
siguientes factores:
3. Proximidad: a igualdad de circunstancias, los estmulos ms
pr*imos tienden a percibirse como formando parte de un mismo
objeto.
0. Semejanza: a igualdad de circunstancias, los estmulos ms
semejantes tienden a percibirse como formando parte de un
mismo objeto.
5. Continuidad: a igualdad de circunstancias, tendemos a percibir
como formando parte de una misma figura los estmulos que
guardan entre s una continuidad de forma.
1. Simetra: la tendencia a organizar los estmulos en una forma
simtrica, puede competir con alguna de las anteriores le"es, por
ejemplo, con la de la semejanza, " configurar unitariamente
estmulos %eterogneos.
2. Constancia: la tendencia a precibir los objetos e*teriores de una
manera estable. +or ejemplo, si observamos un objeto a un metro
de distancia " nos separamos de l, su imagen en nuestra retina se
%ace ms peque;a, sin embargo seguimos percibiendo sus
demensiones de manera constate.
[ 72 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 6. %lgunas figuras 3ue ejemplifican las le(es de la percepci$n.
El n(mero de las le"es de la percepcin e*cede con muc%o las
e*puestas aqu. Sera imposible en este espacio de tiempo %ablar de todas
ellas. Astas, las e*puestas por la Bestalt, junto con algunas otras como la de
la constancia perceptiva, constitu"en el cuerpo bsico de las le"es de la
percepcin siendo las dems meros derivados o incluso redundancias de
las mismas.
La Matemtica de los Grficos 3D
Juan David Gonzlez Cobas
coba@epsig.uniovi.es ::
ste documento aporta un repaso de matemticas
pertinentes a las tareas que afrontan cada da artistas y
desarrolladores 3D. Se incluyen aspectos de la geometra
de los grficos3D, la representacin de obetos y sus
transformaciones geom!tricas.
"
Sistemas de coordenadas
La descripcin de escenas tridimensionales requiere usualmente el empleo
de un sistema de coordenadas cartesiano. Los puntos del espacio quedan
determinados de forma nica por sus tres coordenadas cartesianas (x, y,
z).
Hay otros sistemas que no se emplean tanto en grficos 3D. Los ms
corrientes son las coordenadas cilndricas y esfricas.
Los tres sistemas asignan coordenadas a los puntos de acuerdo al esquema
de la figura 1. Cada sistema usa tres de las dimensiones que all se
referencian:
cartesianas: (x,y,z)
cilndricas: (,,z)
esfricas: (r,, )
Las ecuaciones que nos permiten camiar entre un sistema y otro son:
Cartesianas !sf"ricas Cartesianas Cilndricas
# $ r sin cos # $ , cos
y $ r sin sin y $ sin
% $ r cos
% $ %
[ 73 ]
F
u
n
d
a
m
e
n
t
o
s
[ 74 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 1. Sistemas de coordenadas cartesianas, cilndricas y esfricas.
De mayor importancia en grficos por computador son las coordenadas
&omog"neas o proyecti'as. Los puntos ordinarios del espacio
tridimensional recien cuatro coordenadas en lugar de tres:
(#)y)%* (#)y)%)w)
!sto introduce una redundancia e'idente) de forma que a cada punto
del espacio le asignamos infinitas cuaternas de coordenadas &omog"neas)
de acuerdo con la equi'alencia:
(#) y) %) +* (#,) y, )%, )+,*
(#) y) %) +* $ (#,) y, ) % ,) +,* para algn 0
de forma que cuaternas proporcionales denoten el mismo punto. La terna
usual (x, y, z) se identifica con la cuaterna (x, y, z, 1)) y la cuaterna (x, y, z,
w) denota un punto (x/w, y/w, z/w) del espacio ordinario.
-i w$.) tenemos un punto del infinito/ lo que logramos con la introduccin
de cuaternas es) precisamente) una coordinati%acin de la geometra del
espacio proyecti'o tridimensional. !sta es la primera 'enta0a de la
representacin: no se necesita ningn tratamiento especial para puntos del
infinito casos especiales de paralelismo. Las transformaciones proyecti'as
se traducen fcilmente a transformaciones lineales en el espacio de 12
tuplas (es decir) a matrices 1 x 1*. 3tra 'enta0a es que las transformaciones
afines usuales tami"n se tratan de forma regular como productos de
matrices) como 'eremos en la seccin 1.
La Matemtica de los Grficos 3D [ 75 ]
Figura 2. Coordenadas Proyectivas.
lgebra vectorial
Oeraciones con vectores
Los 'ectores del espacio tridimensional se representan por lo comn
por sus coordenadas cartesianas) y las operaciones con 'ectores se definen
en t"rminos de ellas:
adicin
(#) y) %* 4 (#,) y,) %,* $ (# 4 #,) y 4 y,) % 4 %,*
substraccin
(#) y) %* 2 (#,) y,) %,* $ (# 2 #,) y 2 y,) % 2 %,*
escalado
(#) y) %* $ ( #) y) %*
producto escalar
(#) y) %* 5 (#,) y,) %,* $ ##, 4 yy, 4 %%,
norma
x , y , z=

vv

[ x
2
y
2
z
2
]
producto vectorial
(#) y) %* 5 (#,) y,) %,* $ (#) y) %* (#,) y,) %,* $ (y%, 2 %y,) %#, 2 #%,) #y, 6 y#,*
[ 76 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 3. Interretaci!n "eomtrica de las oeraciones con vectores.
!nterretaciones geom"tricas
La interpretacin geom"trica de estas operaciones puede 'erse en la
figura 3. !n ella 'emos que el producto escalar tiene la interpretacin
alternati'a
vw=vwcos
y el producto 'ectorial es ortogonal a los factores) con mdulo igual al rea
del paralelogramo que definen:
vw=vwsin
De esto deducimos que los dos productos son de especial inter"s) al
permitirnos calcular los elementos m"tricos de un modelo: distancias)
ngulos) rea) 'olmenes) ortogonalidad y paralelismo. 7eamos algunos
e0emplos:
La norma de un 'ector v # (x, y, z) (su longitud* se calcula por
medio del producto escalar:
v=

vv
La distancia entre dos puntos es la norma del 'ector que los une:
8 $ (#) y) %*
9 $ (#,) y,) %,*
8 9 $ (#, 2 #) y, 2 y) %, 6 %*
d P ,Q=P , Q=

x ' x
2
y' y
2
z' z
2
La Matemtica de los Grficos 3D [ 77 ]
Figura 4. $ol%men de %n araleleedo.
!l ngulo f entre v y w es
cos=
vw
vw
Dos 'ectores son ortogonales si y s y slo si
vw=0
:n 'ector normal al plano definido por v y w 'iene dado por
vw
!l 'olumen del paraleleppedo (celda* definido por los 'ectores u,
v, w ('er figura 1* es
det u , v , w=uvw=

u
1
u
2
u
3
v
1
v
2
v
3
w
1
w
2
w
3

!sta cantidad se conoce tami"n como el triple producto de los 'ectores %,


v, w o) ms corrientemente) su determinante. !l cmputo del mismo sigue
reglas ien conocidas en las que no nos detendremos demasiado.
#ases
Dado cualquier con0unto de 'ectores ;'
1
) '
<
) ...) '
n
=) el suespacio
engendrado por ellos es el con0unto de todos los 'ectores que podemos
construir como cominacin lineal de ;'
1
) '
<
) ...) '
n
=) usando la suma y la
multiplicacin por escalares:
v
1,
v
2,
... , v
n
={ww=
1
v
1

2
v
2
...
n
v
n
}
!l con0unto ;'
1
) '
<
) ...) '
n
= es lire) o linealmente independiente) si

1
v
1

2
v
2
...
n
v
n
=0
1
=
2
=...=
n
=0
[ 78 ] Tecnologas Libres para Sntesis de Imagen 3D
o) de otro modo) si ningn 'ector del con0unto puede e#presarse como una
cominacin lineal de los dems. :n con0unto lire que genera el espacio
total en consideracin es una ase del mismo. !n nuestro espacio
tridimensional) todas las ases tienen tres elementos. >dems) una ase ?
$ ;e
1
) ... )e
n
= donde 'ectores diferentes son ortogonales
e
i
e
j
=0sii ij
se denomina orto"onal. -i adems
e
i
e
j
=1
es decir) todos los 'ectores son de norma unidad) la ase es
ortonormal. !n una ase ortonormal) los 'ectores se pueden e#presar de
forma simple y con'eniente como sigue:
x= xe
1
e
1
xe
2
e
2
xe
3
e
3
Geometr$a af$n % ro%ectiva
!n la seccin pre'ia &emos mencionado de pasada la distancia entre
puntos) y usado sin restriccin la notacin 8)9 para referirnos al 'ector que
une el punto 8 con el punto 9. @igurosamente &alando) esto slo es
legtimo si al espacio tridimensional ordinario (carente de coordenadas* lo
dotamos de una estructura afn.
!sto significa)simplemente) que e#iste una operacin para trasladar
cualquier punto 8 por cualquier 'ector ') de forma que el resultado sea otro
punto que denotaremos por P&v. La operacin de traslacin dee
satisfacer las propiedades o'ias siguientes:
1. 8ara cada 'ector ') la correspondencia PP & v es uno a uno.
<. 8ara cada punto P) se cumple P & ' # P
3. 8ara cada punto P y 'ectores v, w) tenemos
(P & v) & w # P & (v & w)
!stas propiedades son tan o'ias en el traa0o 3D ordinario) que las
usamos sin conciencia de ello. La e#istencia de un 'ector que une 8 con 9)
por e0emplo) es una consecuencia de ellas/ la asignacin de coordenadas en
el espacio ordinario tami"n lo es. -i aAadimos a esto la e#istencia de un
producto escalar) podemos definir conceptos de distancia) ngulos y
ortogonalidad) de forma que cualquier prolema de geometra m"trica
puede resol'erse de forma analtica.
La Matemtica de los Grficos 3D [ 79 ]
Figura 5. (c%aciones de %n lano.
@esumimos a continuacin los &ec&os ms simples relati'os a
entidades BrectasC en geometra afn tridimensional: puntos) lneas y
planos. !stas son las 'ariedad afines o lineales de la geometra &aitual) y
pueden definirse siempre por medio de sistemas de ecuaciones lineales.
&lanos
:n plano se suele definir de dos maneras:
ecuacin implcita
8or medio de una sola ecuacin lineal que satisfacen las coordenadas
de los puntos del plano
># 4 ?y 4 C% 4 D $ .
ecuacin paramtrica
Los puntos del plano se otienen arriendo todos los posiles 'alores
de dos parmetros reales % y v. !n forma 'ectorial
P=P
0
u , P
0
P
1
v , P
0
P
2
[ 80 ] Tecnologas Libres para Sntesis de Imagen 3D
o) en coordenadas

x
y
z

x
0
y
0
z
0

u ,

a
b
c

v ,

a'
b'
c'

Los 'ectores (a) ) c* y (a,) ,) c,* son 'ectores de direccin del plano. !s
fcil pasar de una representacin a otras: a partir de la ecuacin implcita
es fcil otener tres puntos no colineales 8
.
) 8
1
) 8
<
que nos dan las
ecuaciones param"tricas. !l paso de las ecuaciones param"tricas a la
implcita requerira) en principio) eliminar por reduccin los parmetros
%,v. 8ero &ay un m"todo ms fcil usando el producto 'ectorial:
A, B ,C=P
0
P
1
P
0
P
2
=a , b , c a' , b ' , c '
D= A, B, CP
0
L$neas
Las rectas pueden definirse por un punto y una direccin) o por la
interseccin de dos planos. !sto da lugar a las posiles representaciones
analticas de la recta con
ecuaciones implcitas.
Dos ecuaciones lineales (independientes* que definen la lnea como
interseccin de dos planos:
>1x 4 ?1y 4 C1z 4 D1 $ .
><x 4 ?<y 4 C<z 4 D< $ .
ecuacin paramtrica
Dos dan las coordenadas de puntos de la lnea al arrer un paretro
real u todos los 'alores posiles:

x
y
z

=P
0
u P
0
P
1

x
0
y
0
z
0

u ,

a
b
c

De nue'o) la con'ersin entre las dos representaciones es sencilla. La


ecuacin param"trica puede ponerse en forma implcita eliminando el
parmetro %/ y de las ecuaciones implcitas otenemos fcilmente dos
puntos con los que construir la param"trica/ o un punto y el 'ector de
direccin) proporcionado por la e#presin
8
.
8
1
$ (>
1
) ?
1
) C
1
* (>
<
) ?
<
) C
<
*.
La Matemtica de los Grficos 3D [ 81 ]
Figura 6. (c%aciones de %na lnea recta.
Geometr$a de la incidencia % geometr$a m"trica
Con estos conceptos) y teniendo en mente las propiedades del producto
escalar y 'ectorial) podemos resol'er cualquier prolema de geometra
analtica elemental. Ee0or que una enumeracin de prolemas2tipo) 'amos
a resol'er algunos prolemas sencillos para adquirir una impresin de las
t"cnicas que conlle'an. 8or e0emplo) queremos calcular la distancia entre
dos rectas) como se muestra en la figura F. >mas rectas r
1
y r
<
'ienen
dadas por puntos 8
i
y 'ectores directores u
i
. :n poco de refle#in nos
con'encer de que la distancia mnima d entre las dos rectas se alcan%a
entre puntos 9
1
y 9
<
tales que el segmento 9
1
9
<
es ortogonal a las rectas
dadas. 8odemos 'er esto ms claramente construyendo los planos
paralelos p
1
y p
<
que contienen a cada recta/ entonces)9
1
9
<
es
perpendicular a amos. >s pues
d=

Q
1
Q
2

y Q
1
Q
2
u
1,
u
2
y entonces 919< $ u1 u<. >&ora) el 'ector 818< une puntos de amas
rectas) que son ortogonales a 919<. !ntonces) el producto escalar con el
'ector unitario u1 u< nos dar el mdulo de la proyeccin de 818< sore
919<) que es e#actamente d. 3tenemos
d=P
1
P
2
u
1
u
2
=det P
1
P
2,
u
1,
u
2

[ 82 ] Tecnologas Libres para Sntesis de Imagen 3D


Figura 7. ()emlo de la distancia entre dos rectas.
Matrices % transformaciones geom"tricas
Las tareas que podemos reali%ar con los conceptos 'istos &asta a&ora son
astante elementales. :n tratamiento ms potente de los o0etos
geom"tricos e#ige poder e#presar operaciones comple0as con las formas. !l
m"todo &aitual de representar transformaciones lineales) y de calcular
sus efectos) es el uso de matrices.
:na matri% mn es una tala rectangular de nmeros de la forma

a
11
a
12
... a
1n
a
21
a
22
... a
2n
... ... ...
a
m1
a
m2
... a
mn

que se escrie de forma ms compacta como (ai0*1im)10n o


simplemente como (ai0* si las dimensiones de la matri% se soreentienden.
>l igual que los 'ectores) las matrices pueden sumarse y restarse
La Matemtica de los Grficos 3D [ 83 ]
componente a componente. !l producto de matrices 'iene definido por la
regla
A= a
ij
i=1... m, j=1. .. n
B=b
jk
j=1... n , k=1... p
AB= c
ik
i=1... m , k=1. .. p
y
C
ik
=

j=1
n
a
ij
b
jk
3ser'emos que) incluso cuando m # n # ) tenemos) es decir) el
producto de matrices no es conmutati'o. La transpuesta de una matri% se
otiene intercamiando filas y columnas:
A= a
ij
A
T
= a
ji

:na matri% cuadrada > de dimensin nn es regular si e#iste otra


matri% ? de la misma dimensin que cumpla que >? $ ?> $ 1. -i e#iste) la
matri% ? se denomina in'ersa de >) y se denota por >
21
.
Dormalmente) usaremos 'ectores fila y 'ectores columna para representar
puntos y 'ectores) y matrices cuadradas para representar transformaciones
lineales. Las dimensiones de nuestras matrices sern 33 o ien 11 casi
siempre.
Comencemos e#presando matricialmente el efecto sore un o0eto de una
traslacin de 'ector v # (vx, vy,vz). :na transformacin de este tipo
manda un punto (x, y, z) a otro (x*, y*, z*)) donde

x '
y'
z '

x
y
z

v
x
v
y
v
z

o) de manera ms compacta) P* # P & v. 7emos aqu que esta


transformacin no es) estrictamente &alando) lineal: sus ecuaciones
presentan t"rminos independientes. GCmo e#presaramos analticamente
una refle#in especular alrededor del plano HIJ Kal refle#in camiara el
signo de las coordenadas %) de0ando las dems intactas. Kales camios
independientes se e#presaran por medio de ecuaciones
[ 84 ] Tecnologas Libres para Sntesis de Imagen 3D
#, $ #
y, $ y
%, $ 2 %
que seran) en forma matricial

x '
y'
z '

1 0 0
0 1 0
0 0 1

x
y
z

De &ec&o) c%al+%ier transformacin lineal puede ponerse en forma


matricial. La receta es:
1. escogemos una ase e
1)
e
<
) e
3
1. aplicamos la transformacin a los 'ectores de la misma)
oteniendo f
1
$ Ke
1
) f
<
$ Ke
<
) f
3
$ Ke
3
<. ponemos los 'ectores as otenidos como columnas de la matri%
deseada.
3tra transformacin usual es la &omotecia o escalado por un factor l.
Daturalmente) si ' , l , 1) tenemos una contraccin) mientras que si l L 1
tenemos una dilatacin. Cuando l $21) la denominamos refle#in respecto
al origen. Cada coordenada de un punto queda multiplicada por l) de modo
que

x '
y'
z '

0 0
0 0
0 0

x
y
z

La rotaci!n constituye un caso ms interesante. 9ueda determinada


por el e0e de rotacin y un ngulo. La rotacin de ngulo f respecto al e0e %
puede calcularse usando la receta anterior:
1. -ea (1) .) .*) (.) 1) .*) (.) .) 1* la ase.
<. rot"mosla) oteniendo los 'ectores (cos f, sin f) .*) ( - sin f, cos f)
.*) (.) .) 1*
3. construyamos una matri% con esas tres columnas
R

cos sin 0
sin cos 0
0 0 1

La Matemtica de los Grficos 3D [ 85 ]


8odemos comproar que la transformacin de coordenadas es la correcta:

x '
y'
z '

cos sin 0
sin cos 0
0 0 1

x
y
z

-i rotamos un ngulo q alrededor del e0e x) otenemos una matri%


distinta:

x '
y'
z '

1 0 0
0 cos sin
0 sin cos

x
y
z

I si aplicamos amas rotaciones en sucesin) otenemos

x '
y'
z '

cos sin 0
sin cos 0
0 0 1

1 0 0
0 cos sin
0 sin cos

x
y
z

La composicin de amas rotaciones la proporciona la matri%


producto) que es) en este caso:
R=R
x
R
z
=

cos sin 0
cossin coscos sin
sin sin cossin cos

!sto no tiene el aspecto de ninguna de las rotaciones anteriores) pero
es una de ellas) alrededor de algn e0e. GCmo podemos saerloJ 8orque la
matri% resultante es ortogonal:
@
t
@ $ @@
t
$ 1
donde 1denota la matri% identidad) que tiene ceros fuera de la diagonal
principal y unos en ella. :na matri% ortogonal representa una
transformacin que preser'a las longitudes(y)consecuentemente) los
ngulos y los productos escalares*. :n ci%alla0e no preser'a las distancias.
Como e0emplo de uno) la matri%

x '
y'
z '

1 0 S
x
0 0 S
y
0 0 1

x
y
z

[ 86 ] Tecnologas Libres para Sntesis de Imagen 3D


Figura 8. Cizalla)e de %n c%.o.
!sto tiene como efecto despla%ar las Bcapas superioresC de un cuo de
una manera parecida a como ocurrira con un ma%o de cartas) segn se
muestra en la figura M.
G9u" sucede si queremos componer un ci%alla0e con una traslacin) y
despu"s aplicar una rotacinJ La cosa se desorgani%a un poquito:
H, $ @(-H 4 ?* $ @-H 4 @?
por culpa de los t"rminos independientes en el producto. !n general)
otendremos siempre una transformacin del tipo
X ' =AXB o

x'
y'
z'

a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33

x
y
z

b
1
b
2
b
3

>&ora podemos apreciar la 'enta0a de usar coordenadas &omog"neas.


!l espacio afn ordinario puede dotarse de coordenadas con una cuarta
componente adicional) de 'alor unidad) de manera que la ecuacin
anterior se podr escriir como
La Matemtica de los Grficos 3D [ 87 ]
X ' =AX o

x '
y '
z '
1

a
11
a
12
a
13
b
1
a
21
a
22
a
23
b
2
a
31
a
32
a
33
b
3
0 0 0 1

x
y
z
1

Kodas las transformaciones anteriores pueden escriirse as y cualquier


transformacin afn admite) en coordenadas &omog"neas) la forma de una
transformacin lineal) componi"ndose entre ellas por simple producto de
matrices.
Sumario ro%ectivo
Como resumen) 'eamos la forma que adoptan) en 16coordenadas
proyecti'as) algunas de las transformaciones mencionadas anteriormente:
Traslacin
T=

1 0 0 T
x
0 1 0 T
y
0 0 1 T
z
0 0 0 1

Reflexin
T=

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

Cizallaje
S=

1 0 S
x
0
0 1 S
y
0
0 0 1 0
0 0 0 1

[ 88 ] Tecnologas Libres para Sntesis de Imagen 3D


Rotacin
S=

cos sin 0 0
sin cos 0 0
0 0 1 0
0 0 0 1

Proyeccin
T=

1 0 0 0
0 1 0 0
0 0 1 0
0
1
d
0 0

Determinantes
Consideremos una transformacin lineal aritraria) como la
representada en la figura N. La transformacin distorsiona la ca0a a%ul)
con'irti"ndola en un paraleleppedo representado en ro0o. Hemos &ec&o
coincidir las aristas de la ca0a con los 'ectores de la ase cannica e1) e<)
e3) de modo que las aristas a%ules correspondientes se transforman en los
'ectores f1$Ke1) f<$Ke<) f3$Ke3 que son aristas que definen el
paraleleppedo ro0o.
GCul es el 'olumen del paraleleppedoJ Hay tres &ec&os o'ios
-i dos 'ectores fi coinciden) el 'olumen es nulo.
7(f1) f<) f3* $ . si f1 $ f<
:n ci%alla0e no camia el 'olumen ('er figura M*.
7(f1 4 f<) f<) f3* $ 7(f1) f<) f3*
La dilatacin de un 'ector dilata de la misma forma el 'olumen
7(f1) f<) f3* $ 7(f1) f<) f3*
Las propiedades indicadas son 'lidas) naturalmente) para cualquier
posicin funcional de 7(O*. !stas resultan ser las propiedades que definen
de forma nica (e#cepto un factor constante* al determinante de una
matri%. !scriimos
La Matemtica de los Grficos 3D [ 89 ]
V f
1,
f
2,
f
3
=
[
f
11
f
12
f
13
f
21
f
22
f
23
f
31
f
32
f
33
]
=

!S
n
sign
"
i=1
n
f
i i
(1*
La definicin general de determinante) que es el tercer t"rmino de la
frmula anterior) es
[
a
11
a
12
a
21
a
22
]
=a
11
a
22
a
12
a
21
[
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
]
=a
11
a
22
a
33
a
12
a
23
a
31
a
13
a
21
a
32
a
11
a
23
a
32
a
12
a
21
a
33
a
13
a
22
a
31
Eanipulando la definicin (1* podemos llegar a la frmula
det A=

i=1
n
1
i1
det A
1i

donde >1i se otiene de > al suprimir su primera fila y su i6"sima


columna. !sta frmula permite el clculo por recurrencia de determinantes
no muy grandes:
[
6 3 9
2 3 1
1 2 3
]
=6
[
3 1
2 3
]
3
[
2 1
1 3
]
9
[
2 3
1 2
]
=6 92361943=36
8ara rdenes mayores) esto es intil) y resulta preferile usar las
propiedades que definen el determinante) a saer: podemos aAadir a
cualquier fila una cominacin lineal de las dems. !sto permite ir
&aciendo ceros un una columna de forma que el clculo se reduce a un
determinante de orden inferior en 'irtud del desarrollo anterior det(>*.
8ero &ay una forma muc&o ms rpida de aplicar esta receta/ la
e#plicaremos en la seccin siguiente.
[ 90 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 9. /eterminante como medida de vol%men.
lgebra lineal num"rica % resoluci'n de ecuaciones
!n la seccin P) oser'amos que algunas tareas tienen astante coste
computacional. Dos gustara ali'iar ese coste para que nuestros programas
no se perpeten en ucles interminales. Decesitamos a menudo
in'ertir una matri%
calcular un determinante
resol'er un sistema de ecuaciones lineales
encontrar una ase ortogonalQortonormal de un suespacio
encontrar los ceros de un polinomio
resol'er ecuaciones y sistemas no lineales
a0ustar una cur'a o funcin a un con0unto de puntos
La mayora de estas tareas son el tema del 0l"e.ra lineal n%mrica/ en
la cual) no nos importan las propiedades algeraicas de las operaciones
lineales) sino solamente encontrar una solucin que sea correcta de la
forma ms rpida posile. Las tareas de la lista anterior en las que no
inter'ienen matrices son el o0eto del anlisis num"rico en general. De
La Matemtica de los Grficos 3D [ 91 ]
nue'o) tampoco nos interesan las propiedades matemticas elegantes) sino
resol'er las cosas) rpido y con precisin suficiente.
La descomosici'n L(
Llamamos as a una forma emellecida de lo que usualmente se
denomina eliminaci!n "a%ssiana: el proceso de &acer ceros en una matri%
cominando filas linealmente. La idea nos lle'a) al final)a una matri% en
forma triangular superior (la parte : de la descomposicin*. -i adems
lle'amos cuenta de las operaciones reali%adas) aplicndoselas a una
flamante matri% unidad) otendremos una matri% triangular inferior (la
parte L del monstruo*) y) mgicamente) llegaremos a algo como esto:
A=

1 6 4
2 3 5
8 2 3

1 6 4
0 9 3
0 46 29

1 6 4
0 9 3
0 0
41
3

=U
@egistrando los multiplicadores en una matri% unidad nue'ecita:

1 0 0
0 1 0
0 0 1

1 0 0
2 1 0
8 0 1

1 0 0
2 1 0
8
46
9
1
=L
y) RmagiaS
L: $ >
!l procedimiento puede reali%arse in situ (sore la propia matri%
original*. Cualquier paquete respetale de lgera lineal num"rica contiene
una funcin estndar que proporciona) por lo comn) las partes L y :
cominadas en una sola matri%) y una permutacin de filas)que se usa para
pi'otar por ra%ones de estailidad num"rica. as) la descomposicin L: se
con'ierte) de forma BoficialC)en
8> $ L:
[ 92 ] Tecnologas Libres para Sntesis de Imagen 3D
donde 8 es una matri% de permutacin cuyo efecto es permutar las filas
de >. 8or e0emplo) si alimentamos a la rutina LTD8>CU de descomposicin
L: con
A=

1 2 3
1 4 1
2 1 5

otenemos
P=

0 0 1
0 1 0
1 0 0

L=

1.00 0.00 0.00


0.50 1.00 0.00
0.50 0.42 1.00

U=

2.00 1.00 5.00


0.00 3.50 3.50
0.00 0.00 2.00

!sta descomposicin se usa) principalmente) en tres prolemas.
Clculo de determinantes
3tenemos
det(>* $ det(8* det(L* det(:*
:na matri% de permutacin como 8 tiene determinante V 1 segn la
paridad de la permutacin. La matri% triangular inferior tiene o'iamente
det(L*$1/ y otenemos) entonces) que) sal'o un signo) det(>* es el producto
de los elementos de la diagonal principal de :. !sto nos permite el clculo
de determinantes en tiempo 3(n3*) que es la comple0idad usual de la
descomposicin L:.
)esoluci'n de sistemas de ecuaciones lineales
-upongamos que nos dan un sistema de ecuaciones lineales como "ste
a
11
#
1
4 a
1<
#
<
4 ... 4 a
1n
#
n
$
1
a
<1
#
1
4 a
<<
#
<
4 ... 4 a<
n
#
n
$
<
. . .
a
n1
#
1
4 a
n<
#
<
4 ... 4 a
nn
#
n
$
n
que escriiremos en forma matricial
La Matemtica de los Grficos 3D [ 93 ]
AX=B o

a
11
a
12
... a
1n
a
21
a
22
... a
2n
... ... ...
a
m1
a
m2
... a
mn

x
1
x
2
$
x
n

b
1
b
2
$
b
n

8odemos usar 'enta0osamente la descomposicin L::


>H $ 8
21
L:H $ ? o ien L:H $ 8? (<*
-al'o una permutacin de los t"rminos independientes) podemos
resol'er la ecuacin < por sustitucin progresi'a y regresi'a) ya que de

1 0 ... 0
l
21
1 ... 0
... ... ...
l
n1
l
m2
... l
mn

w
1
w
2
$
w
n

b
1
b
2
$
b
n

otenemos
w
1
# .
1
(3*
+
<
$
<
2 l
<1
+
1
+
3
$
3
2 l
31
+
1
2 l
3<
+
<
y) en general
w
k
=b
k

j=1
k1
l
kj
w
j
:na 'e% que conocemos los w
i
) usamos el mismo truco &acia atrs con
:. De

u
11
u
12
... u
1n
0 u
22
... u
2n
... ... ...
0 0 ... u
mn

x
1
x
2
$
x
n

w
1
w
2
$
w
n

[ 94 ] Tecnologas Libres para Sntesis de Imagen 3D


escriimos
x
n
=

1
u
nn

w
n
(1*
x
n1
=

1
u
n1n1

w
n1
u
n1, n
x
n

x
n2
=

1
u
n2n2

w
n2
u
n2, n
x
n
u
n2, n1
x
n1
y) en general
x
k
=

1
u
k

x
k

j=1
k1
l
kj
w
j

y el sistema est resuelto.


3ser'emos que si &ay que resol'er un sistema lineal con 'arios 0uegos
de t"rminos independientes) la descomposicin L: puede reutili%arse)
siendo las sustituciones &acia delante y &acia atrs procesos de coste 3(nW*
solamente. !sto tiene una aplicacin directa en
!nversi'n de matrices
>plicando los procesos 3 y 1 a las columnas de la matri% identidad)
otenemos las columnas de la in'ersa de. !ste es)en la prctica)el
procedimiento de in'ersin ms efecti'o para matrices densas.
)esoluci'n de ecuaciones
G9u" &acemos si necesitamos resol'er una ecuacin no linealJ
8ongmonos en el caso siguiente: &emos modelado una superficie por
medio de una funcin param"trica 8(u) '* que nos da el 'ector de posicin
de un punto gen"rico de la mismo como funcin de los parmetros u) '. I
a&ora precisamos encontrar la interseccin de la superficie con el e0e %.
La Matemtica de los Grficos 3D [ 95 ]
La interseccin puede encontrarse resol'iendo el sistema
. $ 8#(u) '*
. $ 8y(u) '*
% $ 8%(u) '*
para u) ') %. 8ensemos) por e0emplo) que 8 es una superficie D:@?-. G9u"
&acemosJ !n primer lugar) pongamos el sistema en la forma
f u , v , z =0 con f u , v , z =

P
x
u , v
P
y
u , v
P
z
u , vz

!n general) este prolema es difcil) y tiene que resol'erse por un


algoritmo num"rico (iterati'o*. 8roemos el m"todo de De+ton.
!mpe%amos con un 'alor inicial de (%, v, z) # (%
'
, v
'
, z
'
*) y lo refinamos
repetidamente aplicndole la frmula
u
i1
, v
i1
, z
i1
=u
i
, v
i
, z
i
Df
1
u
i
, v
i
, z
i
f u
i
, v
i
, z
i

>qu Df
1
u
i
, v
i
, z
i
es la matri% de deri'adas parciales

% f
x
% x
% f
x
% y
% f
x
% z
% f
y
% x
% f
y
% y
% f
y
% z
% f
z
% x
% f
z
% y
% f
z
% z

que se conoce como el 0acoiano de f ) e'aluado en %i, vi, zi. -i e#iste la


duda) s: este es el mismo 0acoiano que encontraremos posteriormente en
la seccin JJ -i tenemos suerte) los puntos sucesi'os que iremos
oteniendo se apro#imarn cada 'e% ms a una solucin de la ecuacin tras
unas cuantas iteraciones. I) si no tenemos suerteX
La con'ergencia del m"todo de De+ton es cuadrtica si tenemos la
fortuna de comen%ar suficientemente cerca de una solucin. !sto quiere
decir que en cada iteracin duplicamos el nmero de cifras e#actas de la
solucin) si todo va .ien (lo que) naturalmente) no tiene por qu" ocurrir
cuando ms lo necesitamos*.
[ 96 ] Tecnologas Libres para Sntesis de Imagen 3D
Geometr$a diferencial en cuatro alabras
Curvas
:na cur'a en el espacio 'iene dada por una representacin
param"trica
t(t*
donde (t* ser un punto gen"rico de la cur'a) que es arrido al &acer
'ariar t a lo largo de un inter'alo (llamado dominio del parmetro*. La
'elocidad a la que circulamos por la cur'a es la deri'ada ,(t*) y la acelera2
cin es ,,(t*. La longitud de un segmento de cur'a la da la frmula
Lt
0,
t
1
=
&
t
1
t
0
' t dt
-i ponemos s # 1(t
'
, t)) podemos usar s como parmetro. !sto tiene la
'enta0a de simplificar astante algunos clculos. La descomposicin
' t =
d
dt
=

' t

T =vT
se con'ierte en
' s=
d
ds
=' sT =T
al usar como parmetro la longitud de arco. !n ella) K es el 'ector
tangente unitario. Como K O K es constante) <K, O K $ . y deducimos que K,
es ortogonal a K. 8or tanto) es un 'ector normal cuyo mdulo mide la
'elocidad de rotacin de K) la cual es in'ersamente proporcional al radio
de cur'atura. Llamamos a YK,Y la cur'atura Z.
' ' s =T ' =' N
con D unitario normal a la cur'a. -i ponemos ? $ K D) es fcil
deri'ar que la trada ortonormal (K) D) ?*) como funcin de la longitud de
arco s) satisface las ecuaciones.
K, $ ZD
D, $ 2 ZK 2 t?
?, $ tD
La Matemtica de los Grficos 3D [ 97 ]
Figura 10. 2riedro m!vil de 3renet.
donde t es una funcin que mide cunto dista la cur'a de ser plana: la
torsin. Llamamos a ? el 'ector inormal) y las ecuaciones JJ son las
f!rm%las de 3renet-Serret.
-lo para fsicos: sin duda) se &arn dado cuenta ya de que
K, $ D K
D, $ D D
?, $ D ?
si D $ Z? 2 tK. G-era me0or decir D $ (J
Suerficies
!n la seccin N 'eremos que) adems de por mallas triangulares o
poligonales) podemos modelar superficies empleando funciones ms
complicadas)como polinomios icicos. !n general)podemos descriir
una superficie por un arc4e coordenado/ una funcin de 'alor 'ectorial
con dos parmetros (%,v* que recorre lo puntos de la superficie a medida
que % y v 'an arriendo su dominio de 'alores) segn 'emos en la figura 11.
@esulta importante saer cmo reali%ar clculos con esta representacin.
[ 98 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 11. S%erficie Paramtrica.
!n la figura se 'e fcilmente que) al mantener fi0o v y &acer 'ariar %)
otenemos una familia de cur'as (una cur'a por cada v fi0o*/ y) camiando
los papeles de las dos coordenadas) se otiene otra familia parametri%ada
por %. -e otiene) pues) una red de cur'as coordenadas que curen todo el
parc&e. !l 'ector x(%,v) es una funcin de dos 'ariales. Deri'ando
parcialmente otenemos los dos vectores tan"entes.
x
u
=
% x
%u
x
v
=
% x
%v
que) 0unto con el punto # si
.
$ x(%
',
v
'
)) definen el plano tangente a la
superficie en #
.
. La normal en #
.
se otiene la forma &aitual
D $ #
u
#
'
y se puede normali%ar si es necesario.
G9u" sucede con cur'as que no son cur'as coordenadasJ -upongamos
que tenemos una cur'a t(t*. en forma param"trica. -i yace en la
superficie)tiene que poder escriirse
f(t* $ #(u(t*) '(t**
!l 'ector tangente a la cur'a en cualquier punto 'iene dado por la
deri'ada:
' t =
% x
% u
u' t
%x
%v
v' t =x
u
u' t v ' t
La Matemtica de los Grficos 3D [ 99 ]
7emos) pues) que los 'ectores tangentes x
%
,x
v
0uegan un papel
importante: generan el espacio de todos los 'ectores tangentes a la
superficieen #
.
/ forman) pues) una ase del plano tangente. 8ero &ay ms:
oser'emos el romo somreado de la figura 11. -i ignoramos la cur'atura)
el romo es la imagen de un rectngulo coordenado de rea unidad. GCul
es el rea de este elemento de superficieJ Conocemos ya muc&as formas de
e#presarla. 8or e0emplo:
rea=

x
u
x
v

!sta cantidad mide el factor por el cual se multiplica el rea al pasar


del dominio coordenado (%, v) al plano tangente. !s el )aco.iano de la
aplicacin del dominio (%, v) a la superficie.
-upongamos) por e0emplo) que tu'i"semos una masa distriuida por la
superficie)dada por la funcin de densidad m(%,v) en coordenadas (%,v). La
masa total de la superficie sera
&
u, v!D
mu , v

x
u
x
v

du dv
una integral dole que nos recuerda que es preciso tomar en
consideracin el factor de escala (0acoiano* que el plano coordenado
e#perimenta al aplicarse en la superficie.
Los 0acoianos aparecen dondequiera que tenemos transformaciones entre
espacios de la misma dimensin y queremos calcular medidas (rea)
'olmenes o longitudes*.
La longitud de arco de la cur'a f(t* puede calcularse como
&' t dt =
&
x
u
u ' t x
v
v ' t

dt =
&
x
u
x
u
u '
2
2 x
u
x
v
u' v ' x
v
x
v
v '
2
La e#presin de la ra% es la primera forma fundamental o tensor
m"trico
I u , v=Eu
2
2FuvGv
2
donde

E F
F G

x
u
x
u
x
u
x
v
x
u
x
v
x
v
x
v

Con "l) podemos reali%ar medidas en t"rminos de coordenadas de


superficie (%,v). 8or e0emplo) longitud de arco
&

Eu'
2
2Fu ' v ' Gv'
2
dt
[ 100 ] Tecnologas Libres para Sntesis de Imagen 3D
o rea de superficie
&
D

EGF
2
dudv
:na 'e% ms) el radical es el 0acoiano de la aplicacin que lle'a (%, v) a
la superficie intrnseca.
!nterolaci'n % aro*imaci'n
!stos dos prolemas aparecen frecuentemente en modelado geom"trico.
F'rmula de interolaci'n de Lagrange
Dos dan n 4 1 puntos en el espacio 8.) 81) [) 8n (representados
usualmente como 'alores de una funcin real) 'er figura JJ*. 8recisamos
encontrar una funcin cuyo grafo incida sore todos los puntos dados.
!ste es un prolema de interpolacin. !l caallo de atalla en la solucin
de este teorema se conoce como la f!rm%la de interolaci!n de 1a"ran"e.
Teorema (nterpolacin de !a"ran"e#: -ean n 4 1 puntos del plano
HI) 8
.
$ (#
.
) y
.
*) 8
1
$ (#
1
) y
1
*) 8
<
$ (#
<
) y
<
*)...) 8
n
$ (#
n
) y
n
*) todos con
diferentes ascisas. !ntonces) e#iste un y slo un polinomio p de grado n
que cumpla
p(#
i
* $ y
i
para i $ .) 1)...) n
!l polinomio de interpolacin de Lagrange puede calcularse de muc&as
formas) una de las cuales es la frmula e#plcita
P x=

i=0
n
y
k
)
k
x
)
k
k
k

(\*
donde los factores + son polinomios de grado n dados por
)
k
x=
xx
0
xx
1
* xx
n

xx
k

La Matemtica de los Grficos 3D [ 101 ]


Figura 12. Interolaci!n y aroximaci!n de valores %nt%ales.
!s o'io que
)
k
x
)
k
k
k

=
{
1si i=k
0si i k
}
porque ningn par de ascisas coincide. I esto resuel'e nuestro prolema.
La frmula \) no ostante) no es muy til en los clculos. Los coeficientes
del polinomio de interpolacin se encuentran me0or resol'iendo un
sistema de ecuaciones lineales) o mediante un uso inteligente de la simetra
o la eleccin &il de los puntos de muestra (x
i
, y
i
).
[ 102 ] Tecnologas Libres para Sntesis de Imagen 3D
:n e0emplo: queremos encontrar un polinomio cuadrtico que interpole
los puntos ( - 4, y
-1
), (', y
'
) y (4, y
1
). !n lugar de pasar por el cal'ario de la
ecuacin JJ) recordemos que el proceso de interpolacin es lineal e
imaginemos qu" pasara si tu'i"semos los con0untos de 'alores
y
21
$ 1 y
.
$ . y
1
$ .
y
21
$ . y
.
$ 1 y
1
$ .
y
21
$ 1 y
.
$ . y
1
$ 1
!n el ltimo caso) uscamos una funcin cuadrtica con ceros en 2 & y en .)
de manera que tiene que ser
q
1
(#* $ C#(# 4 &*
con C escogido para que +
1
(-1) # 1) de modo que C # 1/(1 - 4). 8or
simetra) la primera funcin q
21
ser la refle#in especular de "sta) es decir)
q
21
$ 1Q(1 2 &* #(& 6 #*
5 q
.
ser una funcin par por su simetra) con ceros en 2 1) 1) de modo
que ser igual a (1 6 #W* sal'o por un factor constante que la normalice
para que 'alga 1 en el origen. R3&S) el factor resulta ser la unidad) de modo
que
q x=y
1
x xh
1h
y
0
1x
2
y
1
xhx
1h
de forma muc&o menos agnica que pasar por la ecuacin \.
+,uste or m$nimos cuadrados
3tro prolema distinto es el de apro#imacin: otener una cur'a que
pase cerca de los puntos dados) en algn sentido estalecido. -e trata de un
prolema 'asto y difcil. Los criterios de cercana 'aran muc&o segn las
aplicaciones) y aqu 'amos a apro#imarnos slo cuadrticamente (con
perdn*.
Dos referiremos tan slo a la forma ms primiti'a) &umilde y) sin emargo)
til de apro#imacin: el a)%ste or mnimos c%adrados. :na aplicacin
corriente de esta t"cnica es la solucin de un prolema de interpolacin
soredeterminado) en el que tenemos ms ecuaciones que incgnitas.
-upongamos) por e0emplo) que nos dan una serie de puntos
8i $ (#i) yi*
con i # 1... n, y sea n 6 7. Dos oligan a apro#imar a ellos una cur'a que
La Matemtica de los Grficos 3D [ 103 ]
tiene que definirse por un polinomio cico (x) # ax8 & .x9 & cx & d. >s
que tratamos de &acer mnimo
Ea , b , c , d=

i =1
n
y
i
ax
i
3
bx
i
2
cx
i
d
2
!sto es) como m#imo)una funcin cuadrtica de los parmetros
indeterminados que constituyen los coeficientes a, ., c, d. 8ara minimi%ar)
oligamos a que las deri'adas parciales de ! respecto a ellos sean nulas:
%E
%a
=2

i=1
n
x
i
3
y
i
ax
i
3
bx
i
2
cx
i
d =0
%E
%b
=2

i=1
n
x
i
2
y
i
ax
i
3
bx
i
2
cx
i
d=0
%E
%c
=2

i=1
n
x
i
y
i
ax
i
3
bx
i
2
cx
i
d=0
% E
%d
=2

i=1
n
y
i
ax
i
3
bx
i
2
cx
i
d=0
Desarrollando y despe0ando los coeficientes a, ., c, d) nos queda un
sistema

x
i
3
y
i
=a

x
i
6
b

x
i
5
c

x
i
4
d

x
i
3

x
i
2
y
i
=a

x
i
5
b

x
i
4
c

x
i
3
d

x
i
2

x
i
y
i
=a

x
i
4
b

x
i
3
c

x
i
2
d

x
i

y
i
=a

x
i
3
b

x
i
2
c

x
i
dn
o) si lo preferimos as

x
i
6

x
i
5

x
i
4

x
i
3
um x
i
5

x
i
4

x
i
3

x
i
2

x
i
4

x
i
3

x
i
2

x
i
um x
i
3

x
i
2

x
i
n

a
b
c
d

x
i
3
y
i
x
i
2
y
i
x
i
y
i
y
i

Los coeficientes a,.,c,d pueden &allarse finalmente resol'iendo la


e#presin anterior.
[ 104 ] Tecnologas Libres para Sntesis de Imagen 3D
Modelado de curvas % suerficies- slines
Dos dan n 4 1 puntos 8
.
) 8
1
)... ) 8
n
) y desearamos construir una cur'a
que pase por ellos con la menor contorsi!n posile. -e trata de un
prolema de interolaci!n. !n otras ocasiones) los puntos dados son
simplemente %ntos de control) y queremos que la cur'a pase cerca de los
puntos) o toque algunos de ellos mientras que solamente se acerque a
otros. -e trata de un prolema de apro#imacin.
!n grficos por computador) normalmente resol'emos estos prolemas
usando funciones enlatadas (GprecocinadasJ* con 0uegos definidos de
parmetros que es preciso calcular para que la cur'a cumpla nuestros
requisitos. Hay una serie larga de opciones a nuestra disposicin:
-plines naturales
Tnterpolantes de Hermite
Cur'as de ?"%ier
?2splines
D:@?-
Slines naturales
:n primer enfoque es intentar interpolar por segmentos. !l segmento
de cur'a que 'a de 8
i
a 8
i
41 ser una funcin p
i
(t* con t recorriendo el
inter'alo (.) 1*. Las condiciones a imponer son cuatro
p
i
(.* $ 8
i
p
i
(1* $ 8
i41
p,
i
(1* $ p,
i41
(.*
p,,
i
(1* $ p,,
i41
(.*
porque cada p
i
es un polinomio cico. Las dos ltimas identidades
son condiciones de regularidad) para que la cur'atura no tenga BsaltosC.
!l incon'eniente de este enfoque es que cada uno de los puntos de control
afecta a todos los segmentos) oligando a recalcular todo si camiamos un
simple punto. I ello implica la resolucin de un sistema de ecuaciones para
cada tramo.
La Matemtica de los Grficos 3D [ 105 ]
!nterolantes de .ermite
:na solucin similar es la interpolacin de Hermite) en que prescriimos
las deri'adas (tangentes* en los e#tremos de cada inter'alo.
p
i
(.* $ 8
i
p
i
(1* $ 8
i
41
p
i
(.* $ K
i
p
i
(1* $ K
i
41
!sto oliga a especificar las tangentes Ki en los puntos de control) lo
que no es siempre posile ni cmodo. La regularidad que se alcan%a es
menor que con splines naturales/ es el precio que &ay que pagar por tener
control local.
Curvas de #"zier
!sta solucin se asa en los llamados polinomios de ?ernstein) una
familia de polinomios en el inter'alo (.) 1* con propiedades muy
interesantes de apro#imacin uniforme. Dada una funcin 8(u* con u ] (.)
1*) su n2"simo polinomio de ?ernstein ?
n
(8) u* 'iene dado por la frmula
B
n
P , u=

k=0
n
P k+ n t
k
1t
nk
-i nos dan n 4 1 puntos de control) diu0amos la cur'a de ?"%ier
asociada a ellos usando la e#presin param"trica
B
n
u=

k=0
n
P
k

n
k

t
k
1t
nk
0u1
Como de costumre en interpolacin y apro#imacin) las funciones de
peso de ?"%ier constituyen una artici!n de la %nidad

k=0
n
P
k

n
k

t
k
1t
nk
=1
lo que) con su positi'idad)&ace que el proceso sea con'e#o:la cur'a de
?"%ier yace dentro del cierre con'e#o de los puntos de control. !n la figura
13 pueden 'erse grficas de algunas funciones ase de ?"%ier.
[ 106 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 13. :ase de :zier ara n#; y n#<.
!n la aplicacin ms corriente) las cur'as de ?"%ier aparecen como
parc&es con cuatro puntos de control. !s un e0ercicio sencillo (R&gaseS*
comproar que 8
.
8
1
y 8
<
8
3
determinan la tangente (la 'elocidad) de &ec&o*
en los e#tremos)y que la cur'a pasa por los puntos de control finales8
.
y 8
3
)
como se 'e en la figura 1P.
#/slines
:n prolema de las t"cnicas usuales de interpolacin es que la cur'a
completa depende de cada punto de control/ el camio de uno de ellos
oliga a calcular de nue'o (y diu0ar tami"n* toda la solucin.
La Matemtica de los Grficos 3D [ 107 ]
Los ?2splines son un con0unto especial de interpolantes carentes de esa
deficiencia. -upongamos que tenemos n 4 1 puntos de control 8
.
) 8
1
) ... ) 8
n
.
La cur'a solucin ser
Pu=

k=0
n
P
k
B
k , d
u
donde las funciones ?
Z)d
son ?6splines de orden d cuyo dominio de
definicin y propiedades 'amos a definira continuacin.
Las funciones ?
Z)d
se construirn en el inter'alo umin) uma# di'idido
en n & d suinter'alos por puntos llamados nodos) de modo que
{
u
min
=u
0,
u
1,
u
,
*, u
kd
=u
max
}
ser el dominio de ?
Z)d
. Cada una de estas funciones ser nula e#cepto
en (u
Z
) u
Z4d
* (lo que aarca d suinter'alos del dominio*) donde coincidir
con un polinomio de grado d 2 1 con 'alores positi'os. -e deduce) entonces)
que cada 'alor P(%) ser influido por d puntos de control. GCmo se
construyen estas funciones mgicasJ 8or la frmula de rec%rsi!n de Cox-
/e:oor:
B
k ,1
=
{
1 si u
k
u
0 enotro caso
}
B
k ,d
=
uu
k
u
kd1
u
k
B
k , d1

u
kd
u
u
kd
u
k1
B
k1, d1
> pesar de su apariencia imponente) la recurrencia es astante sencilla
de aplicar. 8odemos 'er qu" sale de ella en la figura 11. Hemos escogido un
con0unto de nodos ;.) <) 3) \) F) M) 11) 13= y construido a mano (ueno)
casi* los ?6splines de ese con0unto de nodos) &asta el cuarto orden (es
decir) &asta los polinomios cicos*. !n las grficas) las propiedades de los
?6splines son astante e'identes.
!n la sufigura (e* se 'erifica otra propiedad interesante: los ?6splines de
un grado fi0o cualquiera proporcionan una artici!n de la %nidad, es decir)
son funciones positi'as de suma unidad en todo punto. !sta propiedad es
crucial) &aciendo el proceso de interpolacin con'e#o. !n la figura 1\
'emos la cur'a ?2spline de grado tres con puntos de control
8. $ (.) .* 81 $ (1) 1*
8< $ (.) <* 83 $ (1) 3*
81 $ (.) 1*
[ 108 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 14. =r0ficas de las f%nciones de .ase :-Sline ara el con)%nto de
nodos >',?,;,@,<,A,11,1;B. (n la "r0fica inferior (S%ma de los anteriores),
se verifica la roiedad de artici!n de la %nidad.
!sta 'e%) &emos escogido nodos uniformemente espaciados. 8odemos
oser'ar que la cur'a est contenida en el cierre con'e#o de los puntos de
control) lo que es una consecuencia de la positi'idad de la ase de ?2
splines) y de que su suma es la unidad.
La Matemtica de los Grficos 3D [ 109 ]
Figura 15. C%rva de :zier a)%stada a los %ntos de control extremos y con
tan"entes +%e a%ntan a los %ntos de control intermedios.
0()#S
Los ?6splines pueden aplicarse sin camios si traa0amos con
coordenadas proyecti'as) y otenemos as D:@?- (siglas de Don6:niform
@ational ?6-plines*. La frmula resultante
Pu=

k =0
n
P
k
w
k
B
k , d
u

k=0
n
w
k
B
k , d
u
en que el denominador puede tomarse como la componente
&omog"nea de los puntos de control en coordenadas proyecti'as) incorpora
tami"n factores de peso +
Z
) lo que tiene como consecuencia que las
funciones de ase son a&ora funciones racionales del parmetro.
La 'enta0a principal de esto es su invariancia royectiva: un ?2spline no
racional) transformado por una proyeccin) de0a de ser normalmente un
?6spline. Dic&o de otro modo) el ?2spline de los puntos de control
transformados no coincide con el transformado del ?2spline original. -in
emargo) esa coincidencia s se da en los ?2splines racionales) de forma
que para transformarlos asta aplicar la transformacin a los puntos de
control.
[ 110 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 16. Croximaci!n a cinco %ntos de control or :-sline cD.ico %niforme.
Slines ara suerficies aram"tricas
Cuando traa0amos con superficies) podemos aplicar las mismas
t"cnicas que con cur'as) palara por palara. >&ora que tenemos dos
parmetros) %, v) precisamos como ase el producto tensorial de las ases
spline en cada uno de ellos. 8or e0emplo) podemos interpolar un parc&e de
superficie a tra'"s de una red de puntos de control 8i0 por medio de la
frmula

ij
P
ij
B
i , d
u B
j ,d
v
La propiedad de particin de la unidad sigue siendo 'lida en la ase
producto. !l mismo truco se aplica a parc&es de ?"%ier o D:@?-.
Tu cara me suena
Emilio Jos Molina Cazorla
ej-molina@terra.es ::
a luz y el sonido tienen algo as como una relacin de
hermandad. La luz es, valga la redundancia, el hermano
luminoso, el bonito, el que todo el mundo conoce y en el
que todos se fijan. ui!n m"s y qui!n menos ha odo hablar de
fotones, conos y bastoncillos retinas, colores...
L
Inst... Conceptos bsicos
El sonido es el hermano malo, el del Lado Oscuro. Nadie se acuerda de l...
excepto cuando falla. Porque, si la imagen es el fsico, el sonido es, desde
luego, el alma de lo audiovisual. Vamos a intentar darlo a conocer durante
las prximas lneas.
Qu es el sonido?
!omo "hermanos# que son, el sonido $ la lu% tienen muchas cosas en
com&n, $ otras particulares. 'ientras que la lu% es una onda
electromagntica, capa% de propagarse en el vaco $ excitar mediante
fenmenos fotoqumicos los terminales nerviosos de nuestras retinas, el
sonido es una onda de presin, que se propaga mediante procesos de
compresin(descompresin del medio en el que se encuentra. Para hacerse
una imagen mental, es algo parecido al tpico )uguete de movimiento
continuo *figura +,.
Por ello, en el vaco no se propaga al no ha-er nada *venga, va,
quisquillosos. casi nada, que comprimir, $ esto tiene dos graves
consecuencias.
/odas las pelculas de -atallas espaciales son un gran em-uste.
En el espacio, nadie puede or tus gritos.
[ 111 ]
F
u
n
d
a
m
e
n
t
o
s
[ 112 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 1. Tpico juguete de movimiento continuo.
Velocidad del sonido !e"racci#n !e"le$i#n
Inter"erencias
0in em-argo, comparte con la lu% el que su velocidad cam-ie seg&n el
medio que atraviesa, $ los fenmenos de refraccin, reflexin e
interferencias. En medios poco densos *por e)emplo, el caucho,, su
velocidad de transmisin ser1 menor que en otros m1s densos *por
e)emplo, el acero,.
La velocidad de la lu% *casi 233.333 4m5s en el vaco, es inmensamente
m1s alta que la del sonido *263 m5s en el aire a 738!,. Veremos aquello
que provoca un sonido antes de escuchar el sonido que ha provocado.
Primero vemos el rel1mpago $ luego escuchamos el trueno. Esto tiene
alguna implicacin en la creacin de animaciones, so-re todo en lo que
respecta al lips$nc o sincroni%acin la-ial. si colocamos la vo% del
persona)e a la ve% que el movimiento la-ial, nuestro cere-ro se que)ar1. 0in
em-argo, si lo despla%amos un par de frames m1s tarde, se ver1 *$
escuchar1, de forma mucho m1s natural.
El fenmeno de refraccin es f1cilmente percepti-le cuando estamos
-uceando. Las voces que vienen de fuera *las que vienen de dentro son otro
pro-lema que ha de ser tratado con medicacin, se escuchan
distorsionadas por el cam-io de velocidad $ de direccin de la onda.
Tu cara me suena [ 113 ]
Figura 2. Onda tpica.
La reflexin, nos es mucho m1s familiar. /iene mucho que ver con los
coeficientes de a-sorcin de los materiales, $ vulgarmente lo conocemos
como eco *m1s adelante entraremos en detalle so-re este aspecto,. El
refle)o no siempre es idntico a la onda original9 al igual que los o-)etos
refle)an todas las frecuencias de la lu%, excepto las que a-sor-en *dando
lugar a la percepcin de los colores,, tam-in a-sor-en m1s ciertas
frecuencias de sonido, provocando efectos curiosos como el de la "carencia
de eco# del pato, que en realidad no es m1s que el producto de la a-sorcin
de ciertas frecuencias, refle)ando slo una porcin no audi-le para el odo
humano.
: menos que se1is constructores de auditorios $ teatros, o quer1is -uscar la
locali%acin idnea de vuestro flamante nuevo equipo de ;ome !inema, no
es necesario que os preocupis de este asunto.
El sonido es una onda $, como tal, sufre fenmenos de interferencias. Los
sonidos cu$as crestas est1n en la misma fase, incrementan su intensidad.
Los que est1n en fases contrarias, se aten&an. El primer caso es mu$
importante de cara al audio digital, donde los sonidos f1cilmente "saturan#
el tope de sensi-ilidad de los micrfonos, provocando un resultado
"cascado#. El segundo es interesante de cara a aplicaciones experimentales
de reduccin de ruido en lugares cercanos a sitios con alta contaminacin
ac&stica, $a que programas en tiempo real producen ondas
complementarias que contri-u$en a disminuir localmente dicho ruido,
cancelando las fases del sonido. /am-in se utili%a en la reduccin de ruido
en el post(procesado de audio.
[ 114 ] Tecnologas Libres para Sntesis de Imagen 3D
Tono Timbre Intensidad
;emos ha-lado de crestas de ondas. Veamos una imagen de una onda
tpica *figura 7,.
<na imagen est1 compuesta de diferentes colores con distinta saturacin
que di-u)an formas. <na onda tiene una frecuencia fundamental *inversa a
su longitud de onda,, m1s o menos amplias $ con unas determinadas
frecuencias secundarias.
El tono es la altura del sonido. !uanto menor sea su frecuencia *$ por
tanto, m1s amplia su longitud de onda,, m1s grave ser1 la nota. :l igual
que en la lu% slo llegamos a captar frecuencias hasta un nivel de ro)os *por
encima de los infrarro)os,, empe%amos a captar sonidos a partir de los
73;% *un her%io es un ciclo por segundo,. Los tonos medios corresponden
a frecuencias de unos 233 a =333;% *=4;%,, $ los agudos alcan%an hasta
los 734;%, que sera el lmite de la audicin humana *en la lu% equivaldra
al lmite entre violeta $ ultravioleta,.
El tim-re es la "forma# de la onda, sus frecuencias secundarias, $ es lo que
nuestro cere-ro utili%a para distinguir la vo% de >arth Vader de la de
nuestra madre. ?ueno, dependiendo de lo mucho que fume. O un piano, un
violn o un o-oe *por poner un e)emplo m1s cl1sico, suponiendo que estn
tocando ese tipo de m&sica, de una taladradora *seg&n la pericia del
practicante, la diferencia puede radicar en el sutil vi-rato de la
taladradora,.
Podemos ver un e)emplo de las diferencias entre una nota de un piano, un
violn, un o-oe $ un taladro en la @igura 2.
Figura 3. Diferencias entre una nota de un piano, un violn, un oboe y un taladro.
Tu cara me suena [ 115 ]
Figura 4. Envolvente de una onda.
/am-in es mu$ importante la forma general de la onda *llamada
envolvente,, que tam-in utili%a intensivamente nuestro cere-ro para
catalogar qu tipo de sonido estamos procesando *percusin, vo% humana,
instrumentos de viento...,.
La intensidad de la onda tiene relacin con la amplitud de dicha onda, $ se
traduce en el volumen con el que perci-imos un sonido. Aecordemos que el
sonido es una onda de presin *$ como tal, se podra medir en pascales,.
0in em-argo, el convenio general para medir el sonido es el de la relacin
de la intensidad del mismo con respecto a la intensidad de un ruido -ase, $
su unidad son los deci?elios. :l igual que los terremotos, sigue una escala
logartmica, donde cada grado superior implica multiplicar la potencia. En
la @igura = podemos ver las distintas intensidades, en deci-elios, de varias
fuentes de sonido distintas.
%sicobiolo&'a de la percepci#n ac(stica
En realidad $a hemos empe%ado a ha-lar de percepciones, de lo que el
cere-ro interpreta o de)a de interpretar. 0igamos, pues, con ello.
:ntes ha-l1-amos del fenmeno de la reflexin, $ decamos que se conoca
como eco. En realidad, el eco no es m1s que una reflexin que tarda m1s de
=3 milisegundos en llegar a nuestros odos a partir de la fuente original. :
menores tiempos, el cere-ro no lo entiende como dos ondas diferentes,
[ 116 ] Tecnologas Libres para Sntesis de Imagen 3D
sino como una rever-eracin de la misma onda, una "cola residual# que, a
efectos psicolgicos, dota de calide%, profundidad e intensidad a un sonido
*slo ha$ que pensar en el estudiadsimo efecto de rever-eracin de las
catedrales $ los rganos, o en el leve eco que se suele de)ar en las -aladas,.
>e la misma forma, la "iluminacin glo-al# o secundaria, proporciona
ma$or calide% $ "organicidad# a las im1genes que hacen uso de ella, le da
mucha m1s rique%a.
En el mundo sonoro, por tanto, ha$ que tener mu$ en cuenta cu1l va a ser
la rever-eracin final para conocer el impacto que un sonido tendr1 so-re
el p&-lico. Los estudios de gra-acin, las salas de cine, $ por supuesto los
auditorios $ teatros han de estudiar a fondo los materiales $ su disposicin
para incrementar o menguar los efectos de rever-eracin.
En la @igura B podemos ver gr1ficamente cmo Candro *Del creador de
EafAa$F, reci-e un ha% de ondas sonoras.
Figura 5. Fuentes de sonido y sus intensidades.
Tu cara me suena [ 117 ]
Figura 6. Jandro recibe un ha de ondas sonoras.
La resonancia es la vi-racin "simp1tica# que se da en algunos o-)etos
cuando la frecuencia fundamental de una onda que suena cerca es m&ltiplo
*tam-in llamado armnico, de su propia frecuencia de sonido. Por
e)emplo, ciertas notas tocadas por instrumento de viento son capaces de
hacer vi-rar las cuerdas de una guitarra, si sus notas son las mismas o
frecuencias m&ltiplos *octavas superiores,. O las cuerdas del interior de un
piano, cuando se toca una nota *e)ercicio pr1ctico. tocar fuerte una nota $,
tras soltarla, pulsar el pedal de "sostenido# enseguida9 las cuerdas,
distensadas, vi-rar1n cada cual seg&n su resonancia con la nota que
hu-iramos pulsado,. /am-in nuestras cuerdas vocales tienen resonancia
con nuestra propia vo%, lo que produce frecuencias secundarias,
armnicos, que le dan su tim-re caracterstico.
Estreo )urround E"ecto *oppler
/enemos percepcin de profundidad en la visin gracias a poseer un
par de o)os *a menos que seas alguna especie de tipo raro con casco
espacial $ no distingas a tu suegra de un piano de cola,. Esta estereoscopia
permite a nuestro cere-ro calcular la profundidad de un o-)eto a partir de
las pequeGas diferencias de 1ngulo de la imagen reci-ida por cada o)o
individual. !on los odos pasa tres cuartos de lo mismo. dependiendo de su
posicin, una onda sonora llegar1 antes a un odo que a otro.
[ 118 ] Tecnologas Libres para Sntesis de Imagen 3D
0i la fuente est1 m1s cerca de nuestro odo i%quierdo, llegar1 antes hasta
ste, atravesar1 el cr1neo $ estimular1 m1s tarde el odo derecho.
Por la forma de nuestro pa-elln auditivo, tam-in escucharemos me)or
los sonidos que provengan de nuestro frente que de nuestra espalda.
!on am-os factores, somos capaces de descu-rir con -astante precisin la
locali%acin $ le)ana de una fuente sonora a partir de las pequeGas
diferencias de tiempo e intensidad.
!on una situacin adecuada de fuentes sonoras, podemos conseguir un
efecto envolvente *surround,, so-re todo si contamos con un altavo%
especial para -a)os *su-Hoofer,, $a que los altavoces convencionales
apenas son capaces de reproducir ciertas frecuencias mu$ graves.
El efecto >oppler, al igual que se aplica a la lu% para descu-rir si un emisor
se ale)a (tiende al ro)o( o se acerca (tiende al a%ul( al o-servador, muestra
el mismo comportamiento en el sonido *al fin $ al ca-o, en am-os casos
ha-lamos de frecuencias de ondas que se acercan o se ale)an,. !uando un
sonido se ale)a, tiende a escucharse m1s grave *sus ondas nos llegan
"alargadas#,, mientras que si se acerca, se escucha m1s aguda *sus ondas
nos llegan "comprimida#,. Este efecto nos resulta mu$ familiar9 todos
reconocemos el sonido de una am-ulancia acerc1ndose $ ale)1ndose.
+onas de percepci#n
Ni escuchamos las mismas frecuencias por igual, ni todos tenemos los
mismos lmites de audicin. Las ra%ones. milenios de evolucin.
!omo deca CacI, va$amos por partes. Literalmente. En la @igura J,
podemos ver el sistema auditivo con una serie de partes detalladas.
Aecapitulemos. los sonidos son variaciones de presin que se transmiten
por un medio no vaco. En el caso humano, este medio suele ser aire. Las
ondas son recogidas $ concentradas por el pa-elln auditivo, que las
conduce hasta el tmpano. El tmpano no es m1s que una mem-rana *como
la de un tam-or, que transmite esta vi-racin a los huesecillos del odo
*martillo, $unque $ estri-o,, que a su ve% los transmite *$a con mucha
menos fuer%a, al odo interno *canales semicirculares $ caracol,. El odo
interno se encarga, aparte del importante tema de escuchar, del no menos
importante tema de conservar el equili-rio, est1tico o din1mico *tam-in
se encarga de averiguar si nos estamos moviendo,. <na ve% en el caracol, el
sonido que ha sido transmitido por el estri-o hace vi-rar el lquido que lo
contiene. Kracias a su forma en espiral estrechada, cada seccin del caracol
tiene resonancia con unas determinadas frecuencias. >esde los sonidos
graves en la ancha -ase *a partir de 73 ;%, hasta los m1s agudos en la
punta final *73 4h%,. Los enlaces nerviosos de la %ona se encargan de
Tu cara me suena [ 119 ]
transducir la energa mec1nica de la vi-racin a energa elctrica, que
mandan seguidamente a travs del nervio auditivo.
!omo podemos ver en la gr1fica de respuesta a las frecuencias seg&n la
intensidad de la @igura L, tenemos un mu$ -uen procesamiento de
frecuencias medias *$a que es ah donde se centran los sonidos que la
Naturale%a considera m1s interesantes para nuestra supervivencia. un
tigre rugiendo, una suegra acerc1ndose...,. No podemos escuchar ni las
frecuencias mu$ -a)as ni las mu$ altas, a menos que suenen a una
determinada intensidad.
Figura 7. !istema auditivo.
[ 120 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 8. "espuesta frecuencial.
0i la intensidad es mu$ elevada, corremos el riesgo de romper la
mem-rana timp1nica, aunque podemos soportar me)or la intensidad en ciertas
frecuencias, precisamente por la menor respuesta que tenemos ante las
frecuencias graves $ agudas.
:dem1s de esto, la prdida de audicin por la edad tam-in es diferente en
hom-res $ mu)eres, siendo mucho m1s acusada en los hom-res. :lgunos
sugieren que es por escuchar continuadamente los gritos de dichas mu)eres.
Nunca lo sa-remos con certe%a.
,l&(n d'a todo ser di&ital
:lg&n da, todo ser1 digital. Por ahora, el audio $a lo es. !on las tecnologas de
reduccin de ruido como >ol-$, la calidad del audio digital es, simplemente,
perfecta.
La captura de sonido se reali%a mediante micrfonos, que pueden ser de varios
tipos seg&n la direccionalidad del sonido que capturan *omnidireccionales,
-idireccionales, unidireccionales o cardiodies..., o el mtodo que utili%an para
convertir el sonido de presin a electricidad *principalmente, din1micos $ de
condensador,. Las diferencias son principalmente de cantidad de sonido
captado $ de capacidad de soportar fuertes intensidades sin que el sonido
"sature# $ "se rompa#, lo cual suele ser inverso al rango de matices que son
Tu cara me suena [ 121 ]
capaces de captar. >icho de otra forma, las sutiles variaciones de potencial de
la corriente elctrica necesarias para recoger con gran precisin cierto tipo de
sonidos, pueden provocar que, ante sonidos intensos, el volta)e se dispare al
m1ximo, destro%ando as la forma de onda $ convirtiendo toda la informacin
que lleva-a ese sonido en un molesto ruido.
!uando el sonido llega a la tar)eta de dem, sta muestrea la seGal elctrica M
veces por segundo *frecuencia de muestreo,, ad)udicando a cada valor de
entrada un determinado valor E de salida dentro de un rango de -its
*resolucin,. >icho de otro modo, volviendo a las analogas con la imagen, la
frecuencia de muestreo sera el tamaGo en pxeles de la imagen, $ la resolucin
sera la profundidad de colores de la misma. !uanta m1s resolucin, ma$or
n&mero de grados intermedios de intensidad tendr1 la onda. !uanta ma$or sea
la frecuencia de muestreo, m1s muestras tendremos por segundo. En con)unto,
la onda muestreada ser1 m1s parecida a la analgica real cuanto ma$ores sean
los valores mencionados.
Figura #. $onversi%n &nal%gico'Digital.
Formatos
>espus de esto, nuestra onda original se ha convertido en un chorro de
n&meros enteros *o incluso reales, en memoria, tantos como canales tuviera el
sonido *un canal si es mono, dos si es estreo, e incluso m1s para sonidos
cuadrafnicos $ surround,. : la hora de guardar esta informacin en disco,
tenemos dos opciones. guardarlas en formato -ruto sin compresin *P!',
Pulse !ode 'odulation, o utili%ar alguno de los formatos de compresin sin
prdida *@L:!, o con prdida *m1s populares,. 'PK(+ :udio La$er 2 *mp2, o
Vor-is(OKK *ogg,. En contra de lo que normalmente se piensa, el conocido
formato Hav *N:Veform audio format, es slo un formato "contenedor# *igual
que el :VO para vdeo,9 el audio que lleve en su interior puede ir en -ruto o
comprimido con cualquiera de los mtodos existentes.
En am-os formatos, mp2 $ ogg, la compresin se centra en las frecuencias de
la onda inaudi-les para el odo humano *siguiendo un modelo psicoac&stico,,
utili%ando una tasa de -its varia-le *distinta cantidad de informacin por
segundo, seg&n lo que est sonando,.
[ 122 ] Tecnologas Libres para Sntesis de Imagen 3D
Las diferencias:
'p2 es un formato patentado por /hompson *por el que co-ran
importantes sumas en concepto de derechos de cdecs en reproductores, $
utili%a la /ransformada A1pida de @ourier para codificar el sonido.
En cam-io, ogg *formato li-re, utili%a la /ransformada de !osenos
>iscreta 'odificada $ se espera que pronto pueda usar Navelets, una forma
mucho m1s sofisticada de codificacin $ an1lisis, -asada en armnicos.
La com-inacin de alta calidad $ formato li-re del ogg est1 produciendo una
de-acle del formato mp2, si -ien es lenta por la enorme extensin de uso del
mp2 $ el desconocimiento general de la existencia del ogg.
)ur"eando en la onda
<na ve% tenemos el audio en formato digital, podemos hacer mil virgueras
con l utili%ando un programa de retoque de audio como el programa li-re
:udacit$ http://audacity.sourceforge.org. Podemos cam-iar la resolucin
$ el muestreo de una onda, pasar de estreo a mono $ viceversa, cam-iar el
"panning# *la posicin del sonido en el estreo,, agregar eco o rever-eracin,
invertir los picos de la onda, invertir la onda al completo, reducir el ruido,
acelerar o decelerar la reproduccin, variar el tono, modificar su envolvente o
su intensidad... Oncluso este programa nos ofrece la posi-ilidad de di-u)ar la
onda, ampliando muchsimo el %oom en ella.
/am-in podemos generar sonidos digitalmente. Para ello tenemos dos
opciones. la sntesis aditiva o la sntesis sustractiva. :l igual que en el color
tenemos los mapas aditivos *AK?, $ sustractivos *!'E4, seg&n si sumamos
luces al negro o restamos tintas al -lanco, en el tim-re podemos "aGadirle al
silencio# distintas frecuencias generadas mediante funciones sinusoidales o
similares, o podemos restarle a una frecuencia dada una serie de frecuencias.
Conclusi#n - cierre
0eg&n la NiIipedia, la /eora ' es una de las candidatas a convertirse en la
/eora del /odo. /iene su origen en la /eora de las !uerdas, seg&n la cual
todas las partculas son en realidad diminutas cuerdas que vi-ran a cierta
frecuencia, $ nosotros vivimos en un universo vi-rando a cierta frecuencia.
No de)a de ser potico el pensamiento de que, despus de todo, nuestro
<niverso, con todo lo que contiene, es slo una incre-le sinfona. >emasiado
-onito como para de)ar de lado algo tan cercano a esta realidad.
Visin Estereoscpica
Javier Alonso Albusac Jimnez
Miguel Garca Corchero
jalbusac@gmail.com greenbite@gmail.com ::
l mecanismo de visin de los seres humanos es estreo
por naturaleza. Cada uno de los ojos obtiene una imagen
del escenario en el que nos encontramos (visin
binocular) con un !ngulo ligeramente di"erente.
#
Las imgenes adquiridas tendrn bastante contenido visual en comn,
pero cada una proporcionar informacin que la otra no tiene, lo que
denominamos como disparidad.
Qu es la visin estereoscpica
Una vez que los ojos han servido como mecanismo de captacin del
medio, llega el turno del cerebro, que ser el encargado de procesar las
imgenes. El cerebro analiza las imgenes generando una imagen en
estreo, producto de la combinacin de las similitudes ! la deteccin de las
diferencias, pudiendo de esta forma tener la sensacin de profundidad,
lejan"a o cercan"a de los objetos que pertenecen al escenario del mundo
real. #l proceso de fusin de las imgenes se le conoce como Estereopsis.
El procedimiento de Estereopsis puede variar en funcin de la
distancia de los objetos que estamos observando, cuando los objetos son
lejanos los ejes pticos de los ojos permanecen en paralelo, mientras que si
de lo contrario se encuentran a una distancia cercana los ejes de los ojos
convergen. $e conoce como fusin a la suma de alguno de los mecanismos
citados anteriormente, ms la acomodacin ! enfoque para ver
n"tidamente los objetos del escenario.
La capacidad que tienen las personas para apreciar los detalles situados en
distintos planos var"a con facilidad, esta capacidad est directamente
relacionada a la distancia interocular. %uanto ma!or es la distancia
entre los ojos ma!or es la distancia l"mite a la que se puede seguir
apreciando el relieve de los objetos. La distancia l"mite puede varias entre
&' ! cientos de metros entre diferentes personas.
[ 123 ]
!
u
n
"
a
m
e
n
t
o
s
[ 124 ] Tecnologas Libres para Sntesis de Imagen 3D
La visin estreo es necesaria en el d"a a d"a de cualquier ser humano, la
utilizamos constantemente, sin ella ser"a prcticamente imposible
practicar cualquier deporte, introducir una llave en su cerradura o
conducir un automvil entre otras muchas actividades.
Cmo imitar la visin estereoscpica humana#
(ara poder conseguir simular la visin estereoscpica necesitamos de
algn dispositivo f"sico que realice las mismas funciones que los ojos !
realicen una captura del entorno, una vez obtenidas las imgenes
necesarias se aplicarn una serie de mtodos o tcnicas para conseguir la
sensacin de espacio )tarea de la que se encarga el cerebro*.
%omo dispositivos se suele utilizar una o dos cmaras, tomando un par de
fotos del entorno ! separadas a una distancia similar a la que se
encuentran los ojos. (or tanto tendr"amos una fotograf"a similar a la vista
tomada por el ojo izquierdo, ! otra a la del ojo derecho.
E+isten diferentes mtodos para la obtencin de imgenes estereoscpicas,
$li"e %ar
En este mtodo tan slo se utiliza una cmara que se encuentra situada
sobre una barra de desplazamiento graduada, por lo que moviendo la
cmara a lo largo de la barra podremos obtener imgenes desde distintas
posiciones similares.
&'in Cameras
$e dispone de dos cmaras situadas en un soporte f"sico. Las
fotograf"as son tomadas en el mismo instante de tiempo, debe e+istir por
tanto un mecanismo de sincronizacin entre ambas cmaras.
%eam splitters
En este caso se dispone de una sola cmara $L-)$ingle Lens -efle+
%amera* ! un sistema de espejos o prismas situados enfrente de las lentes
de la cmara. La colocacin correcta de los espejos permite obtener la
versin de la parte derecha ! la de la izquierda.
%on la aplicacin de cualquiera de estos mtodos llevamos a cabo la tarea
correspondiente a los ojos, la captacin de las imgenes, queda por tanto
realizar el trabajo del cerebro, consiguiendo as" un efecto tridimensional.
Visin Estereoscpica [ 125 ]
Mto"os "e visualizacin
(odemos clasificarlos en dos clases. #quellos en los que no es necesario
ninguna herramienta o dispositivo para conseguir la unin de las dos
imgenes, conocido como visin libre, ! aquellos en los que s" es necesario.
Visin (ibre
En la visin libre podemos encontrar dos mtodos de visualizacin,
visin paralela ! visin cruzada.
Visin paralela
Los ojos mantienen sus ejes pticos en paralelo, como si mirsemos al
infinito. El ojo izquierdo mira la imagen izquierda ! el derecho la imagen
derecha. #l cabo de un tiempo, deber"amos ser capaces de fusionar las dos
imgenes en una nica tridimensional. Este mtodo es utilizado en los
libros con estereogramas de puntos aleatorios )ojo mgico*.
Visin cruza"a
Las imgenes son cambiadas de orden, la imagen izquierda se sita en
la parte derecha, ! la derecha en la izquierda, Los ejes pticos tambin se
cruzan, el ojo derecho mira a la izquierda ! el izquierdo a la derecho, para
conseguirlo podemos situar uno de nuestros dedos entro los dos ojos !
mirarlo.
El mtodo de visin paralela suele utilizarse cuando las imgenes no
son superiores a &. mil"metros entre sus centros, en el caso contrario,
cuando la distancia entre los centros de las imgenes supera los &.
mil"metros )la imagen virtual aparece ms peque/a* se utiliza la visin
cruzada.
Mto"os "e visualizacin con utilizacin "e
"ispositivos
)ro*eccin
El efecto estreo se consigue con la utilizacin de un pro!ector con dos
lentes, o bien dos pro!ectores normales encargados de mostrar la imagen
correspondiente al ojo izquierdo ! la del derecho. # cada una de las lentes
se le aplica un filtro polarizador asegurando as" que cada ojo vea
nicamente la imagen que le corresponde.
[ 126 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 1. Esquema de proyeccin con luz polarizada.
Las imgenes deben ser pro!ectadas sobre una pantalla de aluminio
distinta al color blanco para evitar la despolarizacin de la luz pro!ectada
)ver figura*.
An+gli,o
#l igual que en los mtodos anteriores se trata de enga/ar al cerebro
para aparentar una sensacin tridimensional a partir de imgenes planas.
(ara conseguir que cada ojo se centre nicamente en la imagen que le
corresponde se ti/en las imgenes de un determinado color ! se utilizan
unas gafas apropiadas con filtros de colores.
$e pueden utilizar var"as combinaciones de colores, pero la ms comn
consiste en te/ir la imagen izquierda de color azul ! de rojo la imagen
derecha. En la gafas el orden de los colores de los filtros es inverso, el filtro
derecho ser"a azul mientras que el izquierdo ser"a rojo.
Este mtodo es de los ms econmicos pero presenta grandes
inconvenientes,
#lteracin de los colores originales.
(erdida de luminosidad.
%ansancio visual despus de un tiempo prolongado.
Visin Estereoscpica [ 127 ]
Figura 2. Si los filtros polarizadores estn alineados (arriba), puede
pasar la luz. Si rotamos uno de los filtros 90, cortan la luz
en dos ees, !ol!i"ndose totalmente opacos (abao).
)olarizacin
El sistema es similar a los anglifos, pero en este caso no se utilizan
colores para la separacin de las imgenes, si no que se utiliza luz
polarizada.
Este sistema se puede construir con dos pro!ectores, dos filtros que se
colocan delante de cada pro!ector ! unas gafas polarizadas. %ada uno de
los filtros ! cada una de las lentes de las gafas estn polarizadas en una
direccin ! difieren en 0' grados )ver figura 1*.
[ 128 ] Tecnologas Libres para Sntesis de Imagen 3D
Este mtodo solventa algunos de los inconvenientes que presentaban los
anglifos,
-especta en gran medida los colores de la toma original.
2isminu!e el cansancio visual.
%omo inconveniente tenemos que e+iste prdida de luminosidad
con respecto a la toma original.
Alternativo
En este sistema se utilizan gafas dotadas con obturadores de cristal
l"quido )denominadas L%$, Liquid %r!stal $hutter glasses o L%2, Liquid
%r!stal 2ispla! glasses*. Las imgenes son presentadas de forma
secuencial, alternando las imgenes para el ojo izquierdo ! para el derecho.
El parpadeo no es perceptible !a que se utiliza una frecuencia alta de
pro!eccin.
Las gafas sern las encargadas de cerrar el obturador del ojo derecho
cuando se pro!ecten imgenes para el ojo izquierdo ! viceversa.
%omo gran ventaja tienen que la se/al sincronizada es enviada a las gafas
por ra!os infrarrojos ! no necesita de ningn cable, pero por contra estas
son bastante voluminosas ! pesadas.
Casco Estereoscpico
3ead 4ounted 2ispla! )342*. El casco consta de dos pantallas, una
para cada ojo. El casco est conectado a un sistema encargado de enviar las
imgenes. Es utilizado principalmente en el rea de -ealidad 5irtual ! en
5ideojuegos.
(osee algunos inconvenientes,
Elevado coste.
5oluminosos ! pesados.
(rovocan fatiga visual.
Monitores Auto-$tereo
$e trata de unos monitores que an se encuentran en fase de
e+perimentacin ! desarrollo. Utilizan microlentes situadas de forma
paralela ! vertical sobre la pantalla del monitor, generando la desviacin
de dos o ms imgenes. Estos monitores no necesitan el uso de ningn tipo
de gafas para obtener la sensacin de profundidad.
Visin Estereoscpica [ 129 ]
E,ecto )ul,rich
El llamado Efecto (ulfrich fue descubierto por el mdico alemn %arl
(ulfrich en 6011. La diferencia con respecto a otros sistemas de
visualizacin estreo es la utilizacin de una nica imagen 12 animada,
esto no resta que puedan obtenerse efectos
estereoscpicos mu! espectaculares
filmando con una nica cmara en
movimiento.
Este fenmeno consiste en la observacin
de una imagen en movimiento horizontal,
el observador debe utilizar un filtro en uno
de los ojos. La imagen captada por el ojo
en el que se encuentra el filtro posee
menor luminosidad que la imagen original
provocando que llegue al cerebro con un
retardo de centsimas de segundo, el
cerebro percibe la imagen con una
peque/a diferencia de posicin horizontal
generando el efecto estereoscpico.
.reas "e Aplicacin
Una de los campos donde ms se utiliza la visin estereoscpica es en la
topograf"a tomando fotograf"as areas. (ara poder llevarla acabo
correctamente, el avin debe volar a una altitud constante ! realizar
fotograf"as verticales. $uele e+istir grandes distancias entre una fotograf"a
! la siguiente, dando una gran sensacin de relieve que sin la visin
estereoscpica no se podr"a apreciar.
%omo !a hab"amos mencionado anteriormente la separacin media
interocular es de &. mm ! es la distancia que se suele utilizar para realizar
las fotograf"as estereoscpicas. %uando la distancia entre las fotograf"as
tomadas para formar la imagen estereoscpica es bastante elevada
hablamos de Hiperestereoscopia. Es lo que ocurre en el caso de las
fotograf"as areas donde se suelen tomar distancias que permitan dar la
sensacin de ver el objeto como si se estuviera a tres metros de distancia
del mismo.
E+iste una frmula con la que podemos calcular la distancia que debe
e+istir entre las diferentes tomas, para obtener una imagen estereoscpica
donde se pueda apreciar la sensacin de relieve de los objetos a gran
calidad.
[ 130 ] Tecnologas Libres para Sntesis de Imagen 3D
)','&.m78m* 7 )d7L*
','&.m distancia interocular.
8m distancia a la que se quieren observar los objetos en la imagen
virtual.
d distancia que queremos calcular.
L distancia entre el punto desde donde se realizan las fotograf"as !
los objetos que queremos captar en la imagen.
2espejando d, tenemos que d9 ','16&&: + L, apro+imadamente d 9
)67.'* + L, por tanto si el avin estuviera tomando imgenes a una
distancia de & ;m el intervalo de tiempo que se deber"a producir entre
captura ! captura deber"a ser de 61' metros.
%omo vemos es mu! sencillo calcular la distancia que ha! que recorrer
para tomar una nueva fotograf"a, no ser"a complicado por tanto poder
calcular las distancias que e+iste entre elementos que aparecen en la
fotograf"a. Esta tcnica es utilizada tambin en la fotogrametr"a donde se
realiza la medicin de distancias a partir de las fotograf"as tomadas.
3emos mencionado la Hiperestereoscopia, el fenmeno contrario
es conocido como Hipoestereoscopia que sucede cuando e+iste poca
distancia entre el punto donde se realizan las fotograf"as ! los objetos a
fotografiar pudiendo provocar que aquello que queremos fotograf"a salga
fuera del fotograma. (ara calcular la distancia adecuada nos vale la misma
formula, simplemente vasta con variar la distancia a la que queremos ver
los objetos en la imagen virtual, por ejemplo,
)','&.m7',1.m* 9 d7L despejando d tenemos d 9 ',1. + L
)rincipios matem+ticos/ calculo "e "istancia ,ocal
$i queremos crear una imagen estereoscpica con dos cmara
fotogrficas, lo primero que tenemos que calcular es la distancia a la que
deben estar las lentes de las dos cmaras, es lo que conocemos como
distancia focal o stereo base.
(ara realizar el clculo necesitamos tener en cuenta los siguientes
aspectos,
La distancia entre los objetos dentro del campo de visin debe ser
la adecuada, es lo que conocemos como profundidad de campo o
depth of field.
Visin Estereoscpica [ 131 ]
#segurarse de que el <$tereo paralla+= no e+cede 6.1mm )formato
de 8.mm* o 1.8mm )en el formato de &'mm*. $tereo (aralla+ es la
distancia que e+iste entre los objetos cercanos ! los lejanos en la
vista utilizada. $tereo (aralla+ suele ser e+presado como angular
paralla+ o linear paralla+.
#ngular paralla+ se refiere al grado de convergencia necesario para
fundir un objeto. Un objeto en el infinito estereoscpico tiene una
angular paralla+ de cero en el mundo real.
Linear paralla+ es la diferencia que e+iste entre la distancia de los
puntos homlogos en el par estreo. -ecordemos que cuando
tombamos dos fotograf"as para construir la imagen
estereoscpica e+ist"an gran cantidad de puntos en comn en
ambas ! puntos nicos en cada una de ellas.
$eguir los principios estticos de una buena imagen estreo.
>anto la profundidad de campo como el stereo paralla+ son conceptos
matemticos que pueden ser calculados fcilmente, mientras que los
principios estticos que se sigan dependern nicamente de la creatividad
! capacidad art"stica de cada persona.
(ara realizar el clculo de la distancia focal utilizamos la frmula
desarrollada por ?hon @ercovitz obteniendo el m+imo efecto
estereoscpico en las imgenes dentro de lo permitido.
@ 9 (7)LAB* ) LB7C A )LDB*71 *
@, @ase estreo )distancia entre los ejes pticos de la cmara*
(, <(aralla+= obtenido, en mil"metros
L, 2istancia mas lejana de las lentes de la cmara
B, 2istancia mas cercana a las lentes de la cmara
C, 2istancia focal de las lentes
La profundidad del sujeto suele coincidir con L E B 9 2 aunque no
siempre se cumple, sobre todo con distancias grandes. $egn @ercovitz ,
cuando la distancia al objeto ms alejado de la cmara sea infinito
podemos utilizar, @ 9 ( )B7C A F* , pudiendo aplicarla para vistas
ortogonales.
[ 132 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 3. #onfi$uracin para render Estereo en %lender.
Con,iguracin en %len"er
La configuracin en @lender es bastante sencilla. @asta con a/adir dos
cmaras a la escena que estn emparentadas con un objeto que controlar
su rotacin ! posicin. (ara ello, este objeto padre tendr una restriccin
de tipo <&rac' &o= con un objeto Empt! )ver Cigura 8*. El render habr
que realizarlo con cada una de las cmaras, componiendo el resultado de
las dos cmaras en una misma imagen o fotograma del video resultado.
0e,erencias
http://dmi.uib.es/~abasolo/cursorealidad/paco/Estereoscopia.html
http://www.neoyet.com/vision.htm
http://nzphoto.tripod.com/stereo/3dtake/fbercowitz.htm
http://www.users.red3i.es/~stereoweb/vision.htm
Fotograma de la Pelcula de Animacin
Elephants Dream realizada con Blender
Copyright 2006, Blender Foundation
Netherland !edia Art "ntitute
###$elephantdream$org
Seccin Seccin III III
Animacin Animacin
A curve m
o
n
k
e
y
IPO
Tcnicas de Animacin en Blender
Carlos Lpez Yrigaray
klopes@unizar.es ::
l arte ha encontrado en la infografa su ltima forma de
expresin, y la generalizacin de esta ha llevado a la
aparicin de un sinnmero de artistas que, asu vez, han
saido transmitir su ora a trav!s de la red. "ecprocamente, la
popularidad de los programas gr#ficos, y en particular los que
favorecen la creacin de persona$es y su animacin, han
impulsado la creacin de programas de licencia lire como
%lender y la me$ora constante del soft&are disponile en todos
los #mitos.
'
Estas mejoras se hacen especialmente patentes en cuanto a la facilidad
de uso de las utilidades, permitiendo la creacin de escenas expresivas con
un esfuerzo menor, sin menoscabo de la capacidad artstica, que se ve por
el contrario ms libre en cuanto a las limitaciones del programa.
Como el proceso de modelado, que ha pasado a dividirse en varios tipos
desde la creacin de estructuras malladas polgono a polgono hasta la
escultura virtual usando herramientas adecuadas!, o la creacin de
materiales " entonacin de la luz que van pasando por sucesivas fases de
calidad, refinndose para acercarse cada vez ms a la realidad de una
fotografa, o haci#ndose tan manejables como para modelar el ambiente de
forma creativa!, el de la animacin ha evolucionado hacia el modulado de
la composicin de acciones en una lnea de tiempo, o la implementacin de
sistemas de toma de decisiones de los propios personajes mediante
algoritmos de inteligencia artificial.
En esta exposicin se pretende comentar el estado del arte en el momento
de escribir estas lneas, en cuanto a la animacin en $lender %&, desde el
movimiento de un objeto hasta las posibilidades de animar un personaje.
Moviendo Blender
El movimiento de un objeto lo definiremos tal como se usa en su sentido
matemtico, es decir' su desplazamiento por el espacio %&, junto con sus
giros " sus cambios de escala en los tres ejes de referencia, esto es' la
modificacin de su matriz caracterstica.
[ 135 ]
A
n
i
m
a
c
i

n
[ 136 ] Tecnologas Libres para Sntesis de Imagen 3D
( cualquier otro cambio aparente del objeto cambios en su geometra,
deformacin esquel#tica o por curvatura del espacio, roturas, color,
material...! lo llamaremos, en general, animacin, " "a est.
)nicialmente, un movimiento se describe mediante curvas que indican el
valor del parmetro en el tiempo, "a sean valores coordenados, ngulos, in*
tensidades... +i un objeto slo va a dar botes por la escena sin moverse del
sitio, slo habr que definir una curva en el canal ,oc- figura superior!.
Tcnicas de Animacin en Blender [ 137 ]
Estas curvas se agrupan en objetos de la llamada clase )./, " sus curvas
son las curvas )./. .odemos ver copias del objeto animado en cada uno de
sus puntos de cambio nodos, 0e"s! para hacernos una idea de su
evolucin.
,os objetos tambi#n pueden estar animados simplemente por
restricciones, cambiando su posicin, orientacin " aspecto por la accin
de otros elementos, como el conservar la orientacin hacia un objetivo,
clonar sus coordenadas u orientacin, recorrer una curva, ... Estas
restricciones tambi#n estn controladas a su vez por una curva )./ que las
puede desactivar cuando su valor es 1. 2ambi#n podemos generar
animacin con modificadores' enganchando v#rtices a otro objeto 3oo0s!,
pasando a trav#s de una rejilla deformada lattice!, constru"endo un
esqueleto,...
[ 138 ] Tecnologas Libres para Sntesis de Imagen 3D
Python
Evidentemente, existiendo un entorno de programacin dentro del propio
$lender un (.) para lenguaje ."thon!, estamos capacitados para crear
curvas )./ mediante un programa, explcitamente o en base a un interface
controlado por el usuario. El movimiento, entonces, estara calculado
previamente en el momento de uso del script. .ero tambi#n podemos
evitar el paso de crear curvas modificando directamente las caractersticas
del objeto en cada fotograma. .ara ello hacemos uso de los +cript,in0s,
enlaces directos desde una entidad de blender un objeto%&, cmara,
material... o una escena completa! a programas que se ejecutarn en cada
cambio de cuadro.
Dirigiendo el movimiento externamente Drivers
/tra de las 4ltimas herramientas a5adidas en $lender son los drivers,
que controlan curvas )./ individualmente por medio de otra curva, o bien
con una lnea o un programa escrito en ."thon ."&rivers!. ( grandes
rasgos, nos permite crear animaciones que dependen de otras animaciones
o de movimientos de objetos.
Como era de esperar, todas las curvas )./ de todo tipo pueden ser
controladas por drivers, tambi#n las que cambian los parmetros de los
materiales, luces " cmaras, " las que controlan los gestos en las 678s ver
ms abajo!.
Tcnicas de Animacin en Blender [ 139 ]
Aprovechando el !ame"#ngine
/tra de las utilidades recientemente implementadas es la generacin
de movimientos generados por el motor de juegos de $lender, lo que nos
da la posibilidad de a5adir complejidad fsica a la escena con colisiones "
comportamiento realista de los objetos.
#s$%eletos en Blender
El ms potente modificador, casi imprescindible, para la creacin de
personajes animados, es el uso de esqueletos, en $lender llamados
(rmatures, que constan de segmentos huesos, $ones! que pueden
emparentarse formando una estructura mvil que se puede animar.
( la preparacin de un esqueleto completo, adecuado al objeto que
pretende deformar, con sus controles para usar de manera cmoda, se le
llama rigging.
Acciones
El movimiento de los huesos responde a )./s de un tipo especial,
(ctions, que permite desplazamiento, rotacin " escalado de estos
individualmente. 3a" que hacer notar que las rotaciones utilizan 9
parmetros, seg4n el m#todo de orientacin de los cuaternios de 3amilton
:, ;, <, -! en lugar de los ngulos de Euler ;, <, -! que usan los objetos
%&, para aumentar la velocidad de clculo " evitar los ejes privilegiados "
puntos nodales.
[ 140 ] Tecnologas Libres para Sntesis de Imagen 3D
,a situacin de los huesos de un esqueleto en un instante forma una
.ose, " una secuencia de poses genera una (ccin. (s que podemos crear
una secuencia completa animando un esqueleto en una accin 4nica con
poses sucesivas, si bien podemos pensar que ciertas partes de la accin
pueden repetirse, en esta u otras acciones menear la cabeza, aplaudir, dar
un paso!, con lo que lo ideal es descomponer la animacin en acciones
sucesivas, que pueden mezclarse unas con otras, ms cuando en una accin
no tienen por qu# intervenir todos los huesos, as que podemos crear
acciones para los pies, acciones para los brazos, para los dedos, la cabeza,
la cola...
En las 4ltimas versiones de $lender no slo podemos incluir secuencias de
poses de esqueletos, sino que podemos combinarlas con movimientos de
objetos o de la propia (rmature como objeto en s mismo. Esto adquiere
sentido si tenemos objetos conectados al esqueleto o al modelo que los
estn controlando, como complementos de la ropa que se mueven al
caminar, objetos de control que tiran de los ojos hacia adelante en una
accin de sorpresa, etc.
De&ormacin de mallas
#s$%eletos
( estos esqueletos podemos asociar una malla para que se deforme con
el movimiento de los huesos, aunque tambi#n podemos usarlos
emparentando objetos directamente a los huesos, como componentes
Tcnicas de Animacin en Blender [ 141 ]
rgidos robticos. ,a deformacin de una malla asociada a un esqueleto
llamada s0inning! se puede producir de varias maneras, "a sea mediante
grupos de v#rtices que siguen a determinados huesos, por asignacin
automtica de cercana a estos Envolventes!, o una combinacin de ambas
t#cnicas.
'ertex (eys
Esta herramienta es la ms importante para dar expresividad a
nuestros personajes, pues es la manera ms cmoda de modificar las
mallas en una secuencia para que cambien su apariencia con el tiempo.
Consiste en crear copias modificadas de la malla original gestos, +hapes!,
de manera que podemos conseguir una coleccin de gestos para mezclarlos
" combinarlos en la animacin. +i bien existe una forma bsica de usar las
7ertex 8e"s, de forma absoluta, haciendo uso de ellas una tras otra
linealmente, la opcin ms interesante es usarlas de forma relativa 678s!.
Esto significa que en cada momento, estamos sumando los gestos de una
cara que nos interesan, para conseguir que un personaje pueda hablar,
parpadar " mover las cejas a la vez. El mecanismo es simple de entender, "
ahora mu" fcil de gestionar gracias a los botones de la ventana de
acciones' cada gesto est controlado por una curva )./, que indica con
cunta intensidad se realiza' con 1 no tiene lugar, con = vemos el gesto tal
cual, " con valores superiores podemos incluso exagerarlo.
>racias a la posibilidad "a comentada de introducir animaciones de
objetos dentro de acciones, tambi#n podemos a5adir secuencias de 678s
dentro de estas, consiguiendo sumar la expresividad de la malla a los
movimientos de los huesos.
[ 142 ] Tecnologas Libres para Sntesis de Imagen 3D
Animacin &acial y sincronizacin la)ial
Como apartado especial quedan estas actividades, imprescindibles para
dar expresividad " lenguaje a nuestros personajes " que por s mismas
constitu"en una ocupacin en la organizacin de un pro"ecto animado. ,a
expresividad es responsabilidad del animador " de su capacidad artstica, "
la sincronizacin labial lips"nc! exige un esfuerzo a veces impredecible, "
conocimientos del habla " la fonacin en el idioma en el que habla el
personaje. +upondra material para una charla que, por otra parte "a se
imparti en otro encuentro, as que en este apartado nos limitaremos a
comentar lo que ofrece $lender para cambiar la expresin de la cara de un
personaje. En general, podemos usar las dos t#cnicas comentadas de forma
no exclu"ente.
?n rigging facial es adecuado para los motores de tiempo real @26!, esto
es' juegos " aplicaciones interactivas. En la actualidad, raramente un @26
permite combinaciones de mallas para crear expresividad o habla, por lo
que todas las deformaciones deben hacerse con esqueletos. Esta tarea no
suele ser complicada porque normalmente no se exige una interpretacin
dramtica del actor, pero si fuera necesario, el m#todo consiste en crear un
sistema de huesos anlogo a la musculatura de la cara, de manera que al
asociar los v#rtices, estos se muevan como la piel que ha" sobre ellos. ,a
aproximacin es bastante buena, pero no es un m#todo adecuado para
expresividad sutil.
Tcnicas de Animacin en Blender [ 143 ]
,a manera habitual de dar expresiones a una cara es modelarlas mediante
copias de la malla, separadas en mitades si es necesario ceja derecha
arriba * ceja izquierda arriba,...!. Estas mallas, en realidad se guardan
internamente como deplazamientos relativos de los v#rtices con respecto a
la malla base, de manera que el programa slo tiene que sumar, por cada
v#rtice, un vector por cada expresin activaA este vector estar previamente
multiplicado por la intensidad con que se realiza esa expresin,
usualmente un n4mero entre 1 " =. Esta intensidad es, precisamente, la
que nos dan las curvas )./ que se definen en las 678s.
,a comodidad para insertar nuevos gestos en la animacin es mu"
importante para un trabajo fluido. Esencialmente, toda la potencia para
generar animacin por 678s estaba implementada desde hace a5os en
$lender, pero gracias a los nuevos paneles de +hapes, su inclusin con
deslizadores en la ventana de acciones, la asignacin de nombres a cada
expresin " otros detalles que poco a poco se han ido a5adiendo, es cada
vez ms rpido conseguir lo mismo " con ms control.
[ 144 ] Tecnologas Libres para Sntesis de Imagen 3D
Creacin de !*+s personalizados con drivers
,a implementacin de drivers que controlen el movimiento ha abierto un
sinfn de posibilidades para la animacin, " el ms inmediato parece ser el
control manual mediante creacin de botones sliders! en el propio espacio
%&. (s, el desplazamiento de un objeto puede generar animacin en todos
los objetos que tengan un )./ con drivers asociados a #l. Bohnn" @attheCs
guitargee0!, un experto usuario de $lender, cre un peque5o script que
inmediatamente fue a5adido a la versin oficial. >enera controles de
diversas formas que se usan para enlazar a drivers de una malla con 678s,
de manera que podemos fabricar una cara esquemtica con peque5os
objetos que, al moverlos, nos mueven peque5os rasgos directamente sin
tocar para nada el sistema clsico de animacin.
Blender y Doom 3
Carlos Folch Hidalgo
FOLKYTO@teleline.es ::
oy da todo el mundo ha oido hablar de los videojuegos
que realizan emresas !amosas "omo #d $o!t%are&
'alve& (lizzard y hasta )i"roso!t. *ombres "omo +oom
,& -al! Li!e .& /ar o! /ar"ra!t& et".. son !amosos entre el 0bli"o
general. 1ero estos juegos no s2lo ermiten divertirse de la
manera tradi"ional& "ontra la 3m4quina5 y online& sino que
adem4s abrieron ha"e tiemo un nuevo "amo ara el desarrollo
#ndie: los mods.
-
Hay que decir que los mods nacieron con juegos mucho ms antiguos,
pero nos centraremos en los que utilizan engines 3d y requieren de un
software 3d para la creacin de sus grficos.
Videojuegos y mods
Un mod no es sino una variacin de un juego comercial. a variacin
puede ser parcial o total. os mods con variaciones parciales son los ms
comunes, aprovechndose la mecnica del juego original e introduciendo
nuevos grficos, sonidos, comportamientos y niveles.
Figura 1. Captura de pantalla de Counter Strike.
[ 145 ]
A
n
i
m
a
c
i

n
[ 146 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 2. Captura de pantalla de Doom.
os mods con variaciones totales son ms escasos, so!retodo de!ido a
la dificultad y al tiempo de desarrollo necesario. Uno de los mods ms
famosos de la historia es el Counter Strike, que fu" desarrollado como mod
del Half Life.
Cmo puedo crear un mod?
#l potencial creativo y de diversin e$tra que proporciona la creacin de
mods es, hoy d%a, induda!le. as empresas desarrolladoras de videojuegos
hace tiempo que se dieron cuenta de su utilidad y por ello muchas
proporcionan algunas de las herramientas necesarias para el desarrollo de
mods. Herramientas de compilacin y los montadores de niveles son
ejemplos de ello. &eamos un par de ejemplos, !uscando engines recientes,
para no e$tendernos eternamente'
Id So!"are
(readora de )oom y *ua+e ,como t%tulos ms famosos-, es una de las
empresas ms punteras a la hora de favorecer la creacin de mods y de
apoyar el desarrollo .ndie en general. /o slo proporciona editores de
niveles con sus juegos, sino que adems acostum!ra a li!erar sus motores y
sus herramientas como 01 cuando ha pasado un tiempo desde su
pu!licacin.
(omo ejemplo sa!er que id 2oftware li!er el cdigo fuente de *ua+e ...
3rena el verano pasado, y que en 4e!rero de este a5o li!er el 0t+6adiant
y el q3map7 ,editor de niveles y compilador-. 3dems es una de las pocas
Blender y Doom 3 [ 147 ]
compa5%as que sacan versiones para inu$ de su juegos y sus
herramientas, y es conocida su predileccin por el desarrollo para 8pengl
antes que para )irect$ ,am!as son 31.9s 3), si !ien 8pengl es multiplata:
forma-.
/o podemos pasar pgina sin mencionar a ;ohn (armac+, co:fundador y
programador de id 2oftware, y uno de los programadores que ms avances
ha introducido en los videojuegos a partir de ideas propias y ajenas.
Val#e
(readora de Half ife < y 7, )ay 8f )efeat, etc.., y uno de los mayores
contrincantes de id 2oftware con permiso de #pic 0ames ,Unreal- y de
(ryte+ 2tudios ,4arcry-. &alve no tiene una pol%tica de contenidos tan
a!ierta como id 2oftware, pero su apoyo a la creacin de mods tam!i"n es
!astante !ueno. 3 partir de la salida de =Counter Strike: condition cero>
incluyeron en sus juegos un sistema multijugador !asado en un entorno
propio ,2team- que monitoriza sus juegos e$istentes en la mquina del
jugador.
)esde ese entorno se puede lanzar el editor de niveles, que tam!i"n se
puede conseguir de forma independiente. #s el =famoso> &alve Hammer
#ditor. 3dems, para la realizacin de personajes, &alve logr la cola!o:
racin de 2oftimage para distri!uir de forma gratuita ,freeware- una
versin, ligeramente limitada, del conocido ?2., al que !autizaron como
?2. @od Aool ,antes 2oftimage #?1-.
Figura 3. Valve Hammer Editor.
[ 148 ] Tecnologas Libres para Sntesis de Imagen 3D
$l apar!ado gr%ico y Blender
(omo ya hemos dicho los mods pueden ser modificaciones que alcancen
varios apartados del juego original ,grficos, mBsica, comportamientos,
o!jetivos, etc..-, y de todos ellos vamos a concentrarnos en el apartado
grfico, y en la creacin de contenidos 3d.
os editores de niveles, proporcionados por las desarrolladoras, se
encargan de mezclar todos los elementos que el =modder> le proporcione.
Una vez dise5ado un mapa, o nivel, el editor suele tener la posi!lidad de
compilar el mapa para ser cargado directamente en el engine original del
juego ,llamado a trav"s de cnsola, o con una 0U. especial para ello-. #s la
forma de mod ms sencilla, la creacin de mapas y su carga directa en el
juego original ,tam!ien llamados packs-
(ada editor de niveles suele tener su propio cdigo y funcionamiento. as
=entidades>, los =props>, los =infoCplayerCstart>, los =triggers>, etc.. son
slo un ejemplo de t"rminos que podemos encontrar en distintos editores.
/o vamos a entrar en ellos, porque tendr%amos que hacer un glossario para
cada editor ,y para eso ya estn las ayudas y los tutoriales- y vamos a
simplificar en la creacin de 7 componentes que siempre encontramos,
denominados de distintas maneras, en los editores de mapas'
8!jetos ,estticos o animados-
1ersonajes animados
os o!jetos cumplen varias funciones. )esde formar parte del suelo,
paredes y techo ,o cielo- del mapa hasta ser simples o!jetos de
am!ientacin. 2i van a tener propiedades de som!reado, afectacin de
f%sicas o si van a ser fracciona!les o con decals ,te$turas que se a5aden
cuando les afecta una accin- no lo vamos a tratar aqu%.
os personajes animados ,colocar un personaje no animado es colocar una
estatua, con lo que ya no es un personaje '1 - tam!i"n pueden cumplir
varias funciones, pueden verse afectados por comportamientos, seguir
rutas, ser activados por otros elementos, etc.. Aampoco vamos a tratar eso.
o que s% vamos a ver son los elementos, que forman parte de los o!jetos y
de los personajes, que podemos crear o definir con Dlender'
Modelado Lowpoly' (reacin tridimensional del modelo, en
tringulos.
Texturas' 3plicacin de mapas U& de te$turas en canal diffuse y
normal maps.
Esqueletos' (reacin de 3rmatures para animar los modelos.
Blender y Doom 3 [ 149 ]
Creacin de un personaje con Blender
1ara la creacin de nuestro personaje utilizaremos referencias y !ocetos. #l
!ocetado de un s+etch, o idea rpida, nos dar seguridad y rapidez a la
hora de modelar.
&odelado del personaje
@ientras modelamos podemos modificar aspectos que creamos
mejora!les. #l !oceto no slo suele ser una !uena forma de tra!ajo propia,
tam!i"n es la forma de enlazar el tra!ajo del artdesigner con el del
modelador. 3 los !ocetos que se crean de frente y de perfil, optimizados
para su uso directo en el modelador usado, se les conoce comunmente
como !lueprints.
#n Dlender podemos cargar dichos !lueprints directamente en los visores.
3 trav"s del menB View podremos colocar imgenes distintas en cada
divisin, de la ventana 3d, que hagamos.
Figura 4. Boceto cargado en la 3D View de Blender.
[ 150 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 5. La herramienta irror en Blender.
1ara modelar el modelo podemos usar la t"cnica que deseemos,
mediante Do$ modeling, usando e$trusiones para ir creando el personaje o
incluso v"rtice a v"rtice ,o el concepto =!ric+ !y !ric+> de ;!elanche-.
.ndependientemente de la t"cnica usada hay una herramienta que resulta
muy Btil, en cualquier software 3d, a la que se le llama Mirror.
#l Mirror no es sino el reflejo, con respecto a un eje, de lo que nosotros
vamos modelando, y se suele usar modelando un lado del personaje y
dejando que el @irror cr"e la otra mitad como copia reflejada. #sto
permite personajes sim"tricos y slo lo desactivaremos a la hora de crear
irregularidades ,como en el peinado-, personajes asim"tricos o a la hora de
a5adir determinados tipos de ropa y complementos.
1or Bltimo hay que se5alar una condicin especial del modelado de
personajes para videojuegos. Aenemos la necesidad de conseguir mallas
ligeras para li!erar al motor grfico y que sea as% capaz de mostrar en
pantalla todo lo necesario sin que se relentice ,fps- el juego. 3 estas =mallas
ligeras> se las conoce como modelado owpoly, y su !ase consiste en
intentar modelar slo aquellos detalles que sean imposi!les de simular
mediante te$tura o normal map.
Blender y Doom 3 [ 151 ]
Figura 6. alla trianguli!ada en Blender.
3ctualmente un personaje protagonista puede rondar tranquilamente
los 3EEE polys ,tris- y los personajes secundarios pueden ir de <EEE a
7EEE polys ,tris-. 8!viamente si hay personajes que slo actuarn al fondo
de la accin y que nunca se vern en detalle estas cifras pueden !ajar
mucho, tam!i"n hay que se5alar que los actuales motores de Bltima
generacin permiten personajes principales de ms de FEEE polys.
#l t"rmino polys, usado aqu%, hace referencia al nBmero de pol%gonos, y el
t"rminos =tris> se usa para especificar que dichos pol%gonos son tringulos.
#n la mayor%a de softwares de creacin 3d podemos crear pol%gonos de G o
ms lados ,usando f:gons o n:gons- pero para la e$portacin para
videojuegos de!emos dejar la malla triangulizada porque los motores
grficos, y ms concretamente las 31.9s grficas usadas, slo muestran
tringulos. #n Dlender hay la opcin de triangulizar una malla pulsando
Ctrl"t pero siempre es mejor hacerlo de forma manual para evitar aristas
re!eldes.
Creacin del mapa 'V
Una vez tenemos el personaje modelado hay que aplicarle te$turas. as
te$turas usadas dependen, en cuanto a tama5o y tipo, de la capacidad del
motor. as te$turas de!en tener normalmente un tama5o que sea potencia
de 7, aunque dependiendo de la aceleradora pueden usarse te$turas que se
salten esa norma pero eso no lo vamos a e$plicar aqu%. 3s% se suelen usar
te$turas de <H$<H, 37$37, HG$HG, <7I$<7I, 7FH$7FH, etc... #l tama5o
m$imo que vamos a poder usar depender de que el motor sea capaz de
mostrarla, junto con el resto de mallas y te$turas, en una escena sin
relentizarse. Hoy d%a F<7$F<7 <E7G$<E7G son tama5os !uenos para hacer
la te$tura de nuestro personaje. @encionar que aunque en los ejemplos he
puesto nBmeros sim"tricos las te$turas pueden ser de 37$HG, etc...
[ 152 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 7. #$ando el ark Seam en Blender.
#n cuanto al tipo, las te$turas ms usadas son las que se usar%an como
diffuse ,o el color propiamente dicho- y las que nos dar%an la informacin
de !ump ,relieve- y las especulares ,!rillo-. Aam!i"n hay motores que
aceptan los normal maps, de los que ha!laremos despu"s. 3 la hora de
plantear nuestra te$tura de!emos tener en cuenta si de!er ser, o no,
tilea!le ,que se puede repetir, una junto a otra, sin que se vean las
uniones-.
1ara poder aplicar las te$turas a nuestro personajes de!emos definir antes
el mapa U&. )icho mapa no es sino e$tensin de las coordenadas 3d, de los
v"rtices de la malla, en un mapa 7d. 1ara crear dicho mapa en Dlender
usaremos el modo 4ace 2elected @ode, y eligiremos el tipo de proyeccin
U&. 2i usamos el 2(@ marcaremos algunos v"rtices por donde el
programa calcular un corte ,mar+ seam- y luego ajustaremos las
coordenadas U&, en el .mage #ditor, mediante el uso de 1oints y el 2(@
Unwrap. (uando el modelo es complejo, por ejemplo con un personaje
para videojuegos '1, es recomenda!le ir mapeando por partes en vez de
intentar hacerlo todo entero de una tirada.
(uando tenemos el mapa U& creado lo e$portaremos a una imagen que
nos muestre el mapeado para poder, posteriormente, pintar encima las
te$turas en nuestro editor de imagen preferido ,ya sea 0imp, 3rtrage,
etc...-. 1ara e$portarlo usaremos el script, que trae por defecto Dlender,
llamado =Save #V %ace La&out>. 1osteriormente !astar con que
carguemos en Dlender la imagen creada y ya podremos ver como queda,
perfectamente ajustada, a nuestro modelo ,3ltJz para visualizar las
te$turas aplicadas con U&-.
Blender y Doom 3 [ 153 ]
Figura 8. apa #V e$traido con el Script 'Save #V %ace La&out( & pintado con )imp.
Figura 9. El modelo final con la te*tura aplicada.
[ 154 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 10. Script para hacer un '+ender to ,e*ture(.
(ender !o !e)!ure y *ormal mapping
Ka tenemos el mapa U& y las te$turas, pero no nos convence la
sensacin de volumen que hemos conseguido con ellas. #s hora de usar el
=render to te$ture>. )icho t"rmino se usa para referirse al proceso de
render, de cada una de las caras del modelo afectadas por la iluminacin
que deseemos, y al volcado de esas imgenes en el mapa U& de nuestro
modelo. )e esta forma, y dependiendo del motor de render usado,
podemos conseguir un som!reado ms realista en nuestras te$turas. Hay
que advertir que se suele usar para ello una iluminacin que simule una 0.
suave para permitir que nuestro modelo sea vlido en cualquier situacin.
#n Dlender disponemos de un script que realiza esto, con mayor o menor
fortunaL es el DrayDa+er
M
, realizado por macouno.
/o vamos a despedirnos aBn de este script, ya que permite tam!i"n la
creacin de normal maps para nuestro modelo. os normal maps son un
concepto parecido a los !ump maps ,mapas de relieve en escala de grises-,
pero a diferencia de "stos Bltimos los normal maps utilizan la informacin
60D, con los valores de sus canales asignados a cada eje de coordenadas,
para calcular la simulacin de relieve en el espacio tridimensional. #sto,
ms o menos traducido, quiere decir que la simulacin de relieve se ver
tam!i"n afectada por la luz de la escena y por la posicin de la cmara con
respecto a las caras del o!jeto ,y sus normales L:- -
6l $"rit (ray(a7er& junto "on su do"umenta"i2n uede en"ontrarse en la siguiente
4gina %eb: http://www.alienhelpdesk.com/index.php?id=22
Blender y Doom 3 [ 155 ]
Figura 11. .zqda' -ormal ap e*traido con Bra&Baker.
)rcha' -ormal ap aplicado a coordenada$ #V.
a forma de hacerlo es creando un modelo en alta ,highpoly- a partir
del modelo lowpoly. 3 este modelo en alta le aplicaremos un material, para
crear el normal map, con un color 60D por cada direccin y
posteriormente usaremos el script DrayDa+er, seleccionando el modelo en
lowpoly y manteniendo activo, en el script, el layer donde se encuentra el
modelo highpoly. 1ara la creacin del material para normal map lo mejor
es revisar la documentacin oficial de Dlender en la siguiente direccin'
http://blender3d.org/cms/Normal_Maps.4!.".html
Creacin de es+uele!os
(on el personaje modelado y te$turizado es hora de crear las
animaciones que utilizar el motor para que el juego sea m%nimamente
dinmico ,nadie dijo que esto fuera un camino de rosas-. 1ara conseguir
eso primero de!emos crear una 3rmature que har las veces de esqueleto
de nuestro modelo. a creacin de 3rmatures puede parecer una incgnita
total, pero aveces !asta con fijarse en la anatom%a real para sa!er dnde y
cmo hay que colocar cada Done ,hueso-. os huesos, que componen las
3rmatures, son o!jetos no renderiza!les unidos entre s% por jerarqu%as. 2e
componen de root y tail ,ca!eza y cola-, aunque tam!i"n se le llama tip a la
tail. #n el root de cada hueso se encuentra su punto de pivote. as
transformaciones que hagamos, en un nivel de la jerarqu%a, descendern
hasta sus descendientes transformndolos a todos. 1or ejemplo, si rotamos
un hueso padre todos sus descendientes rotarn tomando como punto de
pivote el root del hueso padre.
[ 156 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 12. .zqda' .rmature$ en Blender.
)rcha' Envelope$ en Blender.
Aeniendo en cuenta esos aspectos crearemos nuestra 3rmature
cuidando que la jerarqu%a se comporte tam!i"n de forma anatmicamente
correcta ,o mecnicamente correcta si se trata de un ro!ot '1 -.
S,inning - pesado de #.r!ices
NKa puedo empezar a animar mi 3rmatureO /o. 3unque ya queda
menos. Una vez creada la 3rmature es hora de enlazar el modelo a la
misma. 3 esto se le llama 2+inning y no es sino la asociacin de cada
v"rtice a, como m%nimo, un hueso. Una vez asociados todos los v"rtices
podremos animar el esqueleto y los v"rtices se comportarn como si
estuviesen pegados a los huesos, osea rotarn, se movern y se escalarn si
los huesos a los que estn asignados lo hacen.
)esde la versin 7.GE disponemos en Dlender de G modos de visualizacin
de la 3rmature. Uno de ellos, el modo #nvelope, nos puede ayudar en el
s+inning de nuestro modelo. 3ntes slo ha!%a una forma de hacerlo, que
gracias a )ios aBn e$iste, y era mediante la creacin manual de &erte$
0roups a los que se asigna el mismo nom!re que el hueso que les va a
influir ,cada v"rtice puede estar en ms de un grupo-. 2i usamos la
3rmature tipo #nvelope no slo vamos a ver como nuestro esqueleto se
parece un poco ms al mu5eco @ichel%n, sino que adems veremos como la
3rmature ser capaz de influenciar a los v"rtices que queden dentro de su
Blender y Doom 3 [ 157 ]
estructura o de su zona de influencia. a estructura de los envelopes es
!ien visi!le, son esas esferas hiperdesarrollada, su manipulacin es
individual para el root y para la tail y su uso se !asa en el escalado de sus
partes hasta que los v"rtices que nos interesan quedan dentro de la
estructura. 3dems tenemos la zona de influencia soft, cuyo porcentaje de
influencia disminuye, de forma cuadrtica, conforme nos alejamos del
hueso en s%.
Hemos visto que los v"rtices no slo pueden estar asociados a un Bnico
hueso, pueden ser influenciados por ms de un hueso a la vez y aqu% es
donde empezamos a encontrarnos con el concepto de =pesado de v"rtices>.
2i un v"rtice est asociado a dos huesos podemos decir que reci!e una
influencia del FEP de cada hueso. #sto se puede manipular mediante el
pintado de pesos. 2e puede pintar directamente so!re la malla la influencia
que queremos que cada hueso haga so!re los v"rtices, variando as% su
comportamiento a la hora de las transformaciones. #sto no se hace porque
s%, su o!jetivo es conseguir evitar deformaciones no deseadas, como !razos
que al do!larse parece que se rompen en vez de estar fle$ionndose. 1odeis
encontrar informacin so!re s+inning y pesado de v"rtices en la
documentacin oficial de Dlender
Q
o en la @ediawi+i.
Figura 13. /intando pe$o$ en Blender.
8 http://blender3d.org/cms/#rmat$re_%n&elopes.'4(.".html
http://mediawiki.blender.org/index.php/Man$al/)art*+/,kinning
[ 158 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 14.
3rri!a' .utomatic 01 en Blender.
)erecha' C2lculo de efector & root
con .utomatic 01.
Cinem%!ica direc!a e in#ersa
&amos a hacer un paso fulgurante por estos conceptos. /ormalmente
usaremos cinemtica directa para nuestros modelos de videojuegos,
aunque hay algunos e$portadores ,y motores- que soportan la cinemtica
inversa, y no es cuestin de desaprovecharlos.
a (inemtica directa ,4R o 4orward Rinematics- se !asa en la jerarqu%a
directa para sus transformaciones. Sstas !ajan por la cadena directamente
y se trasladan a todos los descendientes del hueso al que se le aplica la
modificacin.
a (inemtica .nversa ,.R o .nverse Rinematics- utiliza efectores de .R
para mover y rotar a la vez toda una cadena jerrquica. 1ara ello calcula la
distancia con el origen de la cadena y rota automticamente los huesos
intermedios cuando se modifica la distancia a dicho origen.
1ara aquellos e$portadores, y editores, que no calculan las rotaciones
usando las cadenas, con cinemtica inversa definidas, siempre nos queda
la opcin de simularla para as% aumentar la rpidez con la que creamos las
acciones. 1ara ello Dlender tiene la posi!lidad de usar el Automatic IK
que simula la e$istencia de un efector de cinemtica inversa colocado en la
punta ,tail- del hueso y que toma como origen de la cadena el hueso
conectado ms alto en la jerarqu%a.
Blender y Doom 3 [ 159 ]
Hay que sa!er que la configuracin, o 2etup, de estos sistemas de
animacin son un arte en s% mismos y forman parte de una disciplina que
se simplifica !ajo el concepto de 6igging. Ssta incluye no slo la creacin
de la 3rmature, sino tam!i"n el pesado de v"rtices, el uso de constraints, la
configuracin de 4RT.R, el uso de scripts para la creacin de 0U.9s y
ayudantes personalizados, morphing y un sinf%n de posi!lidades que
permiten facilitar el tra!ajo de los animadores.
/as Ac!ions
Aenemos nuestro modelo te$turado y =riggeado>, con la armature lista
para ser animada. 3hora necesitamos crear nuestra primera 3ction. Una
3ction, en Dlender, es la unidad donde se guardan las claves de animacin
de una accin concreta. 1ara conseguir la sensacin de movimiento
necesitamos insertar poses de nuestra armature ,mediante +eys- que
var%en a lo largo del tiempo. Dlender calcular los intermedios
,=in!etwens> en animacin tradicional- y suavizar esas transiciones entre
pose y pose. 1ara insertar nuestras poses seleccionaremos la 3rmature y
entraremos en =1ose @ode>, una vez all% modificaremos nuestra armature
e introduciremos una +ey para cada hueso pulsando la tecla =i> y
seleccionando el tipo de +ey que necesitemos. 2i avanzamos unos cuantos
frames, modificamos la pose y volvemos a insertar +eys, para los huesos
necesarios, o!servaremos como se produce la animacin al desplazar la
l%nea de tiempo.
Figura 15. .ction Editor con una acci3n cargada.
[ 160 ] Tecnologas Libres para Sntesis de Imagen 3D
as actions se visualizan y modifican en el 3ction #ditor. )esde all%
podemos crear nuevas actions, renom!rarlas, modificar o !orrar las +eys
introducidas o hacer flips de posturas para simplificar la creacin de
actions c%clicas.
a importancia de las 3ctions ser crucial a la hora de e$portar nuestros
modelos. Sstas se e$portarn, junto con la definicin de la malla o
separadas en otro archivo, para que el editor de niveles las cargue
asignndolas a nuestro personaje.
$)por!ando a Doom3
1or fin estamos preparados para e$portar nuestro modelo a un editor de
niveles. &amos a centrarnos, como ejemplo, en la e$portacin para )oom3
,por algo el t%tulo de esta charla-.
$)por!ar personajes a md0
)oom3 tiene, como cada engine grfico, su propio sistema para definir
y reconocer las mallas de los personajes y sus animaciones. #n este caso el
formato es el mdFmesh para la malla y sus coordenadas de te$tura y el
mdFanim para las transformaciones del esqueleto. 1ara am!os usaremos el
script de e$portacin creado por )erCAon ,de los foros de )oom3world-.
o primero es conseguir el script, actualizado para la versin 7.G< de
Dlender, desde'
http://www.doom3world.org/phpbb2/
&iewtopic.php?t=!(!!-postda.s="-postorder=asc-start='"
3ntes de ejecutarlo haremos unos peque5os preparativos en nuestro
personaje para que todo funcione correctamente'
2ituaremos el centro de nuestro personaje en E,E,E
2ituaremos el centro de la 3rmature en E,E,E
/os aseguraremos de que, almenos, hay una 3dview en los visores.
Haremos un smooth de la malla, seleccionando el modelo,
pulsando f y luego =set smooth> en los !otones de edicin
Una vez hecho esto a!riremos el Ae$t #ditor para cargar el script, si es
que no lo hemos colocado en el directorio .scripts de Dlender ,si lo hemos
hecho podemos acceder a "l directamente desde la 2cripts Uindow- y lo
ejecutaremos con 3ltJp. Dastar con que definamos el tama5o, los frames
de nuestra animacin y el nom!re de la misma y el directorio y nom!re
donde e$portaremos el mdFmesh y el mdFanim.
Blender y Doom 3 [ 161 ]
Figura 16. .zqda' Script para e*portar a D4. )rcha' E*portador al formato .SE.
$)por!ar o1je!os a AS$
3unque lo parezca no nos hemos olvidado de los o!jetos. 2u creacin
es !astante similar con la de los personajes, aunque su proceso es ms
sencillo por no necesitar, generalmente, animacin. #n el caso de crear un
o!jeto animado de!eremos tratarlo como un personaje ,ejemplo' una
!andera-.
/ormalmente slo de!eremos preocuparnos de su modelado y te$turizado.
)ado su menor complejidad am!as tareas de!er%an ser mucho ms
sencillas que la creacin de personajes.
1ara e$portar o!jetos, que formen parte o que por si mismos constituyan
un escernario, hacia )oom necesitaremos el e$portador a 32# creado por
Goofos. )icho e$portador podeis encontrarlo aqu%'
http://www.doom3world.org/phpbb2/
&iewtopic.php?t=2(/-postda.s="-postorder=asc-start="
(omo con el e$portador a mdF de!eremos cumplir una serie de
requisitos para que la e$portacin sea correcta'
#l modelo de!er tener coordenadas U&.
2i el o!jeto tiene un material asignado de!eremos activar la opcin
Vcol Pait.
2i el o!jeto o tiene un material asignados activaremos el
Vert!ol
3segurarnos de que la opcin Ae$4ace est activada en los !otones
de #diting.
[ 162 ] Tecnologas Libres para Sntesis de Imagen 3D
2reparando para impor!ar el personaje en Doom$di!
#mpezaremos por el personaje. Aenemos los archivos que definen el
personaje y sus acciones, ahora de!emos crear una estructura de
directorios y archivos, conectados entre s%, que sea reconocida por el
)oomradiant ,editor de niveles que viene con el juego original )oom3-.
2eguiremos los pasos siguientes'
<. (rear una estructura de directorios como la de
la imagen, su!stituyendo el directorio llamado
=geisha> por el nom!re del modelo que estemos
creando.
7. #n el directorio "textures "om#reperso$
a%e colocaremos nuestras te$turas.
3. #n el directorio "materials crearemos el
archivo om#repersoa%e.mtr con los pa:
rmetros siguientes'
nombre_de_material
0
1er_editorimage text$res/nombrepersona2e/nombretext$ra.tga
di33$semap text$res/nombrepersona2e/nombretext$ra.tga
spec$larmap text$res/nombrepersona2e/nombretext$ra.tga
b$mpmap text$res/nombrepersona2e/nombretext$ra.tga
4
G. #n el directorio "models"mapao#%ects"md& colocaremos el
mdFmesh y el mdFanim.
F. #ditaremos el mdFmesh colocando el nom!reCdeCmaterial usado en el
.mtr su!stituyendo el que esta!a entrecomillado en la l%nea de
s'ader.
mesh 0
shader 5nombre_de_material5
H. #n el directorio "def crearemos el archivo om#repersoa%e.def
con los parmetros siguientes'
model nombrepersona2e 0
mesh models/mapob2ects/md//nombrepersona2e.md/mesh
anim idle models/mapob2ects/md//nombrepersona2e.md/anim
4
entit.6e3 nombrepersona2e 0
5inherit5 53$nc_animate5
5model55nombrepersona2e5
4
Blender y Doom 3 [ 163 ]
V. 1or Bltimo crearemos un archivo comprimido ,zip- con los directorios
def, materials, models y textures. (am!iaremos la e$tensin del
archivo por .p+G, y lo copiaremos al directorio "#ase del )oom3.
2reparando para impor!ar el o1je!o en Doom$di!
3l igual que para el personaje, para el o!jeto tam!i"n necesitaremos
una estructura de directorios parecida. &amos a ver los pasos a seguir'
<. (rearemos los siguietnes directorios,
su!stituyendo los llamados cu!eDlender, de
la imagen, con el nom!re de nuestro o!jeto'
7. #n el directorio "textures"om#reo#%e$
to colocaremos nuestras te$turas.
3. #n el directorio "materials crearemos el
archivo om#reo#%eto.mtr con los
parmetros siguientes'
text$res7nombreob2eto7nombrematerial
0
1er_editorimage text$res/nombreob2eto/nombretext$ra.tga
di33$semap text$res/nombreob2eto/nombretext$ra.tga
spec$larmap text$res/nombreob2eto/nombretext$ra.tga
b$mpmap text$res/nombreob2eto/nombretext$ra.tga
4
G. #n el directorio "models"om#reo#%eto colocaremos el archivo
.A(E.
F. #ditaremos la ruta hacia las te$turas del archivo .A(E para que sea
relativa.
H. 1or Bltimo crearemos un archivo comprimido ,zip- con los directorios
materials, models y textures. (am!iaremos la e$tensin del
archivo por .p+G, y lo copiaremos al directorio "#ase del )oom3.
A1riendo el Doom$di!
1odr%amos usar el 0AR6adiant, aunque ahora usaremos el
)oom#ditor que viene con el juego. 1ara a!rirlo podemos crear un acceso
directo con el siguiente path, respetando las comillas y el )editor
6irectorio_instalaci8n9doom3.exe: ;editor
[ 164 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 17. Captura$ de Doom3 con un per$ona5e & un o65eto creado$ en Blender.
#l uso de este editor podr%a llenar el contenido de toda una party, as% que
dejar" un enlace we! para que se pueda investigar a partir de ah%, en la
siguiente U6' http://www.modwiki.net/wiki/6oom%dit
)e momento sa!er que ya podemos cargar nuestros modelos pulsando con
el !otn derecho del ratn so!re el espacio de construccin L:-
Sal!ar al desarrollo Indie
Hemos visto, de forma muy general, que tenemos la posi!lidad de crear
personajes, con Dlender, para incluirlos en un mod, pac+ o mapa del
)oom3. a utilizacin de scripts de e$portacin permiten, hoy d%a, crear
contenidos grficos, con Dlender, para motores que son muy usados por la
comunidad .ndie para la creacin de videojuegos. *uizs los ms
representativos podr%an ser el Aorque o el Dlitz3) ,muy asequi!les-, y el
8gre o el .rrlicht ,01-. 8!viamente para el uso de estos motores ya se
necesita un equipo de desarrollo, o como m%nimo la presencia de al menos
un programador y un grafista.
Fotograma de la Pelcula de Animacin Fotograma de la Pelcula de Animacin
Elephants Dream Elephants Dream realizada con Blender realizada con Blender
Copyright 2006, Blender Foundation Copyright 2006, Blender Foundation
Netherland !edia Art "ntitute Netherland !edia Art "ntitute
###$elephantdream$org ###$elephantdream$org
Seccin Seccin IV IV
Render Render
Rendering or...
how to draw a
m
o
n
k
e
y

F%2
Iluminando con Yafray
Alejandro Conty Estvez
Fernando Arroba Rubio
aconty@gmail.com - gnotxor@gmail.com ::
n esta exposicin vamos a ver cmo se comporta YafRay
a la hora de realizar un render y cmo podemos
controlarlo desde Blender. Para ello traa!aremos
siempre en modo "full# y descriiremos cada uno de los controles
$ue soporta. %s decir& partiendo de $ue en m'todo "full# se
tienen en cuenta tanto la luz directa como la indirecta& nos
encontramos con dos lo$ues de controles para a!ustar esa
iluminacin: la "cache# y los "fotones#. (undaremos& por tanto&
en cmo funcionan estos dos elementos.
%
Para entender mejor el funcionamiento de YafRay nos detendremos un
poco en cmo se definen las luces y ms concretamente en cmo influye
dicha definicin en la aparicin de ruidos y otro tipo de problemas en la
escena. Por supuesto, tambin veremos cmo podemos hacer frente a ste
tipo de fenmenos y las mejores opciones para conseuir buenos
resultados en tiempos de render aceptables.
Hase la luz!
!n raytracer intenta simular el comportamiento real de la lu" cuando
enera las imenes. #sta simulacin debe e$uilibrarse entre la calidad de
la imaen y el tiempo de render. Por tanto, est tambin limitada a la
m$uina sobre la $ue est trabajando y otros factores. Por ejemplo, ser%a
imposible lan"ar rayos desde los objetos luminosos en infinitas direcciones
y calcular su influencia con sus posibles rebotes, teniendo en cuenta $ue
slo son &tiles esos clculos en los pocos casos $ue estos interactuaran con
la cmara. 's% pues, la simulacin se hace desde el concepto contrario,
averiuar $u intensidad y mati" tiene un punto desde la posicin de la
cmara. (o $ue implica aloritmos diferentes se&n el tipo de lu", con sus
ventajas e inconvenientes.
)uando el orien de la lu" es una fuente puntual se emplearn unos
aloritmos locales, rpidos de calcular y absolutamente predecibles. *in
embaro, este tipo de iluminacin es menos realista, produce bordes duros
[ 167 ]
R
e
n
d
e
r
[ 168 ] Tecnologas Libres para Sntesis de Imagen 3D
en las sombras y la lu" $ue producen estar poco mati"ada por rebotes.
+tros tipos de luces son superficies, son ms realistas y producen una
sombra y penumbra mucho ms mati"adas. *in embaro, el problema de
este tipo de luces es la dificultad de clculo. (os mtodos $ue se emplean
son estocsticos, tambin llamados de montecarlo o de muestreo al
a"ar. #ste mtodo es lento pues consiste en tomar muestras del entorno
disparando rayos en todas las direcciones para calcular una media de
intensidad y mati" del color.
Figura 1. Mtodo de Montecarlo
)omo se puede ver representado en la fiura ,, tcnicas de montecarlo lo
$ue hacen es un muestreo aleatorio del entorno, de manera similar al
Ambient Occlusion, $ue captura la influencia de los posibles rebotes de lu"
del ambiente.
(a lu" $ue ilumina una escena no solo procede de fuentes de lu"
propiamente dichas. #n la realidad podemos encontrarnos distintos tipos
de lu"- a. la $ue emite el cielo / no solo el sol de forma directa / y $ue la
podemos simular mediante una imaen de fondo / sea 01R o no 23 b. la
$ue pueden emitir distintos objetos del entorno3 y c. la $ue devuelven otros
objetos en los $ue rebota la lu". Para nuestro caso, todas estas luces se
tratar%an como luces no puntuales y se calcular%an por el mtodo
montecarlo.
)omo se puede observar en la fiura 4, la iluminacin $ue proviene de
todas partes del cielo puede producir una escena muy iluminada sin
apenas matices de sombra. #n este caso es el cielo un ran emisor de lu".
Iluminando con YafRay [ 169 ]
Figura 2. Luz que proviene del fondo.
Figura 3. Luz proveniente de un objeto.
#n el caso de la fiura 5 podemos observar $ue la iluminacin est mucho
ms mati"ada $ue en el caso anterior. 0ay ms contraste entre las "onas
iluminadas y las "onas en sombra y entre ambas e6iste una "ona de
penumbra con muchos matices. 'dems hay $ue resaltar los matices de
color $ue se aportan entre s% los distintos objetos.
#n este &ltimo caso, representado por la fiura 7 podemos observar, iual
$ue en la fiura 5, $ue la iluminacin no proviene de una fuente de lu"
puntual sino de una "ona ms amplia. 'l contrario $ue en el caso anterior,
la iluminacin proviene de una "ona intensamente iluminada de la
habitacin. #n &ltimo caso s% hay una fuente de lu" pero la iluminacin es
indirecta, se basa en el rebote de la lu" en las superficies.
[ 170 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 4. Luz proveniente de una zona iluminada.
El ruido
#l ruido es un problema $ue aparece con cierta frecuencia en
determinadas escenas. *on una serie de manchas o contrastes de lu" y
sombra $ue se acent&an bajo alunas condiciones. (a condicin ideal para
$ue apare"ca el ruido es la utili"acin de fuentes pe$ue8as y potentes. #l
por$u aparece es fcil de entender- si la fuente de lu" es pe$ue8a es
menos probable de encontrar mediante el tra"ado de rayos aleatorio de las
tcnicas montecarlo. *i un punto determinado no encuentra la fuente de
lu" y el punto contiuo s%, aparecer un contraste entre ellos 9uno
iluminado y el otro en sombra.3 dicho contraste ser ms acentuado si la
lu" es potente.
)uanto ms pe$ue8a sea la fuente de lu", ms improbable ser encontrarla
por montecarlo. )uanto menor sea la probabilidad de encontrar la lu",
ms intenso ser el ruido.
(os casos t%picos en los $ue aparecen ruidos son tres- ,. un objeto emisor
muy pe$ue8o 9como se ha dicho antes.3 4. una ventana muy pe$ue8a 9por
idnticos motivos. y 5. un 01R con la lu" muy concentrada.
#n realidad el problema no es el tama8o de la fuente de lu" sino la
visibilidad de sta desde los distintos puntos de la escena. #s decir, una
fuente de lu" lejana es ms dif%cil de encontrar tra"ando rayos de manera
aleatoria, es decir es menos visible3 o, si se prefiere, el anulo visto desde el
punto es ms estrecho, como se aprecia a simple vista en la fiura :.
Iluminando con YafRay [ 171 ]
Figura 5. La visibilidad: el verdadero problema.
Figura 6. ;"$da- El cielo es totalmente visible. Es fcil acertar en la fuente de luz con un
rayo. 1rcha- o !ay sombras muy marcadas ni contrastes" ni aparecen manc!as ni ruido
en la ima#en.
<amos a ver cmo afecta la visibilidad de la fuente de lu" a la produccin
de ruido. )omen"aremos por una situacin irreal en la $ue cual$uier rayo
encontrar la fuente de iluminacin, en nuestro caso el cielo.
'hora vamos a tapar la mitad del cielo. #so dar como resultado $ue slo
el =:>?= de los rayos alcancen la fuente de lu". *e puede apreciar cierto
ruido en el render fruto de los contrastes entre los rayos $ue encuentran la
fuente de lu" 9el cielo. y los $ue no, $ue apro6imadamente sern la mitad
de los calculados.
[ 172 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 7. a$ El cielo est parcialmente oculto. b$ Aparece un poco de ruido en el render.
Figura 8. a$ %ielo poco visible. b$ Aparece muc!o ruido.
*i reducimos la procin de cielo visto, por ejemplo desde una ventana la
iluminacin decrecer, pues se ha restrinido el n&mero de rayos $ue
interceptarn la fuente de lu".
Para compensar la disminucin de la lu", se ha incrementado la potencia
de la lu" @ veces.
#l ruido $ue aparece en la escena por$ue la fuente de lu" es pe$ue8a se ve
intensificado por$ue ha habido $ue incrementar la potencia de la lu" para
conseuir la luminosidad deseada. 'dems, las "onas $ue se encuentran
iluminadas directamente por la fuente de lu" aparecen $uemadas.
Reduciendo el ruido
)uando aparece este ruido intentamos reducirlo de la manera ms obvia.
*ubimos la &uality en el panel de YafRay. #sto soluciona alunos casos,
pues hay $ue tener en cuenta $ue dicho control incrementa el n&mero de
samples. !n mayor n&mero de samples incrementa la probabilidad de
encontrar una lu" cuando esta es pe$ue8a, sin embaro hay un problema-
el tiempo de render se incrementa notablemente. Aientras el tiempo de
Iluminando con YafRay [ 173 ]
render aumenta linealmente, el ruido decrecer en
1/

samples
.
Por lo tanto habr%a $ue utili"ar este mtodo con cuidado y ayudarse con los
fotones y con el refinement de la cach.
"u #acer cuando las luces son $e%ue&as
Bormalmente el problema de tener fuentes de lu" pe$ue8as se suele
producir en escenas interiores donde la lu" puede provenir de pe$ue8as
fuentes de lu" artificial o de ventanas. Para ayudarnos en este tipo de
render podemos utili"ar los fotones. Bo hay $ue confundir esto con los
fotones $ue utili"amos para enerar custicas.
Csicamente lo $ue hacemos con el uso de un buen mapa de fotones es
darle informacin e6tra al mtodo montecarlo, como de donde proviene la
lu" o estimaciones de lu" indirecta, con lo $ue adems nos ahorramos los
rebotes.
Figura 9. Lanzamos fotones desde las fuentes de luz y rebotan
dejando marcas" con esas marcas !acemos el mapa de fotones.
#l mapa de fotones se puede obtener visualmente teniendo seleccionado el
botn 'une (!otons en el panel D; de YafRay. #ste mapa es una
apro6imacin a cmo $uedar el render final. #s muy recomendable
acostumbrarse cuando iluminamos a tra"ar este mapa para la escena, pues
nos aportar informacin valios%sima para conseuir la distribucin de lu"
$ue $ueremos.
[ 174 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 10. Ejemplo de mapa de fotones.
Confiurar los fotones
Para confiurar los fotones debemos seuir unos pasos muy sencillos.
(o primero de todo es activar el botn fotones en el panel de YafRay. (o
siuiente es escoer un n&mero y un radio.
#n este punto hay $ue hacer alunas consideraciones, pues cuantos ms
fotones lancemos ms preciso ser el mapa, sin embaro tambin
aumentar el tiempo de clculo. )uantos ms fotones empleemos ms
precisin y menos manchas o ruido tendremos en nuestra escena. #n
cuanto al radio, cuanto ms randes son ms suave ser el mapa de
fotones, pero eso no debe ena8arnos pues tambin estaremos siendo
menos precisos.
E)untos fotones usar y con $u radioF Pues depende fundamentalmente
de dos parmetros. !no es el tama8o f%sico de la escena en unidades, no en
complejidad. +tro es la precisin $ue $ueremos alcan"ar.
)omo hemos dicho los parmetros ptimos dependen de la escena
concreta y por tanto no se pueden dar recetas micas sobre cmo
hacerlos. Pero al menos s% sabemos cmo debe ser un buen mapa de
fotones. 1ebe tener dos caracter%sticas fciles de entender-
Iluminando con YafRay [ 175 ]
,. Bo tener li#!t lea)s o aujeros de lu" visibles. #s decir, "onas de
lu" $ue aparecen en sitios $ue se suponen deber%an estar en
penumbra. #sto suele suceder cuando el radio de los fotones es
demasiado rande para la escena y sobrepasa notablemente el
tama8o de los objetos, por lo $ue los fotones pueden estar
atravesandolos.
4. 1ebe ser tan suavi"ado como sea posible. Recordamos $ue si
utili"amos un radio de fotn demasiado rande el mapa $uedar
suavi"ado pero estaremos perdiendo precisin en la iluminacin.
!n buen ejemplo de mapa de fotones suavi"ado es el de la fiura
,>.
Figura 11.
'rriba/;"$- Mapa de fotones con radio *.+
'rriba/1ch- Mapa de fotones con radio +.,
'bajo/;"$- Mapa de fotones con radio +.-
#n otras palabras, debemos utili"ar un radio de fotn lo ms rande
posible para $ue $uede suave pero cuidando de $ue no apare"can li#!t
lea)s.
#l tener un buen mapa de fotones es fundamental para el ahorro de tiempo
de render. )uando YafRay se dispone a trabajar con las tcnicas de
montecarlo lan"ando rayos de forma aleatoria, encuentra $ue e6iste un
mapa de fotones. #n luar de ponerse a calcular rebotes para encontrar las
fuentes de lu", lee ese mapa de fotones $ue ya tiene calculados la
luminosidad y color de la "ona. )on esos datos no necesita continuar con
los clculos, ni saber dnde estn situadas las luces.
[ 176 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 12. El resultado del mapa de fotones de la fi#ura *+.
Casos comunes donde $ueden ayudar los fotones
Bos podemos encontrar con varios casos en los $ue los fotones nos pueden
ser de ran ayuda. Por ejemplo cuando necesitamos pe$ue8as "onas
iluminadas en la escena podemos utili"ar luces tipo spot y omni como
emisores de fotones. )uando necesitamos simular $ue el emisor es un
objeto podemos utili"ar luces de rea y confiurarlas como emisores de
fotones. ;ual podemos utili"ar las luces de rea si lo $ue nos interesa es
simular la entrada de lu" por una ventana.
'e%ue&as zonas iluminadas( estudio de dos casos)
#l primer caso es cuando tenemos una ventana por la $ue entra el sol.
#n este caso se iluminar directamente una pe$ue8a rea de la habitacin,
sin embaro el resto de la habitacin deber%a estar iluminada de forma
indirecta.
Iluminando con YafRay [ 177 ]
Figura 13. ;"$da- El sol entrando por una ventana.
1rcha- .ustituyendo el sol por una spot.
Figura 14. ;"$da- /luminaci0n interior 1 1rcha- /luminaci0n interior con spots.
#n la fiura ,5 9;"$da. podemos apreciar un es$uema de ilustrativo de este
caso. Para simularlo podemos emplear el mtodo descrito en la fiura ,5
91rcha..
#l otro caso $ue vemos es el de iluminacin interior. #n este caso el
problema es muy similar- aparece una pe$ue8a "ona iluminada
directamente. )omo en el caso anterior utili"aremos luces tipo spot o
incluso omni, pues en este supuesto los fotones no escaparn de la escena.
)omo en el caso anterior deberemos colocar cada lu" en el sitio natural de
la escena. *i tenemos luces con pantallas como en la fiura ,7, es
aconsejable utili"ar spots para simularlas. *in embaro, es mejor utili"ar
luces de tipo omni en el supuesto de $ue sean puntos de lu" sin apantallar
como es el caso de muchas lmparas cuyas bombillas se encuentran al aire.
[ 178 ] Tecnologas Libres para Sntesis de Imagen 3D
*bjetos emisores
#n otras ocasiones nos encontramos con objetos $ue emiten lu",
alunos de eometr%as complicadas. #stos objetos pueden ser desde
simples plafones a complicados anuncios de nen. *imularlos puede ser
por tanto muy sencillo o muy trabajoso dependiendo de esos factores.
;dentificar dichos objetos en una escena 51 es sencillo, son todos los
objetos cuyo emit est activado. Para simularlos emplearemos una o ms
luces de rea. (o ideal ser%a conseuir una lu" de rea $ue se ajustase al
objeto lo ms fielmente posible, por lo tanto- si el objeto es cuadrado nos
bastar con una, si es ms complejo tendremos $ue utili"ar varias para
cubrir toda la superficie del objeto lo mejor posible.
Por supuesto, el color de la lu" emitida por dichas reas debe coincidir con
el del objeto. Y por &ltimo, el po2er debe estar fijado a ,.>. Genemos la
tendencia de subir el po2er cuando encontramos "onas mal iluminadas en
el render. #sto produce un efecto de $uemado en las "onas cercanas a la lu"
pero siue manteniendo las otras "onas ms oscuras. *i utili"ando los
fotones y sus rebotes no mejora la iluminacin, debemos comprobar $ue la
lu" no se encuentre blo$ueada por al&n objeto o, incluso, arear
iluminacin de relleno.
Para simular objetos emisores emplearemos, como ya se ha dicho, al
menos una lu" de rea, $ue deberemos situar lo ms cerca posible del
objeto emisor pero cuidando $ue no se solape con el mismo. *i se solapa
pueden aparecer efectos e6tra8os o incluso no tener nin&n efecto si los
fotones $uedan blo$ueados por el objeto emisor.
Figura 15. Areali#!t cubriendo un objeto emisor.
Iluminando con YafRay [ 179 ]
Figura 16. %ubriendo una ventana con una luz de rea.
+uz difusa $or una ventana
+tro caso similar es la entrada de lu" difusa procedente del cielo desde
una ventana. )omo en los casos anteriores utili"aremos al menos una lu"
de rea para cubrir la ventana. Castar con una si la ventana es sencilla,
aun$ue tendremos $ue utili"ar varias para ventanas complejas, aun$ue
una simple apro6imacin ser suficente.
)omo en los casos anteriores, debemos situar la lu" de rea lo ms cerca
posible de la ventana, apuntando hacia adentro, cubriendo toda la
superficie pero a la ve" intentando $ue se escapen el menor n&mero de
fotones posible. #l color del rea debe ser el mismo $ue presente el cielo y
el po2er debe estar fijado a ,.
,Y a#ora %u-)))
Cueno, hasta a$u% hemos visto cmo utili"ar distintos tipos de lu" para
simular fuentes de fotones. <amos ahora a pensar como el usuario medio...
*uponamos $ue hemos reali"ado una escena donde las fuentes de lu" son
pe$ue8as y $ueremos optimi"ar el render.
0aciendo caso de lo visto hasta ahora decidimos $ue vamos a utili"ar los
fotones. 's% pues, nos aseuramos de $ue todas las fuentes de lu" pueden
emitir fotones cambiando las $ue sean necesarias por spot u omni, y
colocando luces de rea para simular objetos emisores, ventanas...
[ 180 ] Tecnologas Libres para Sntesis de Imagen 3D
Gambin hemos confiurado un n&mero de fotones y un radio racionales
9:>>.>>> y >,: para empe"ar, por ejemplo.. !na ve" hecho todo esto,
activamos el botn tune p!otons para conseuir el famoso mapa de
fotones... Ey ahora $u hacemosF
Pues lo primero ser comparar el mapa de fotones $ue hemos obtenido con
un render de baja calidad. *i tienen la misma intensidad estamos en el
buen camino, pero si no coincide tendremos $ue revisar nuestras luces
para comprobar $ue no nos hemos olvidado de activar al&n color en
aluna fuente de lu" 9tambin podr%a ser un bu de YafRay.. *i siuen
apareciendo li#!t lea)s puede ser debido a un modelado no slido, por lo
$ue tendr%amos $ue revisar la eometr%a de nuestra escena.
0asta a$u% est todo ms o menos claro, pero ... E*e puede refinar a&n ms
la imaenF Pues s%, vamos a verlo.
Irradiance Cac#e
Para refinar un poco ms la imaen contamos con la ayuda del
irradiance cac!e. Para poder utili"arlo correctamente vamos a ver primero
cmo funciona.
#l irradiance cac!e evita tener $ue calcular la iluminacin lobal en cada
pi6el. Csicamente lo $ue hace es seleccionar alunos pi6eles para reali"ar
los clculos y lueo interpola. #sta interpolacin disolver un poco el
ruido, sin embaro, tambin puede producir ruido de baja frecuencia
9nubes.. #n animaciones, esta interpolacin produce parpadeos bastante
molestos, aun$ue funciona bien y reduce el tiempo de render en imenes
estticas.
Figura 17. %onfi#uraci0n del cac!e.
Iluminando con YafRay [ 181 ]
Para activar el cache necesitamos tener seleccionado el mtodo full y
activar el botn %ac!e para acceder a todos los parmetros de
confiuracin. Para entender mejor como funciona vamos a ver las etapas
del render-
,. Fase de disparo de fotones. 1esde cada emisor potencial $ue
haya en la escena se comien"an a lan"ar los fotones3 repartidos
e$uitativamente entre los emisores.
4. Primer pase de render 9fa)e pass.. #l parmetro (rec3
determina cada cuntos pi6els calcular la cantidad de lu", aun$ue
en las es$uinas tomar ms muestras.
5. Etapa de refinamiento 94 fa)e passes ms.. #n este paso
identifica cambios bruscos de lu" $ue superen el valor
determinado por 4efinement. )uando encuentra valores
superiores al refinado lo $ue hace el prorama es reali"ar un anti5
alias de la lu" tomando ms muestras.
7. Fase final. ;nterpola con el cache resultante y enera la imaen.
'hora $ue comprendemos mejor los pasos del render, vamos a detallar un
po$uito ms los parmetros y su funcionamiento.
Por ejemplo, la calidad de las sombras. .!ado2 quality debe ser un valor
entre > y ,, aun$ue el valor ajustado por defecto es >.H>> $ue ha
demostrado servir para casi cual$uier escena. (o $ue hace este parmetro
es controlar como crece la densidad de muestras en las es$uinas3 por tanto,
a ms muestras, a un valor ms alto, mayor definicin de las sombras en
las es$uinas. Por lo tanto, teniendo ajustado el valor por defecto, es mejor
dejar $ue sea el refinamiento el $ue mejore el resultado.
Figura 18. 6istribuci0n de muestras.
[ 182 ] Tecnologas Libres para Sntesis de Imagen 3D
Para utili"ar el 4efinement tenemos un valor entre > y , tambin. )omo ya
se adelant antes al ver los pasos del render, este parmetro determina $u
cambios de lu" sern refinados. )uando se produce un cambio de lu" $ue
supera el valor establecido, como en los bordes de las sombras o los
artefactos debidos a bajo n&mero de muestras, se reali"a el refinado. #n
este caso, el pase se repite dos veces. *i establecemos el valor de
refinement a ,, estaremos desactivando el refinamiento, mientras $ue si lo
establecemos a >.>5, por ejemplo, el refinamiento ser e6haustivo.
Figura 19. 'rriba- 4ender ori#inal" sin refinamiento.
'bajo- 4ender con refinamiento a +"+7.
Iluminando con YafRay [ 183 ]
Figura 20. 6espus de incrementar la calidad a !i#!.
0emos conseuido $ue las sobras estn ms mati"adas, ms suavi"adas,
pero a&n $ueda alo de suciedad por la escena, aun$ue ya no est situada
en los bordes de las sombras. EIu podemos hacer para limpiar la
escenaF Pues se nos pueden ocurrir dos cosas- la primera es suavi"ar el
mapa de fotones y la otra es subir los samples 9&uality..
(o de suavi"ar el mapa de fotones tampoco nos servir de mucho, pues
pasado un cierto punto, o dicho de otro modo, suavi"ado en e6ceso,
aparecern li#!t lea)s3.
Custicas
0ay dos manera de conseuir custicas con yafray, desde una lu" puntual o
desde un objeto, cielo o fuente no puntual.
)uando las custicas las $ueremos conseuir desde una fuente puntual es
imprescindible $ue utilicemos una p!otonli#!t e6pl%cita.
*i las custicas las estamos trabajando con fuentes de lu" no puntuales no
es necesario utili"ar una p!otonli#!t, sino la forma de trabajo con fotones
$ue se ha descrito anteriormente con alunas mati"aciones. Grabajando en
[ 184 ] Tecnologas Libres para Sntesis de Imagen 3D
el mtodo full deber%amos conseuir las custicas sin nin&n tipo de
problema. *in embaro, es recomendable $ue las fuentes de lu" no sean
muy pe$ue8as. 'dems tendremos $ue viilar el parmetro %6ept! y
aumentarlo si fuera preciso.
Figura 21. %austicas desde una ventana.
YafRid: Sistema Grid para render
Jose Antonio Fernndez Sorribes
Carlos Gonzlez Morcillo
josean_fdez_sorribes@yahoo.es ::
El ltimo paso en el proceso para la generacion de im
genes y animaciones 3 por ordenador es el llamado
render. En esta fase se genera !na imagen bidimensional
"o !n conj!nto de imgenes en el caso de las animaciones# a
partir de la descripcin de !na escena 3. $ara la obtencin de
imgenes fotorrealistas se !tilizan algoritmos
comp!tacionalmente e%igentes como el trazado de rayos.
&
En los proyectos relacionados con la sntesis de imgenes, la etapa de
render se suele considerar el cuello de botella debido al tiempo necesario
para llevarla a cabo. Generalmente, el problema se resuelve usando granjas
de render que pertenecen a empresas del sector en las que los frames de
una animacin se distribuyen en distintos ordenadores. El presente
proyecto ofrece una alternativa para acometer el render tanto de
animaciones como de imagenes basada en computacin grid. ara ello se
!a desarrollado un sistema en el que tienen cabida ordenadores !eterog"#
neos tanto en soft$are como en !ard$are, distribuidos geogrficamente y
conectados al grid via internet.
Objetivos
El objetivo principal del presente proyecto es el de construir un prototipo
funcional de un sistema se render distribuido basado en computacin grid
optimi%ando el tiempo necesario para llevar a cabo el proceso. &dems de
este objetivo fundamental, e'iste una serie de objetivos complementarios
que son descritos a continuacin.
Arquitectura multiplataforma
Este sistema debe estar desarrollado sobre una arquitectura que
permita su funcionamiento en distintos sistemas operativos y con
independiente del !ard$are. Esto permitir tener un grid !eterog"neo en
todos los sentidos ya que cualquier ordenador con cone'in a internet es
un potencial proveedor de servicio. Es en este aspecto donde se aleja de los
clsicos clusters de ordenadores.
[ 185 ]
R
e
n
d
e
r
[ 186 ] Tecnologas Libres para Sntesis de Imagen 3D
Independencia del motor de render
&unque el sistema se orientar a su utili%acin con dos motores de
render en concreto ()afray y el que posee *lender +,-, el desarrollo se
debe reali%ar de forma que sea posible a.adir nuevos motores de render
sin e'cesivo esfuer%o.
Varias granularidadades
El sistema desarrollado debe permitir la distribucin del render tanto
de imgenes como de animaciones completas. /as unidades mnimas de
distribucin, denominadas unidades de trabajo, sern el fragmento de
frame y el frame respectivamente.
Interfaz web
/a mayor parte de la funcionalidad del sistema debe ser controlable via
$eb. Esto aporta una ventaja clave para ser realmente utili%ado por la
comunidad de usuarios ya que no es necesario instalar ning0n soft$are,
cualquier navegador es suficiente.
Grupos de Usuarios
1e debe poder permitir la creacin de grupos de usuarios (clientes y
proveedores- con el fin de ajustar qu" proveedores atienden a qu"
proyectos. 2ediante esta utilidad se pueden establecer subgrupos privados
de proveedores que proporcionan servicio a los proyectos de determinados
clientes.
Prioridades
1e establecer adems una sistema de prioridades de los proveedores y
los clientes con respecto a los grupos a los que pertenecen.
Diseo
3n adecuado dise.o del sistema permitir que en un futuro se a.adan
nuevas funcionalidades o se mejoren las e'istentes de una forma sencilla.
El uso de una divisin en capas y patrones de dise.o as como la e'istencia
de una completa documentacin facilitarn futuros desarrollos.
Usabilidad
4anto el soft$are del proveedor como el interfa% $eb que son los dos
medios principales a trav"s de los cuales el usuario interact0a con el
sistema deben ser fciles de usar. 1e tratar de reali%ar interfaces cmodas
e intuitivas.
YafRid: Sistema Grid para Render [ 187 ]
Figura 1. Ciclo de interaccin en un grid computacional.
Instalacin sencilla de proveedor
El soft$are necesario para que un usuario se convierta en proveedor y
pase a formar parte del grid debe ser sencillo de instalar y configurar en las
distintas plataformas disponibles. 1e intentar reducir el tiempo dedicado
a estas dos tareas al mnimo posible.
Inicio automtico
& fin de que colaborar con el grid requiera el menor esfuer%o posible,
se !a de configurar el soft$are de modo que al iniciar el sistema, se inicie
el soft$are para que el usuario no tenga que estar pendiente.
Ar!itect!ra
El tipo de grid ms adecuado para implementar la distribucin del render
de una escena entre m0ltiples mquinas es el grid computacional. Esto
se deduce de las caractersticas del render, caracteri%ado por ser un
proceso muy intensivo en t"rminos de consumo de 53.
5onceptualmente, los componentes mnimos de un grid computacional son
los siguientes6
Distribuidor! 5onstituye el corazn del grid. 1u principal tarea
es la de tomar los trabajos de la cola y distribuirlos entre los
proveedores de la forma ms conveniente posible.
Proveedor de servicio! Esta entidad es responsable del
procesamiento real de las peticiones de los clientes.
[ 188 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 2. Arquitectura general del sistema Yafrid.
"liente! 3n cliente es una entidad e'terna que no pertenece al
sistema en un sentido estricto. 1u papel en el funcionamiento del
grid pasa por enviar trabajos al sistema para ser reali%ados por los
proveedores. Estos trabajos son almacenados en una cola de la
cual el distribuidor ir elegiendo las pr'imas peticiones en ser
procesadas.
Estos componentes interact0an en un ciclo que se muestra
esquemticamente en la 7igura 8.
/a arquitectura desarrollada para soportar el sistema distribuido de render
)afrid se muestra en la 7igura 9. & continuacin se reali%a una
introduccin general a esta arquitectura cuyos componentes sern
ampliamente anali%ados en sus respectivas secciones.
Servidor Yafrid
El 1ervidor )afrid es el nodo fundamental alrededor del cual se
establece el sistema de render )afrid. 5ada uno de los proveedores se
conecta a este nodo para !acer que sus ciclos de 53 puedan ser usados
para renderi%ar las escenas enviadas al grid por los clientes.
El 1ervidor de )afrid se !a desarrollado sobre una arquitectura en la que,
de forma general, se pueden distinguir cuatro capas o niveles. Estas capas
son, de menor a mayor nivel de abstraccin, las siguientes6
YafRid: Sistema Grid para Render [ 189 ]
5apa de :ecursos.
5apa de 1ervicios.
5apa )afrid.
5apa de 3suario.
Es en la tercera de estas capas donde el verdadero 1ervidor )afrid
reside. El resto de capas se consideran capas de soporte pero son
igualmente indispensables para la implantacin del sistema en un entorno
real.
Capa de Rec!rsos
Es la capa que tiene el nivel de abstraccin ms bajo y la que posee una
relacin ms estrec!a con el sistema operativo. /a capa de recursos
engloba los siguientes componentes6
#istema de $ase de Datos! 7ormado por una base de datos en
la que estn contenidas las distintas tablas para el correcto
funcionamiento del sistema. E'isten numerosas tablas que se
pueden agrupar atendiendo a su utilidad. 2ientras que unas se
usan para mantener datos a partir de los cuales se obtendrn
estadsticas otras mantienen los datos que ayudan a la gestin de
usuarios, grupos, proyecto, etc. ;ay un tercer grupo que
podramos llamar internas o de operacin que mantienen datos
imprescindibles para el funcionamiento del sistema como por
ejemplo los datos de cone'in de los proveedores o las caractersti#
cas de sus sistemas. /os componentes de capas superiores acceden
a todos estos datosa trav"s de un servidor de base de datos. /a
actual implementacin de )afrid utili%a 2y1</.
#istema de Arc%ivos! En ocasiones es necesario acceder al
sistema de arc!ivos desde capas superiores. *sicamente, se
pueden distinguir dos tipos de directorios. or un lado, !ay
directorios que se usan para almacenar las unidades de trabajo
pertenecientes a un proyecto lan%ado. /os proveedores accedern
a este directorio va 174 para recibir los fic!eros fuente necesa#
rios para llevar a cabo el render. Estos directorios forman el
llamado ==/ de unidades de trabajo. /a otra categora la forman
aquellos directorios que contienen la informacin sobre los
usuarios y sus proyectos.
#istema de &ed! El mdulo dedicado a las comunicaciones que
pertenece a la capa principal oculta la utili%acin de los recursos de
red del ordenador por medio de un middle$are (la
implementacin actual utili%a >5E-.
[ 190 ] Tecnologas Libres para Sntesis de Imagen 3D
Capa de Servicios
*sicamente, esta capa contiene los diferentes servidores que permiten
a los mdulos de capas superiores acceder a los recursos que pertenecen a
la capa por debajo de "sta. En este nivel se pueden encontrar los siguiente
servidores6
#ervidor '((P! El mdulo )afrid#?E* se establece sobre este
servidor. 5omo el mdulo )afrid#?E* se !a confeccionado
usando pginas dinmicas escritas en un lenguaje de script
orientado al desarrollo $eb (en la implementacin actual se !a
utili%ado ;-, el servidor $eb debe tener soporte para este
lenguaje. 4ambi"n es necesario soporte para la composicin de
grficos y para acceso a base de datos.
#ervidor de bases de datos! Este servidor se usa por los
diferentes mdulos de )afrid para acceder a datos imprescindibles
para la operacin del sistema.
#ervidor #)(P! &ccedido por los distintos proveedores de
servicio para obtener los fic!eros fuente necesarios para llevar a
cabo los trabajos de render. 3na ve% que el render !aya finali%ado,
se usar el servidor 174 para enviar de vuelta al servidor las im#
genes resultantes.
Capa Yafrid
5onstituye la capa principal del servidor y est compuesta bsicamente
por dos mdulos diferentes que funcionan de forma independiente el uno
del otro. Estos mdulos se denominan )afrid#?E* y )afrid#5=:E.
*afrid+,-$
5onstituye el mdulo interactivo del servidor y !a sido desarrollado
como un conjunto de pginas dinmicas escritas usando ;42/ y un
lenguaje de script orientado a desarrollo $eb.
En t"rminos de acceso al sistema, se !an definido tres roles de usuario
que determinan los privilegios de acceso de los usuarios a la intefa% $eb de
)afrid. Estos roles junto con las funcionalidades a las que dan acceso son6
8. "liente. 4ener este rol permite a un usuario el envo de
trabajos de render al grid. 3n cliente es tambi"n capa% de crear
y gestionar grupos a los que otros clientes y proveedores se
pueden suscribir. 5uando un proyecto se crea, se le puede
asignar un grupo privado. En este caso, slo los proveedores
pertenecientes al mismo grupo pueden tomar parte en el
render del proyecto. &dems, se generan diversas estadsticas
con la informacin relativa a los proyectos del usuario.
YafRid: Sistema Grid para Render [ 191 ]
9. Administrador. Este usuario es imprescindible para la ope#
racin del sistema y tiene privilegios que permiten acceder a
informacin y funcionalidades crticas que incluyen6
&cceso a la informacin de los usuarios del sistema
(clientes y proveedores- y de los grupos de render
e'istentes.
5reacin de conjuntos de pruebas, un tipo especial de
proyectos compuestos que estn formados por m0ltiples
proyectos individuales con ligeras diferencias entre unos y
otros. Estos conjuntos de pruebas constituye una
!erramienta con la que estudiar el rendimiento del
sistema y obtener conclusiones a partir de los resultados.
Gestin de la parte no interactiva del sistema ()afrid#
5=:E-.
+. Proveeder. El proveedor es el usuario que tiene instalado el
soft$are necesario para formar parte del grid. /os proveedores
pueden acceder a su propia informacin y a las estadsticas de
uso.
/os grupos de render mencionados tienen una especial importancia en
un grid dedicado a tareas de render como es )afrid. 5on este sencillo
mecanismo, los proyectos pueden ser creados dentro de un grupo teniendo
la garanta de que los proveedores de ese grupo dedicarn sus esfuer%os al
render de ese proyecto y no al de otros.
*afrid+".&-
Esta es la parte no interactiva del servidor. Este mdulo !a sido
principalmente desarrollado usando yt!on aunque tambi"n e'isten
algunos scripts en *ourne s!ell para tareas de gestin. Est compuesto por
dos mdulos6
8. Distribuidor. 5onstituye la parte activa del mdulo. >mplementa
el algoritmo principal destinado a reali%ar una serie de tareas
clave, algunas de las cuales se introducen a continuacin.
Generacin de unidades de traba/o! 5onsiste bsica#
mente en lan%ar los proyectos activos que e'isten en el
sistema generando las unidades de trabajo que sean nece#
sarias. /as caractersticas de esta divisin dependen de los
parmetros que el usuario introdujo al activar el proyecto.
[ 192 ] Tecnologas Libres para Sntesis de Imagen 3D
Asignacin de las unidades de traba/o a los provee#
dores. Esta es la tarea principal del proceso de planifica#
cin. El algoritmo tiene que tener en cuenta factores como
el soft$are que es necesario para renderi%ar la escena, el
soft$are instalado en los proveedores y la versin
especfica de "ste o el grupo al que pertenecen proveedor y
proyecto. 5on toda esta informacin, y alguna ms, el
,istribuidor tiene que decidir qu" unidad ser enviada a
qu" proveedor.
"omposicin de resultados! 5on lso resultados gene#
rados por los diferentes proveedores, el distribuidor tiene
que componer el resultado final. Este proceso no es en
absoluto trivial, en especial, en los render de escenas
estticas. ,ebido al componente aleatorio de los m"todos
de render basados en t"cnicas de 2onte 5arlo (como el
at!tracing-, cada uno de los fragmentos puede presentar
peque.as diferencias cuando se renderi%an en distintas
mquinas. or esta ra%n, es necesario suavi%ar las
uniones entre fragmentos contiguos usando una
interpolacin lineal. En la 7igura + (a la i%quierda- se
pueden observar los problemas al unir los fragmentos sin
usar este mecanismo de suavi%ado.
Figura 3. >%qda6 Artefactos sin interpolacin entre fragmentos.
,rc!a6 Usando interpolacin lineal.
YafRid: Sistema Grid para Render [ 193 ]
)inalizacin de pro0ectos! /os resultados parciales
almacenados por el sistema durante el proceso son
eliminados del mismo.
"ontrol de timeout! 5uando el tiempo m'imo que est
establecido que se puede esperar por una unidad de
trabajo es sobrepasado, el sistema consulta el estado de la
unidad. 1e comprueba si la unidad enviada a un proveedor
est siendo a0n procesada o no. 1i una de las unidades se
pierde, "sta tiene que ser reactivada para ser enviada a
otro proveedor en un futuro.
9. Identificator. 5onstituye la parte pasiva del mdulo )afrid#
5=:E cuya misin consiste en mantenerse a la espera de
comunicaciones por parte de los proveedores. Este mdulo es
responsable del protocolo que se establece entre el servidor y los
proveedores para garanti%ar el correcto funcionamiento del
sistema. 1e encarga de todas las comunicaciones con los
proveedores e'cepto aquella en la que una unidad de trabajo es
enviada a un proveedor, que es reali%ada por el distribuidor.
/a primera ve% que un proveedor contacta con el servidor de )afrid, el
>dentificador genera un objeto, el controlador, y devuelve al proveedor un
pro'y que apunta a este objeto. 5ada proveedor posee su propio
controlador. /as siguientes interacciones entre el proveedor y el servidor se
reali%arn a trav"s del controlador del proveedor. &lgunas de estas
interacciones representan operaciones como la identificacin, la
suscripcin, la activacin, la descone'in, el aviso de que una unidad !a
sido terminada, etc"tera.
Capa de "s!ario
Esta capa no forma parte del sistema en un sentido estricto.
*sicamente la constituyen los distintos tipos de usuarios que pueden
acceder al sistema. 5omo ya se !a comentado, e'isten tres roles que
caracteri%an las tres categoras de usuarios de )afrid6
8. roveedor de servicio.
9. 5liente.
+. &dministrador de )afrid.
Estos usuarios pueden acceder a toda la informacin concerniente a su
relacin con el sistema ofrecida por el mdulo )afrid#?E* utili%ando
cualquier navegador (7igura @-.
[ 194 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 4. Interfaz de usuario Web Yafrid.
YafRid: Sistema Grid para Render [ 195 ]
Esta caracteri%acin de los distintos usuarios da lugar a algo similar a una
sociedad en la que cada usuario tiene un papel determinado en la misma.
En concreto, e'isten unos usuarios que proporcionan servicio a otros
mientras que unos terceros gestionan el sistema.
/as caractersticas de cada uno de estos roles y de su interaccin con el
sistema sern abordadas en pr'imas secciones.
#roveedor
El roveedor es el soft$are que deben instalar en sus sistemas los
usuarios que deseen prestar sus ciclos de 53 para que se usen en tareas
de render. Este soft$are puede funcionar tanto en modo de lnea de
comandos como por medio de una interfa% grfica. El primer paso que un
proveedor tiene que dar para formar parte del grid es conectarse al mismo.
3na ve% conectado y activado, el proveedor se pone a la espera de que el
servidor le enve una unidad de trabajo para ser procesada. 5uando finali%a
el render, el proveedor enva los resultados de vuelta al servidor via 174 e
informa a su controlador de que el trabajo est terminado.
Res!ltados
En diversas etapas del desarrollo del sistema se !an reali%ado pruebas con
los distintos prototipos que se iban obteniendo. 2ientras que en las
primeras fases se reali%aban pruebas sencillas en una sola mquina,
cuando el sistema estuvo mnimamente maduro se comen%aron a reali%ar
pruebas en un entorno distribuido y controlado. En esta seccin se
muestran algunos de los resultados obtenidos en estas pruebas as como
los resultado esperados seg0n los anlisis previos.
Res!ltados anal$ticos
ara el siguiente estudio se suponen cone'iones sim"tricas entre
1ervidor y roveedores y capacidades de clculo similares de los distintos
roveedores.
5omo vemos en la Ecuacin 8, al utili%ar )afrid para renderi%ar una escena
se a.aden dos factores al tiempo de render, 4
trans
y 4
A
, que no aparecen en
un sistema no distribuido y con un solo ordenador.
[ 196 ] Tecnologas Libres para Sntesis de Imagen 3D
El 4
trans
es el tiempo de transmisin y depende en parte de la velocidad de
la red que une 1ervidor y roveedores. 4
A
es un tiempo que el sistema
utili%a en operaciones tales como la unin de las unidades de trabajo y que
se puede acotar en funcion del tama.o del proyecto.
T
total
=T
render
T
trans
T
0
(8-
4anto en )afrid como en un sistema centrali%ado, el tiempo de render
responde a la Ecuacin 9 donde fps corresponde a los frames por segundo
de la animacin, t
al
es la duracin de la animacin y t
rf
es el tiempo medio
en renderi%ar un frame.
fps t
al
t
rf
En el caso de &nimaciones
T
render
B (9-
t
rf
En el caso de 7rames
El tiempo de transmisin se calcula mediante la Ecuacin + en la que n
r
es el n0mero de roveedores (o nodos de render-, 1
pet
es el tama.o en bytes
del fic!ero fuente que el 1ervidor enva a los roveedores, 1
res
es el tama.o
en bytes del fic!ero resultado que cada roveedor enva al 1ervidor, ?
i
es
el n0mero de unidades de trabajo reali%adas por el roveedor i y Ctrans
i
es
la velocidad de transmisin (anc!o de banda- entre 1ervidor y roveedores
en bytesDs. El n0mero de roveedores es lo que se denomina tama.o del
grid.
T
trans
=

i=0
n
r
S
pet
S
res
W
i

Vtrans
i
(+-
&s, en un sistema con un slo ordenador no aparecen los tiempos
e'tra 4
trans
y 4
A
que s aparecen en un sistema como )afrid. 1in embargo, el
proceso se desarrolla en paralelo en distintas mquinas con lo que, en un
caso ideal, el tiempo total se divide equitativamente entre los distintos
proveedores del sistema (Ecuacin @-.
T=
T
total
n
r
(@-
En el caso de que las redes que conectan los componentes del grid sean
de alta velocidad, el t"rmino 4
trans
se puede despreciar, con lo que la
ganancia sera del orden del n0mero de proveedores n
r
(n
r
sera el valor
m'imo de la ganancia-.
YafRid: Sistema Grid para Render [ 197 ]
En futuras mejoras del sistema se pretende optimi%ar la generacin de
unidades de trabajo en proyectos de render esttico de forma que "stas se
rendericen con distintas calidades. Esto permitira obtener ganancias por
encima de n
r
ya que la suma de los tiempos en renderi%ar cada uno de los
fragmentos sera menor que el tiempo en renderi%ar la imagen completa
debido a que algunos de los fragmentos se renderi%an con una calidad
menor que la inicial.
Res!ltados emp$ricos
5on el fin de sacar conclusiones sobre el comportamiento del sistema
en un entorno real, se ejecutaron varios conjuntos de pruebas (test sets-.
Estos conjuntos de pruebas se pueden generar desde el interfa% $eb con
permisos de administrador y consisten en una serie de proyectos de prueba
(tests-. 5ada uno de los conjuntos de pruebas posee sus propios
parmetros de calidad (como son por ejemplo el n0mero de muestras de
lu% o el n0mero de rayos por pi'el- y su propio m"todo de render. ,entro
de un mismo conjunto de pruebas, los distintos proyectos de prueba se
diferencian en el valor de los parmetros de calidad y en el tama.o de las
unidades de trabajo en las que se dividir el frame.
ara !acer que los datos que se obtuvieran pudieran ser comparables, se
opt por configurar un grid !omog"neo en el que todos los proveedores
tuvieran similares caractersticas. &s, los proyectos de prueba
mencionados se lan%aron en )afrid mientras el grid tena un tama.o de 8E
proveedores id"nticos en capacidades (procesador entium >C a 9.FA G;%,
9GE2b de :&2 y el mismo sistema operativo-. Este tama.o de grid se
mantuvo constante durante toda la prueba.
ara reali%ar las pruebas se seleccion una imagen bastante compleja. /a
escena contiene ms de 8AA.AAA caras, @ niveles de recursin en el
algoritmo de tra%ado de rayos en superficies especulares (el dragn- y E
niveles en superficies transparentes (el cristal de las copas-. &dems, se
lan%aron 9AA.AAA fotones para construir el mapa de fotones.
ara generar la imagen se utili%aron dos m"todos de render6
at!tracing con 2apeado de 7otones e >rradiance 5ac!e (7igura G
# >%quierda-.
4ra%ado de :ayos clsico con una implementacin de la t"cnica
&mbient =cclusion (7igura G # ,erec!a-.
&ntes de presentar los resultados obtenidos con )afrid (con un tama.o de
grid de 8E ordenadores-, en la 4abla 8 se muestran los tiempos de render
de cada conjunto de pruebas obtenidos usando un solo proveedor (render
local-.
[ 198 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 5. >%qda6 Pattracing ,rc!a6 Ambient !cclusion.
Mtodo Calidad Tiempo (hh:mm:ss)
at!tracing 89F 2uestras A96GE6GE
at!tracing G89 2uestras AH6+G69F
at!tracing 8A9@ 2uestras 8@69+6AH
at!tracing 9A@F 2uestras 9+68E689
:4 5lsico 8 :ayoD'el AA68H6GA
:4 5lsico F :ayosD'el AA69A6+I
:4 5lsico 8E :ayosD'el AA69E6@H
Tabla 1. "esultados obtenidos al renderizar en una sola m#quina.
5omo se puede observar en la 7igura E, el tiempo de render en el mejor
de los casos es ms de oc!o veces mejor utili%ando )afrid. En el peor de los
casos es tan slo dos veces mejor.
,el mismo modo, utili%ando el algoritmo de tra%ado de rayos de ?!itted
(7igura E-, el tiempo de render usando )afrid es, en el mejor de los casos,
siete veces menor y tan slo tres veces menor en el peor de los casos.
4ambi"n se lan% una sencilla animacin de prueba consistente en un
movimiento de cmara en torno a los objetos principales de la escena
usada en las pruebas anteriores. /a duracin de la animacin se estableci
en GA fotogramas y se utili% el algoritmo de tra%ado de rayos clsico.
4al y como se muestra en la 4abla 9 en los proyectos de animacin se
consiguen ganancias ms importantes que en el caso del render esttico.
/a ganancia est en este caso ms cercana al lmite terico que supona el
n0mero de roveedores. El tiempo obtenido con )afrid es alrededor de
catorce veces menor.
YafRid: Sistema Grid para Render [ 199 ]
Figura 6. >%qda6 "esultados empleando Pattracing.
,rc!a6 "esultados empleando "a$tracing Cl#sico.
Calidad Tiempo a!rid Tiempo 1 "C
8 :ayoD'el A86A+6GA 8@69A6GG
F :ayosD'el A868G689 8E6++68A
8E :ayosD'el A86996+E 9A6896A9
Tabla 2. "esultados obtenidos al renderizar una animacin.
Anlisis de los res!ltados
5on la observacin de los resultados empricos obtenidos en el
apartado anterior, se pone de manifiesto la importancia que tiene la
eleccin del tama.o de la unidad de trabajo en los proyectos de render
estticos. ara cada escena !ay un tama.o ptimo de unidad de trabajo
que permite obtener el mejor rendimiento posible.
En esta escena en concreto !ay algunas unidades de trabajo que tardan
muc!o ms que el resto (como las ca0sticas de las copas de cristal-. Esto
!ace que el proyecto se mantenga en proceso gran parte del tiempo con
0nicamente algunos fragmentos por terminar. Esto enmascara la ganancia
obtenida perjudicando el tiempo que se !a dedicado al proyecto.
En el m"todo usado por )afray para reali%ar el render (at!tracing-, los
fragmentos a calcular no son totalmente independientes unos de otros.
ara obtener las unidades de trabajo, cada roveedor tiene que calcular la
cac!" de irradiancia completa cada ve%. /a mejora aumentara muc!o si un
roveedor calculara la cac!" una ve% y se la enviara a los dems
roveedores (mecanismo a0n no implementado en )afrid-.
/a ganancia es mayor en el m"todo de tra%ado de rayos de ?!itted debido
a que no se !ace uso de la cac!" de irradiancia.
[ 200 ] Tecnologas Libres para Sntesis de Imagen 3D
&dems e'iste otro factor por el que la ganancia es menor que la terica.
& la !ora de dividir una imagen en fragmentos se a.ade un rea e'tra, la
banda de interpolacin, que servir para suavi%ar las uniones entre unos
fragmentos y otros. 3sar una banda de interpolacin menor #en los ejemplos
tiene una anc!ura de 8A p'eles# mejorara la ganancia.
5on respecto a las animaciones, la situacin es bastante distinta. /a ganancia
obtenida e'perimentalmente est ms cerca de ser proporcional al tama.o
del grid que en el caso del render de un solo frame, es decir, est ms cerca de
la ganancia terica. 3na de las causas es que, !abitualmente, el tiempo de
render es ms !omog"neo entre un frame y el siguiente que entre fragmentos
de un mismo frame. &dems, el tiempo invertido en unir los frames de una
animacin es menor que el invertido en unir e interpolar los fragmentos de
un frame. =tra ra%n importante es que no !ay que renderi%ar un rea e'tra
ya que no e'iste banda de interpolacin.
Concl!siones sobre el rendimiento del sistema
,e acuerdo con los resultados empricos e'aminados con anterioridad, el
sistema proporciona claramente un mejor rendimiento que en el caso del
render en un sistema con un slo procesador. Esto es as incluso cuando la
eleccin del tama.o de la unidad de trabajo es la peor de las posibles.
)afrid ofrece una significativamente mejor productividad (n0mero de
entidades renderi%adas, frames o fragmentos de un frame, por unidad de
tiempo- que un 0nico ordenador porque las distintas unidades de trabajo se
generan paralelamente en distintos proveedores. Esta productividad depende
en gran medida del tama.o de la unidad de trabajo y del tama.o del grid.
or otro lado, la latencia de cada una de las unidades (el tiempo que tardan
en ser generadas- se incrementa porque !ay que tener en cuenta factores que
no e'isten en el procesamiento no distribuido. En sistemas distribuidos de
cualquier tipo, adems del tiempo dedicado a renderi%ar la escena, el tiempo
de transmisin es tambi"n importante. Este tiempo de transferencia depende
de la cantidad de datos a transferir, de la velocidad de la cone'in y del
estado de la red.
El aumento de la latencia no es importante si obtenemos una mayor
productividad, que es lo que en realidad va a percibir el usuario final del
servicio.
or regla general, cuanto mayor sea el n0mero de fragmentos en los que se
divide una escena, mayor paralelismo se obtendr y menos tiempo se
necesitar para renderi%ar la imagen completa. 1i anali%amos el tema con
ms detalle, esto no es tan simple. 1i una escena se divide en fragmentos
demasiado peque.os es posible que el tiempo dedicado a la transmisin y al
procesamiento de los resultados sea mayor que el tiempo dedicado al render.
En este caso, los resultados obtenidos por un sistema distribuido de cualquier
tipo sern peores que los obtenidos en una sola mquina. 3na eleccin
incorrecta del tama.o de la unidad de trabajo puede perjudicar el
rendimiento del grid.
Estudio de Mtodos de Render
Carlos Gonzlez Morcillo
Carlos.Gonzalez@uclm.es ::
un alto nivel de abstraccin podemos ver el proceso de
Render como el encargado de convertir una descripcin
de una escena tridimensional en una imagen.
Prcticamente cualquier disciplina de aplicacin de los grficos
3D video!uegos" cine" visualizacin cient#fica" mar$eting" etc...%
necesitan obtener resultados visibles mediante un proceso de
Rendering.
&
La naturaleza interdisciplinar del proceso de Render se puede
comprobar en que multitud de disciplinas cientficas hacen uso de
algortimos y tcnicas relacionadas con este campo, como fsica, astrofsica,
biologa, astronoma, psicologa y estudio de la percepcin, matemticas
aplicadas...
En los primeros aos de estudio de este campo la inestigacin se centr
en cmo resoler problemas relacionados con la deteccin de superficies
isibles, sobreado bsico, etc... !eg"n se encontraban soluciones a estos
problemas, se continu el estudio en algoritmos de sntesis ms realistas
que simularan el comportamiento de la luz con la mayor fidelidad posible.
En la actualidad, el grado de realismo alcanzado es muy alto, siendo unas
de las principales reas de inestigacin en este campo las tcnicas de
optimizacin en tiempos de e#ecucin.
Sntesis de Imagen Fotorrealista
$odemos definir el proceso de sntesis de imagen fotorrealista como
aquel que persigue la creacin de imgenes sintticas que no se puedan
distinguir de aquellas captadas en el mundo real. En este campo de los
grficos por computador ha ocurrido una rpida eolucin. %esde el
algoritmo de !can&Line, propuesto por 'ou(night )'*+,-. que no
realizaba ninguna simulacin fsica de la luz, hasta los inicios del
fotorrealismo, en el artculo de /hitted )/012-. con la propuesta del
mtodo de trazado de rayos y posteriormente la introduccin de la
3adiosidad )4*325. hicieron uso de tcnicas habituales en el campo de la
ptica y el clculo de transferencia de calor.
[ 201 ]
R
e
n
d
e
r
[ 202 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 1. 1zqda6 Escena renderizada aplicando nicamente iluminacin directa
%rcha6 Escena renderizada con iluminacin global empleando mapeado de fotones; se
observa la caja de color azul pegada a la pared que no recibe iluminacin directa.
En la b"squeda de la generacin de imagen fotorrealista un punto clae
es la simulacin de la luz. La simulacin siguiendo las leyes fsicas de toda
la luz dispersa en un modelo 7% sinttico se denomina iluminacin
global 8global illumination9. El ob#etio de las tcnicas de iluminacin
global es simular todas las refle:iones de la luz y as obtener en cada punto
del modelo el alor de intensidad de luz que endr determinado por la
interaccin de la luz con el resto de elementos de la escena. %e esta forma,
el ob#etio del algoritmo de iluminacin global es calcular la interaccin de
todas las fuentes de luz con los elementos que forman la escena. Estas
tcnicas de iluminacin global son necesarias para calcular la iluminacin
indirecta; sin esta iluminacin el modelo parece artificial y sinttico 8er
<igura =9. E:isten arias tcnicas de iluminacin global, pero la mayora
estn basadas en el Trazado de Rayos 8o >uestreo de $untos9 o en
Radiosidad 8o Elementos <initos9 o en ambas a la ez 8tcnicas hbridas9.
?ada uno de estos mtodos tiene sus enta#as e inconenientes.
Tcnicas de Trazado de Rayos
>ediante la tcnica de trazados de rayos se trazan un alto n"mero de
rayos de luz a tras del modelo 7d que se pretende renderizar. En este
modelo, introducido en =@2- por /hitted )/012-., se trazan rayos desde
el obserador hacia las fuentes de luz. Algunas limitaciones importantes de
este tipo de trazado de rayos bsico es que no puede representar
profuncidad de campo, ca"sticas o iluminacin indirecta. $ara simular
estos efectos, es necesario e:tender el trazado de rayos empleando
mtodos de Monte Carlo )?**2B., que lancen rayos adicionales para
simular todos los caminos posibles de la luz. Los mtodos de >onte ?arlo
tienen un problema importante debido a su varianza, que se percibe
como ruido en las imgenes generadas.
Estudio de Mtodos de Render [ 203 ]
Figura 2: Ejemplo de uso de radiosidad. a) Malla original; en el techo de la habitacin
se observan las caras emisoras de luz. b) Malla de radiosidad resultado. c) Render de la
habitacin con los valores de radiosidad calculados en b).
La eliminacin de este ruido requiere aumentar el n"mero de
muestras. !e han realizado numerosos estudios sobre cmo distribuir los
rayos de forma que el ruido sea menor. Las alternatias que me#ores
resultados han dado hasta la fecha son los mtodos guiados de trazado de
rayos, cuyas propiedades de conergencia son mucho me#ores 8como por
e#emplo las tcnicas de irradiance cach )/A3@C., que almacenan y
reutilizan la iluminacin indirecta interpolando los alores desconocidos9.
En este tipo de tcnicas la geometra se trata como una Dca#a negraE. Los
rayos se trazan en la escena y obtienen un alor de iluminacin. Esta es
una importante enta#a en escenas con una geometra comple#a, ya que las
tcnicas de >uestreo de $untos slo tienen que gestionar la comple#idad
de la iluminacin, y no de la geometra. !in embargo, esta independencia
de la geometra tiene inconenientes, como la necesidad de un alto n"mero
de muestras para unos resultados aceptables.
Tcnicas de Radiosidad
En este tipo de tcnicas se calcula el intercambio de luz entre
superficies. Esto se consigue subdiidiendo el modelo en pequeas
unidades denominadas DparchesE, que sern la base de la distribucin de
luz final. 1nicialmente los modelos de radiosidad calculaban las
interacciones de luz entre superficies difusas 8aquellas que refle#an la luz
igual en todas las direcciones9 )?*02F. )4*325., aunque e:isten modelos
ms aanzados que tienen en cuenta modelos de refle:in ms comple#os.
[ 204 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 3: Esquema de la matriz de radiosidad. En cada posicin de la matriz se calcula
el factor de forma. !a diagonal principal de la matriz no es calculada.
El modelo bsico de radiosidad calcula una solucin independiente
del punto de vista. !in embargo, el clculo de la solucin es muy costoso
en tiempo y en espacio de almacenamiento. Go obstante, cuando la
iluminacin ha sido calculada, puede utilizarse para renderizar la escena
desde diferentes ngulos, lo que hace que este tipo de soluciones se utilicen
en isitas interactias y ideo#uegos en primera persona actuales.
En el modelo de radiosidad, cada superficie tiene asociados dos alores6 la
intensidad luminosa que recibe, y la cantidad de energa que emite
8energa 3adiante9. En este algoritmo se calcula la interaccin de energa
desde cada superficie hacia el resto. !i tenemos n superficies, la
comple#idad del algoritmo ser "n#). El alor matemtico que calcula la
relacin geomtrica entre superficies se denomina Factor de Forma.
!er necesario calcular n# factores de forma ya que no cumple la
propiedad conmutatia debido a que se tiene en cuenta la relacin de rea
entre superficies. La matriz que contiene los factores de forma
relacionando todas las superficies se denomina Matriz de Radiosidad.
?ada elemento de esta matriz contiene un factor de forma para la
interaccin desde la superficie inde:ada por la columna hacia la superficie
inde:ada por la fila 8er figura 79.
En general, el clculo de la radiosidad es eficiente para el clculo de
distribuciones de luz en modelos simples con materiales difusos, pero
resulta muy costoso para modelos comple#os 8debido a que se calculan los
1
2

!
Estudio de Mtodos de Render [ 205 ]
alores de energa para cada parche del modelo9 o con materiales no
difusos. Adems, la solucin del algoritmo se muestra como una nuea
malla poligonal que tiende a desenfocar los lmites de las sombras. Esta
malla poligonal puede ser inmane#able en comple#idad si la representacin
original no se realiza con cuidado o si el modelo es muy grande, por lo que
este tipo de tcnicas no se utilizan en la prctica con modelos comple#os.
Tcnicas Mi"tas
La radiosidad es buena para simular las refle:iones difusas, mientras
que el trazado de rayos da me#ores resultados en refle:in especular. %e
este modo podemos utilizar trazado de rayos para el clculo de las
refle:iones especulares y radiosidad para superficies con refle:in difusa.
E:isten arias apro:imaciones en las que se utiliza radiosidad para el
cculo de iluminacin indirecta, ya que las tcnicas de >onte ?arlo
requieren un alto n"mero de muestras para que no se perciba el ruido. El
uso de algoritmos basados en radiosidad tienen un importante
inconeniente y es que limitan la comple#idad de los modelos que pueden
ser renderizados. +na apro:imacin a estos problemas se basa en
simplificar la malla origen para utilizarla "nicamente en el clculo de la
iluminacin indirecta cuyos cambios suelen ser suaes y no requieren un
alto niel de detalle en la superficie.
El mapeado de fotones )HEG-=. se basa en una apro:imacin
difentente, ya que separa la informacin de la iluminacin de la geometra,
almacenndola en una estructura de datos diferente 8el mapa de fotones9.
Este mapa se construye trazando fotones desde las fuentes de luz, y guarda
informacin sobre los impactos de los fotones, que se utilizar para
renderizar la escena de una forma eficiente, tal y como se utilizaba la
informacin sobre la iluminacin en la radiosidad. Este desacople de la
geometra permite simplificar la representacin y utilizarla en modelos de
cualquier niel de comple#idad.
Estudio de Mtodos de Renderizado
A continuacin amos a describir algunos mtodos de renderizado
ampliamente utilizados en la actualidad. Gos centraremos en los mtodos
de renderizado $:el a $:el 8frente a las alternatias basadas en
primitias, que concluyen en una etapa de rasterizacin9.
[ 206 ] Tecnologas Libres para Sntesis de Imagen 3D
$odemos considerar que todas las alternatias de renderizado pretenden
dar solucin a la ecuacin de renderizado, propuesta en =@2B por Ia#iya
)IAH2B.6
L
o
( x ,

w)=L
e
( x ,

w)+

D
f
r
( x ,

w' ,

w) L
i
( x ,

w' )(

w'

n) d

w'
Jue puede leerse como6 Ddada una posicin $ y direccin
w determinada,
el alor de iluminacin saliente !
o
es el resultado de sumar la iluminacin
emitida !
e
y la luz refle#ada. La luz refle#ada 8el segundo trmino de la
suma de la ecuacin anterior9 iene dado por la suma de la luz entrante !
i
desde todas las direcciones, multiplicado por la refle:in de la superficie y
el ngulo de incidencia.
$ara e:presar la interaccin de la luz en cada superficie se utiliza la funcin
de distribucin de reflectancia bidireccional 8'3%<9, que correspondera
con el trmino f
r
de la e:presin anterior y es particular de cada superficie.
En la medida de lo posible trataremos de responder a las siguientes
preguntas sobre cada mtodo6 KEn qu consisteL, KJuin lo propusoL,
K?undo se descubriL, K$or qu surgiL, K?ual es la descripcin de su
algoritmoL, as como una enumeracin de enta#as y desenta#as frente a
otros mtodos de render.
Scanline
Es un mtodo propuesto en =@,- por 'ou(night )'*+,-., como algoritmo
para la representacin punto a punto de una imagen. ?uando se calculan
los p:eles que forman cada lnea de la imagen, se contin"a con la
siguiente.
Descripcin del Algoritmo
para cada pxel de la imagen
linea := trazar una lnea desde la cmara al pxel
color = scanline(linea)
scanline(linea)
punto := encontrar el punto de interseccin ms cercano
color := color de fondo
para cada fuente de luz
color := color + iluminacion directa
devolver(color)
enta!as
Es un mtodo muy rpido, que permite simular cualquier tipo de
sombreado, funciona correctamente con te:turas.
Estudio de Mtodos de Render [ 207 ]
Desventa!as
Go permite simular de forma realista refle:iones y refracciones de la
luz. En el caso de las refle:iones pueden simularse mediante mapas de
entorno 8que dan una apro:imacin rpida, pero no fsicamente correcta9.
Las refracciones no son correctas, aunque en cuerpos planos pueden ser
medianamente realistas simulndolas con transparencia a niel de
polgono.
Raytracing
El mtodo de trazado de rayos es una propuesta elegante y recursia
que permite calcular de forma sencilla superficies con refle#os y
transparencia. <ue propuesto en =@2- por /hitted )/012-..
La idea base en 3aytracing es la de trazar rayos desde el obserador a las
fuentes de luz. En realidad, son las fuentes de luz las que emiten fotones
que rebotan en la escena y llegan a los o#os del obserador. !in embargo,
slo una pequesima fraccin de los fotones llegan a este destino, por lo
que el clculo en esta forma directa resulta demasiado costosa. Los rayos
que se emiten a la escena son ealuados respecto de su isibilidad trazando
nueos rayos desde los puntos de interseccin 8rayos de sombra9.
Descripcin del Algoritmo
para cada pxel de la imagen
rayo := trazar un rayo desde la cmara al pxel
color = raytracing(rayo)
raytracing(rayo)
punto := encontrar el punto de interseccin ms cercano
color := color de fondo
para cada fuente de luz
rayo_sombra := trazar un rayo desde (punto) asta la
fuente de luz
si el rayo no coca con ning!n ob"eto
color := color + iluminacion directa
si el material tiene propiedad de reflexin
color := color + raytracing(rayo_refle"ado)
si el material tiene propiedad de refraccin
color := color + raytracing(rayo_transmitido)
sino
color := negro
devolver (color)
E:isten mtodos de aceleracin del algoritmo de raytracing, como el
uso de rboles octales, grids #errquicos, rboles '!$, etc... Adems, se
pueden calcular los alores de p:eles cercanos y si la ariacin es pequea
interpolar los alores 8irradiance cache9.
[ 208 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 4. %asos para el c&lculo de 'mbient "cclusion. !a figura de la izquierda
representa el primer paso del m(todo) donde se calcula el punto %. El valor de ocultacin
*%) en la figura derecha ser& proporcional al nmero de ra+os que alcanzan el ,cielo,)
teniendo en cuenta la distancia m&$ima entre % + el primer objeto de interseccin. En el
caso de la figura de la derecha ser& de -./ de los ra+os.
enta!as
$ermite simular refle:iones de espe#o y materiales transparentes
8refraccin de la luz9.
Desventa!as
Go es un mtodo de iluminacin global. Go permite la simulacin de
iluminacin indirecta ni sombras difusas. !lo funciona perfectamente en
superficies con brillo especular donde la luz entrante tenga una "nica
direccin de refle:in.
Go permite simular profundidad de campo ni motion blur 8aunque pueden
simularse en postproduccin9.
#m$ient %cclusion
El empleo del trmino de luz ambiente iene aplicndose desde el
inicio de las tcnicas de sntesis de imagen 7%. La tcnica de Ambient
*cclusion es un caso particular del uso de pruebas de oclusin en entornos
con iluminacin local para determinar los efectos difusos de iluminacin.
<ueron introducidos inicialmente por Mhuro en =@@2 como alternatia a
las tcnicas de radiosidad para aplicaciones interactias 8ideo#uegos9, por
su ba#o coste computacional )M0+@2.. $odemos definir la ocultacin de un
punto de una superficie como6
W ( P)=
1
n

oD
j(d ( P , o)) cos0d o
'b!eto
Cmara
(uperficie
'b!eto
Cmara
(uperficie
Estudio de Mtodos de Render [ 209 ]
*bteniendo un ador de ocultacin *%) entre - y =, siendo d%)) la
distancia entre P ) la primera interseccin con alg*n ob!eto en la direccin
de " (d(P,)) es una funcin con valores entre + ) , que nos indica la
magnitud de iluminacin ambiental que viene en la direccin de " ) es
el ngulo formado entre la normal en P ) la direccin de .
Estas tcnicas de ocultacin 8obscurances9 se desacoplan totalmente de la
fase de iluminacin local, teniendo lugar en una segunda fase de
iluminacin secundaria difusa. !e emplea un alor de distancia para
limitar la ocultacin "nicamente a polgonos cercanos a la zona a sombrear
mediante una funcin. !i la funcin toma como alor - de ocultacin
aquellos puntos que no superan un umbral y un alor de = si estn por
encima del umbral, la tcnica de ocultacin se denomina Ambient
*cclusion. E:isten multitud de funciones e:ponenciales que se utilizan
para lograr estos efectos.
enta!as
Es al menos un orden de magnitud ms rpido que el $athNracing. En
muchos casos la simulacin obtenida es suficientemente buena y con
menos ruido.
Desventa!as
Go es un mtodo de iluminacin global, aunque ofrece apro:imaciones
bastante buenas. Go permite la simulacin de ca"sticas, y puede resultar
costoso si aumentamos el n"mero de muestras 8para eliminar ruido9. El
tiempo de render aumenta muy rpido con el n"mero de samples de
Antialiasing.
Radiosidad
En este tipo de tcnicas se calcula el intercambio de luz entre
superficies. 1nicialmente fue propuesto por 4oral en =@25 )4*325.. El
clculo del intercambio de luz entre superficies se hace mediante el factor
de forma, que se calcula mediante la siguiente e:presin6
F
i , j
=
1
A
i

A
i

A
j
cos0
i
cos0
j
nr
H
ij
dA
j
dA
i
!iendo 0
i)j
el factor de forma de la superficie i a la superficie j, cos
i
cos
j
es el ngulo entre las normales de los planos de cada parc-e esto nos
asegura que una superficie que est. en frente de otra que emite luz
recibir ms luz que una tercera superficie que est. inclinada a .sta%. r
nos mide la distancia entre los parc-es ) H
ij
es el factor de visibilidad"
entre + ) ," que indica cunta superficie de j ve la superficie i debido a la
oclusin de otras superficies. /inalmente dA
x
es el rea de la superficie x.
[ 210 ] Tecnologas Libres para Sntesis de Imagen 3D
enta!as
*frecen buenos resultados con superficies difusas. Al ofrecer una
solucin independiente del punto de ista, pueden emplearse para
renderizar animaciones incluso de forma interactia.
Desventa!as
Limitan la comple#idad de la geometra con la que podemos traba#ar.
Niende a suaizar las zonas de penumbra, lo cual no siempre es deseable.
El tiempo de clculo de la matriz de radiosidad puede ser muy alto, incluso
traba#ando con tcnicas incrementales. Go funcionan bien con sombreado
especular.
&at'tracing
Es una e:tensin del algoritmo de 3aytracing clsico que permite
calcular una solucin de iluminacin global completa. <ue formulado por
Ia#iya en =@2B como solucin a la ecuacin de renderizado 8en el mismo
artculo donde era propuesta9 )IAH2B., basndose en las ideas de ?oo( en
su artculo de =@25 )?**25..
El $athtracing se basa en la idea de calcular todos los posibles caminos de
la luz en sus rebotes en superficies que no tengan refle#o especular. Estas
superficies requieren la ealuacin de integrales comple#as. Estas
integrales se solucionan trazando rayos DaleatoriosE dentro del dominio de
la integral para estimar su alor 8empleando integracin de Monte 1arlo9.
3ealizando la media de un alto n"mero de muestras por cada p:el
podemos obtener una estimacin del alor de la integral para ese p:el.
+n aspecto importante del $athtracing es que slo utiliza un rayo refle#ado
para estimar la iluminacin indirecta. Es decir, cuando un rayo choca
sobre una superficie difusa, slo se realizar una llamada con un nueo
rayo de clculo de la iluminacin indirecta, cuya direccin ser aleatoria
dentro del dominio de definicin de la superficie. !e podran tener en
cuenta m"ltiples rayos, pero al ser un mtodo recursio, el n"mero de
rayos crecera de forma e:ponencial si estos nueos rayos chocaran con
superficies difusas...
Estudio de Mtodos de Render [ 211 ]
Descripcin del Algoritmo
para cada pxel de la imagen
color := #
para cada muestra del pxel
rayo := trazar un rayo desde la cmara a una posicin
aleatoria del pxel
color := color + pattracing(rayo)
color_pixel := color $ numero_muestras
pattracing(rayo)
punto := encontrar el punto de interseccin ms cercano
color := color de fondo
para cada fuente de luz
comprobar visibilidad de una posicin aleatoria de la
fuente de luz
si es visible
color := color + iluminacion directa
color := color + pattracing(un rayo refle"ado
aleatorio)
sino
color := negro
devolver (color)
enta!as
!i la iluminacin ara poco 8por e#emplo, una escena e:terior donde el
cielo es totalmente isible9, ofrece resultados sin ruido con pocas muestras.
Desventa!as
$ara que no se perciba ruido en la imagen final hay que aumentar el
n"mero de muestras por p:el, sobre todo en escenas donde hay
ariaciones muy fuertes en las fuentes de luz 8fuentes pequeas y muy
potentes, o imgenes 0%31 con zonas de iluminacin muy concentradas9.
%ebido a las propiedades de integracin de >onte ?arlo, el error
disminuye proporcionalmente a
1/
.
N
, siendo 2 el n"mero de muestras.
Esto significa que para eliminar la mitad de ruido tenemos que utilizar
cuatro eces ms muestras.
"rradiance Cac#e
Es un mtodo que eita el clculo de la iluminacin global en cada
punto del modelo. !e seleccionan algunos p:eles y se interpolan los
alores intermedios. Esto hace que se suaice el ruido 8aunque se obtiene
ruido de ba#a frecuencia9. <unciona bien con imgenes estticas, pero se
percibe ruido en animaciones.
[ 212 ] Tecnologas Libres para Sntesis de Imagen 3D
&'oton Ma((ing
Es un mtodo que desacopla la representacin de la iluminacin de la
geometra. !e realiza en dos pasos, primero se construye la estructura del
mapa de fotones 8trazado de fotones9, desde las fuentes de luz al modelo.
En una segunda estapa de render se utiliza la informacin del mapa de
fotones para realizar el renderizado de manera ms eficiente.
Este mtodo fue propuesto por Hensen en =@@B )HEG@B.. En una primera
etapa un eleado n"mero de fotones son lanzados desde las fuentes de luz,
diidiendo la energa de las fuentes de luz entre los fotones emitidos 8cada
fotn transporta una fraccin de la energa de la fuente de luz9.
?uando se emite un fotn, ste es trazado a tras de la escena de igual
forma que se lanzan los rayos en raytracing, e:cepto por el hecho de que
los fotones propagan <lu: en ez de radiancia. ?uando un fotn choca con
un ob#eto puede ser refle#ado, transmitido o absorbido 8seg"n las
propiedades del material y un factor aleatorio dentro del dominio del
material9.
Los fotones son almacenados cuando impactan sobre superficies no
especulares 8para refle#os se utiliza raytracing clsico9. Este
almacenamiento se realiza sobre una estructura de datos que est
desacoplada de la geometra del modelo, y se utilizar en la etapa de render
para obtener informacin sobre qu impactos de fotones estn ms cerca
del punto del que queremos calcular su alor de iluminacin. $ara que la
b"squeda sea rpida se suelen emplear (d&trees 8debido a que la
distribucin de fotones no es uniforme9, cuyo tiempo medio de b"squeda
con n fotones es de "log n), y "n) en el peor de los casos.
&at'tracing )idireccional
<ue introducido por Lafortune y /illems en =@@7 )LA<@7.. !e plante
como una e:tensin del $athtracing 8en realidad el $athtracing puede
considerarse como un caso particular de esta tcnica9 donde adems se
calculan los caminos desde las fuentes de luz. Esto aproecha la idea de
que hay ciertos caminos que son ms fciles de trazar desde las fuentes de
luz, como por e#emplo el caso de las ca"sticas. La probabilidad de que un
rayo refle#ado en una superficie atraiese un ob#eto transparente y llegue a
la fuente de luz es muy pequea comparada con el camino inerso 8desde
la fuente de luz a la superficie9.
En el $athtracing bidireccional se trazan dos caminos en la escena, uno que
comienza en cada fuente de luz y otro en el punto de ista. A continuacin
se combina la informacin de los dos caminos conectando los rtices de
cada camino, y calculando la contribucin indiidual de cada rtice del
camino de la luz al camino trazado desde la cmara.
Estudio de Mtodos de Render [ 213 ]
<inalmente la imagen se calcula como en pathtracing, realizando un
n"mero de muestras por p:el.
enta!as
!e utiliza un n"mero menor de muestras por p:el que en $athtracing.
!e comporta mucho me#or con los casos e:tremos donde $athtracing sufre
de mucho ruido 8como fuentes de iluminacin pequeas con mucha
energa, por e#emplo, una pequea entana por donde entra la luz a una
habitacin9. $ara escenas de e:teriores o con una iluminacin ms
homognea, es me#or utilizar pathtracing.
Las ca"sticas se calculan perfectamente 8en pathtracing habra que recurrir
a su combinacin con $hoton >apping9.
Desventa!as
Aunque el n"mero de muestras es menor, el tiempo de clculo de la
escena suele ser mayor, debido a que el coste de cada muestra es mayor
que en pathtracing y se requiere el tiempo de combinacin de los caminos.
1gual que en pathtracing, la imagen tiene ruido a menos que se utilice un
alto n"mero de muestras.
Trans(orte de *uz de Metr+(olis
$ropuesto en =@@, por Oeach y 4uibas )OEA@,., utiliza la informacin
sobre el espacio en la escena de una forma ms eficiente. Es un mtodo
diferente a $athtracing, ya que no realiza muestras aleatorias para resoler
el alor de la integral, sino que genera una distribucin de muestras que es
proporcional a la funcin que queremos resoler 8esto es, la densidad de
rayos es proporcional a la radiancia, concentrando rayos en las regiones
ms brillantes de la imagen9.
Este mtodo comienza con una distribucin de muestras aleatorias
8usando pathtracing bidireccional9 de todas las fuentes de luz de la escena.
Estos caminos son clonados aleatoriamente y mutados. !i el path mutado
es inlido 8por e#emplo, atraiesa un muro9, entonces se descarta, y el
camino original se utilizar de nueo para obtener una nuea mutacin. !i
el camino es lido, entonces ser aceptado con una determinada
probabilidad.
enta!as
Este mtodo funciona bien para simular configuraciones de luz que son
difciles para otros mtodos 8por e#emplo, un agu#ero abierto en una pared
donde e:iste una pequea luz9. El mtodo de >etrpolis encuentra el
camino a tras de mutaciones del camino, siendo mucho ms eficiente
que $athtracing o $athtracing bidireccional.
[ 214 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 5. Escena renderizada con diferentes m(todos de render.
Desventa!as
En escenas 3normales4, no e:iste ganancia frente a otras tcnicas como
$athtracing o $athtracing 'idireccional.
Com(araci+n de tiem(os en una escena
En la siguiente tabla se muestran los tiempos de render de la escena de
la figura F. La resolucin de todos los e#emplos es de B5-:52- p:eles y
oersampling de 2 muestras por p:el. La escena est formada por F=-=B
polgonos. El modelo del dragn tiene propiedad de refle:in 8C nieles de
recursin9, y las copas de refle:in 87 nieles9 y refraccin 85 nieles9.
Estudio de Mtodos de Render [ 215 ]
La imagen ha sido renderizada en un ?entrino C40z, con = 4' de 3A>
ba#o %ebian 4G+PLinu:.
Mtodo &armetros Tiem(o
Scan*ine
,ota- En la imagen de la figura no se ha
variado la roiedad del ma!erial ara "ue se
simule la !ransaren#ia #on $!rans, ero se
odr%a reali&ar #on un !iemo de render similar'
0 (eg.
Raytracing
,ota- (odos los ejemlos se han renderi&ado
#on )versamling de nivel *' +a varia#i,n del
nivel de oversamling en una misma
#onfigura#i,n de resolu#i,n del )#!ree (-./)
uede suoner las siguien!es diferen#ias de
!iemo0
## ./0- ,+11 ## .10- 2311 ## .20-
4211
## .110- ,+511 ## .130- ,2311
6esol. 'ctree 32%: ,:32.
6esol. 'ctree ,57%: ,:,3.
6esol. 'ctree 503%: ,:,2.
6esol. 'ctree 0,5%: ,:53.
Raytracing 4
#m$ient
%cclusion
1/ Muestras 8 5istancia para aplicar &': ,+
Energa glo$al #%- 5.+
,ota- +a varia#i,n en el n1mero de mues!ras
es de!erminan!e en el !iemo de render' 2on
una resolu#i,n del )#!ree de 3-*, los !iemos
de render son0
2 M- ,5911 1 M- 5,711 2 M- 25311 1/ M- 3,0 11
6esol. 'ctree 32%: ,2:+5.
6esol. 'ctree ,57%: ,+:,0.
6esol. 'ctree 503%: ,,:55.
6esol. 'ctree 0,5%: ,3:,4.
&at'tracing
.S6ydome0
Profundidad ra)o m:ima desde la cmara: 9
;mit Po<er: ,.0
&uto&&
,ota- +a diferen#ia se es!a4le#e en el n1mero
de samles de la Hemiligh!'
=o< ,3 (amples%: 9:03.
>edium 52 (amples%: ,+:53.
?ig- 33 (amples%: ,3:57.
?ig-er 32 (amples%: 54:34.
@est ,57 (amples: 39:+0.
&at'tracing
.Full0 4
Irradiance
Cac'e
(in refinamiento de sombras.
(in mapeado de fotones.
Calidad de (ombras: +.9
;mit Po<er: ,.0
GA Po<er: +.0
,ota- +a diferen#ia se es!a4le#e en el n1mero
de samles de la Pa!hligh!'
=o< ,57 (amples%: 59:2,.
>edium 503 (amp.%: 2+:3+.
?ig- 0,5 (amples%: 03:,5.
?ig-er ,+52 (amples%:
@est 5+27 (amples%:
[ 216 ] Tecnologas Libres para Sntesis de Imagen 3D
)i$liogra7a
)'*+,-. 'ou(night, /. H. , ,' procedure for generation of three5
dimensional half5tone computer graphics,,
?ommunications of the A?> 8=@,-9
)?*02F. ?ohen, >. <., 4reenberg %. $. , ,6he 7emi51ube8 ' radiosit+
solution for comple$ environments,, !iggraph 2F
8$roceedings9 8=@2F9
)4*325. 4oral, ?. Norrance, I.E., 4reenberg, %.$. 'attaile, '. ,
,Modelling the interaction of light bet9een diffuse surfaces,,
$roceedings of !1443A$0 8=@259
)HEG-=. Hensen 0./. , ,Realistic :mage ;+nthesis <sing %hoton
Mapping,, , A.I.$eters, 8C--=9
)HEG@B. Hensen, 0. /. , ,=lobal :llumination using photon maps,,
Eurographics 3endering /or(shop 8=@@B9
)IAH2B. Ia#iya, H.N. , ,6he rendering equation,, ?omputer 4raphics
8=@2B9
)?**2B. 3obert L. ?oo( , ,;tochastic sampling in computer
graphics,, A?> Nransactions on 4raphics 8=@2B9
)OEA@,. Oeach, E., 4uibas, L.H. , ,Metropolis !ight 6ransport,,
$roceedings of !1443A$0 Q@, 8=@@,9
)/A3@C. /ard, 4. H., 0ec(bert, $. , ,:rradiance =radients,, Nhird
Eurographics /or(shop on 3endering 8=@@C9
)/012-. /hitted, N. , ,'n improved illumination model for shaded
displa+,, ?ommunications of the A?> 8=@2-9
)M0+@2. Mhu(o, !., 1ones, A., Ironin, 4. , ,'n ambient light
illumination model,, $roc. of Eurographics 3endering
/or(shop Q@2 8=@@29
)LA<@7. Lafortune, E.$., /illems, R.%. ,>idirectional %ath tracing,,
?ompugraphics 8=@@79
)?**25. ?oo(, 3.L, $orter, N., ?arpenter, L., ,?istributed ra+
tracing,, ?omputer 4raphics 8=@259
Fotograma de la Pelcula de Animacin
Elephants Dream realizada con Blender
Copyright 2006, Blender Foundation
Netherland !edia Art "ntitute
###$elephantdream$org
Seccin Seccin V V
Desarrollo Desarrollo
def trazar (r, prof):
c = color()
for obj in lObjetos: # Probamos con todos los objetos
obj.intersecta(r)
if (r.objInter != None):
matIndex = r.objInter.material
Interseccion = r.ori!en " (r.direccion # r.disInter)
Incidente = Interseccion $ r.ori!en
%&eltaOri!en = r.direccion # $'
%&eltaOri!en.normalizar()
Normal = r.objInter.!etNormal(Interseccion)
for l&z in l(&ces:
if (l&z.tipo == )ambiental)):
c "= l&z.color
elif (l&z.tipo == )p&nt&al)):
dir(&z = l&z.posicion $ Interseccion
dir(&z.normalizar()
ra*o(&z = ra*o(Interseccion, dir(&z)
sombra = calc&la+ombra (ra*o(&z, r.objInter)
dir(&z = l&z.posicion $ Interseccion # +in normalizar
dir(&z ,= dir(&z.mod&lo() # -plicamos el fall$off
N( = Normal.p.scalar(dir(&z)
if (N( / 0):
if (l1ateriales2matIndex3.c4if&so / 0): # $$$$$$$ 4if&so
color4if&so = l&z.color # l1ateriales2matIndex3.c4if&so # N(
color4if&so.r #= l1ateriales2matIndex3.color.r # sombra
color4if&so.! #= l1ateriales2matIndex3.color.! # sombra
color4if&so.b #= l1ateriales2matIndex3.color.b # sombra
c "= color4if&so
if (l1ateriales2matIndex3.c.spec&lar / 0): # $$$$$ .spec&lar
5 = (Normal # 6 # N() $ dir(&z
espec = %&eltaOri!en.p.scalar(5)
if (espec / 0):
espec = l1ateriales2matIndex3.c.spec&lar # 7
po8(espec, l1ateriales2matIndex3.d.spec&lar)
color.spec&lar = l&z.color # espec # sombra
c "= color.spec&lar
if (prof 9 prof:razado):
if (l1ateriales2matIndex3.c5eflexion / 0): # $$$$$$$$ 5eflexion
: = %&eltaOri!en.p.scalar(Normal)
if (:/0):
4ir5ef = (Normal # 6 # :) $ %&eltaOri!en
OffsetInter = Interseccion " 4ir5ef # P.;<.NO
ra*o5ef = ra*o(OffsetInter, 4ir5ef)
c "= trazar (ra*o5ef, prof"') # l1ateriales2matIndex3.c5eflexion
if (l1ateriales2matIndex3.c:ransmitiidad / 0): # $$$$ 5efraccion
5N = Normal.p.scalar(Incidente # $')
Incidente.normalizar()
if (Normal.p.scalar(Incidente) / 0):
Normal = Normal # $'
5N = $5N
n' = l1ateriales2matIndex3.i5efraccion
n6 = '
else:
n6 = l1ateriales2matIndex3.i5efraccion
n' = '
if (n'!=0 and n6!=0):
par=s>rt = s>rt (' $ (n'#n',n6#n6)#('$5N#5N))
4ir5efrac = Incidente " (Normal # 5N) # (n',n6) $ (Normal # par=s>rt)
OffsetInter = Interseccion " 4ir5efrac # P.;<.NO
ra*o5efrac = ra*o(OffsetInter, 4ir5efrac)
c "= trazar (ra*o5efrac, prof"') # l1ateriales2matIndex3.c:ransmitiidad
ret&rn c
The soul of the

m
o
n
k
e
y
YafRayNet: hardware a medida para
renderizar con YafRay
Roberto Domnguez (Hardware y Software)
Miguel ngel Guilln (Hardware y Software)
Guillermo Vay (Software)
ste proyecto est basado en Yafray (www.yafray.org), uno
de los motores de render integrados en Blender. La
calidad de YafRay alcanza niveles profesionales, y por
tanto reuiere muc!os recursos cuando se intenta afrontar un
proyecto de gran envergadura.
"
Si planificamos un proyecto profesional, tenemos por un lado el diseo
artstico, modelado, texturizado, iluminacin y animacin, y luego adems
el tiempo de render, que puede ser tanto o ms que todo lo anterior junto.
As que nos pusimos a pensar cmo evitar tener nuestras mquinas
ocupadas durante semanas o incluso meses aciendo un render.
!a solucin en la que estamos tra"ajando consta de tres partes#
$. %n ard&are especfico para renderizar con 'af(ay.
)uncionalmente una caja negra a la que envas la escena en xml y
la renderiza.
*. %n sistema escala"le desde el punto de vista del usuario, de
manera que pueda usar tantas tarjetas a la vez como quiera. +ara
conseguir esto, emos eco las tarjetas externas al +, y
conectadas por red. Se puede tener una granja de render
montando una red de rea local donde el servidor es el +, y los
clientes las tarjetas 'af(ay-et.
.. %n sistema escala"le entre usuarios. /l soft&are servidor que est
corriendo en tu +, puede compartir los recursos de clculo de tus
tarjetas con otros usuarios en una red +*+, tipo /don0ey o /mule.
As tam"i1n puedes usar las tarjetas de otros adems de la tuya.
/l proyecto tiene la primera parte, lo que es el diseo del ard&are y todo
el soft&are de control de la tarjeta, prcticamente terminado y en fase de
prue"as.
[ 219 ]
D
e
s
a
r
r
o
l
l
o
[ 220 ] Tecnologas Libres para Sntesis de Imagen 3D
!a tarjeta se compone principalmente de un ,old)ire de 2otorola y 3
micros de procesamiento de seal digital de 4exas. /l funcionamiento es el
siguiente#
$. !a tarjeta se enciende. 5emos desarrollado un cargador de
arranque que emos instalado en una pequea flas conectada al
,old)ire. /l cargador arranca, inicializa el ard&are, comprue"a
que todo funciona perfectamente, activa el +yter, que es el micro
que controla la /ternet, la )+6A que controla el canal 72A y la
comunicacin con los dos 7S+s, y atiende al 8atc7og de
temperatura. 9ueda finalmente corriendo la pila 4,+ y se queda a
la espera de una respuesta por parte de la aplicacin servidora en
el +,.
*. /l servidor le enva a la tarjeta por 4)4+ un arcivo comprimido.
/n este arcivo ay varias cosas#
%n 0ernel de linux, "asado en u,!inux y al que le emos
desarrollado los drivers de todo el ard&are que lleva la
placa. !a parte ms difcil a sido los drivers de 72A para
conectar los 7S+s al ,old)ire, ya que 1ste slo tiene un canal
YafRayNet: Hardware a medida para renderiar con YafRay [ 221 ]
72A, y a:n tenemos algunos pro"lemas de equalizacin de
pistas que nos ace perder un poco de rendimiento.
%n sistema de arcivo para crear un disco duro virtual en
memoria S7(A2, que lleva una estructura tpica de !inux.
!a aplicacin cliente de renderizado.
' el motor de render que tendr que cargarse en cada uno de
los 7S+s.
4odo esto, sistema operativo y aplicaciones nos ocupa *2;.
.. /l ,old)ire reci"e el arcivo, lo descomprime en S7(A2, ejecuta
el 0ernel de linux, monta el disco virtual, y ejecuta el soft&are
cliente. /l tiempo total de arranque es de unos . segundos. !a
ventaja de acerlo as, en vez de tenerlo todo gra"ado en la
memoria )las, es que en cualquier momento se puede actualizar
el soft&are del +,, y con ello se actualiza tanto el sistema operativo
que corre en el ,old)ire como el programa que corre en los 7S+s.
7e eco el programa de los 7S+s puede ser cualquier aplicacin
que requiera una gran potencia de clculo en coma fija. !as
primeras prue"as que emos eco para acer los drivers y medir
el rendimiento a sido con un compresor en tiempo real de
2+/63.
3. ,uando el servidor del +, enva un tra"ajo para ser renderizado, el
,old)ire carga 'af(ay en la memoria interna de los 7S+s, carga la
escena que tenemos que renderizar en la S7(A2 externa de cada
7S+, y arranca los micros. +ara ello cada 7S+ se conecta al
,old)ire por 72A so"re un "us 5+<, un "us muy similar al +,< de
los +,s, a ==2z.
>. !os 7S+s renderizan su parte de la escena y cuando terminan
devuelven el render al ,old)ire y 1ste al servidor del +,.
!os 7S+s que estamos montando son micros de 4exas de la serie =???,
42S.*?72=3x, a $ 6z. ,ada micro tiene @ unidades de clculo de coma
fija, con lo que tenemos una potencia de @??? 2<+S de .* "its por micro.
%n +entium <A a $ 6z con 22B o SS/ ace 3 mil millones de
instrucciones por segundo, por lo que la tarjeta viene a ser en coma fija el
equivalente a un +entium <A a @ 6z.
/l proceso lo va a acer "astante ms rpido de lo que lo ara un +, de
gama alta, y adems deja el +, li"re para seguir tra"ajando con ;lender o
lo que se quiera. ,omo las tarjetas se conectan por eternet se pueden
poner asta *>> conectadas con 5u"s. !o que tenemos es una red local de
+,s de gama alta que cuestan unos *?? euros cada uno.
[ 222 ] Tecnologas Libres para Sntesis de Imagen 3D
Diseo hardware
!a placa es "astante compleja, de $* capas, con microvas y memorias
;6A, montada a mano y rutada con /spectra y +icad. /n general emos
utilizado componentes de "ajo consumo para evitar que se nos dispare el
tamao de la tarjeta. +or aora en prue"as consume a pleno rendimiento
unos ?.=A a $*A. +ara que no se queme le emos aadido un sensor de
temperatura y un 8atcdog. !a memoria es de un solo puerto por razn de
coste, lo que nos a o"ligado a gestionar "loqueos entre los 7S+s y el
,old)ire para evitar que accedan a la memoria simultneamente. 4am"i1n
emos aadido un esta"ilizador de tensin que ace que los micros no
arranquen asta que la tensin es esta"le, y como es controla"le desde el
,old)ire nos permite tam"i1n tener reseteados los 7S+s asta que el
,old)ire aya configurado el "us 5+<.
%na de las etapas ms complicadas es portar 'af(ay a la arquitectura del
7S+.
YafRayNet: Hardware a medida para renderiar con YafRay [ 223 ]
!orting de YafRayNet a coma fi"a
!a tarjeta de 'af(ay-et, utiliza un procesador coldfire para realizar los
clculos. /l pro"lema que genera el uso de este procesador es el eco de
que utiliza matemticas de coma fija, al contrario que la mayora de los
ordenadores de uso com:n estos das que usan matemticas de coma
flotante.
%n valor en coma fija, es aquel que tiene un n:mero fijo de dgitos
decimales, es decir, valores cuya precisin es constante. Si un tipo de datos
tiene una precisin de ?,??$ C. dgitos decimalesD un valor como ?,???*
sera considerado como ?,???E ademas si el numero es muy grande, la
coma fija tampoco da soporte al valor, produci1ndose un des"ordamiento y
dando un valor que no tiene nada que ver con el que se quiere conseguir.
,omo se puede apreciar, esto puede dar pro"lemas a la ora de generar
n:meros muy pequeos o muy grandes, ya que no puede alcanzarlos. +or
el contrario, la coma flotante, no tiene una precisin fija, ya que consta de
dos partes una es el numero Cllamado mantisaD y el otro es una potencia
Cllamandose radix a la "aseD. 7e esta forma, podemos generar numeros
como $ F $?
G.
, lo que nos da el valor de ?,??$. 7e igual manera se pueden
representar numeros grandes si usamos un exponente positivo. 5e de
acer notar, que los computadores no usan un radix de $?, sino
generalmente una potencia de *.
/sta diferencia en la arquitectura de los procesadores plantea la necesidad
de un port del proyecto yafray para ser usado en la placa 'af(ay-et. 'a
que es muy dificil conocer de antemano los valores que va a manejar. %na
escena muy grande o una muy pequea podrian causar errores de
precisin como los vistos anteriormente.
+or todo lo anterior se a decidido seguir los siguientes pasos a la ora de
portar el codigo#
$. (ealizar una version modificada de yafray para ordenadores
personales, cam"iando el tipo de datos de float Cel nom"re que se
usa para indicar coma flotanteD por un tipo de datos que emule el
comportamiento de la coma fija.
*. Hfrecer esta versin a la comunidad para que la prue"en y
encontrar posi"les errores tanto de precisin como otros que no se
ayan considerado. /sta versin sera claramente mas lenta, ya que
no es un tipo de datos nativo, pero dado que es una version para
realizar "usqueda de pro"lemas potenciales no se a considerado
la velocidad como un factor importante.
[ 224 ] Tecnologas Libres para Sntesis de Imagen 3D
.. %na vez visto que no ay pro"lemas o que los pro"lemas
existentes son facilmente resolu"les, se proceder a portar el
codigo al ensam"lador propio del coldfire.
3. )ase de depuracin y optimizacin del codigo.
5e de recalcar, que la fase * es crtica, ya que es aqui donde se a de
decidir como se va a realizar el porting. /s importante que los I"etaG
testersJ provean de toda la informacin posi"le, a fin de sacar todos los
pro"lemas, por pequeos que estos sean. Ademas, el resultado de esta fase,
mostrar si la conversin del codigo sera una tarea facil o si a"ra que
recrear una coma flotante ficticia para que todo funcione correctamente.
/spero que esta tarea no sea necesaria, no solo por el ta"ajo que ello
implicaria, sino tam"ien porque aumentaria el tiempo de proceso de forma
importante.
Exportacin desde Blender
Fernando Arroba Rubio
gnotxor@gmail.com ::
ste trabajo pretende exponer de una manera sencilla y
amena los mtodos de exportacin de objetos desde
Blender a cualquier formato externo. Como ejemplo
ilustrativo se ha seleccionado el lenguaje !"# v$.% por dos
motivos fundamentales: &s un lenguaje muy extendido e
independiente del sistema operativo de la m'quina( pero
principalmente es un lenguaje de descripcin de espacios
virtuales comprensible para los humanos. #os ficheros se
guardan en formato de texto y se pueden modificar y crear con
cualquier editor de texto.
&
El trabajo hace hincapi en la estructura que debe tener un script
exportacin desde Blender, aunque algunas de las apreciaciones son
subjetivas. Para no desviar la atencin sobre el eje central del mismo no se
tratan temas como la herencia cuando habla de las clases en la
exportacin. e la misma manera tampoco se hacen re!erencias
exhaustivas al lenguaje "#$% para el cual es recomendable consultar
alg&n tipo de documentacin propia. 'ampoco se ha pretendido hacer un
repaso exhaustivo de las matem(ticas que envuelven al ) * en lo posible
se obviar(n de la misma manera que se ha intentado evitar complejidades
de este en el script.
Entrando en el men sin hacer mucho ruido
El primer punto importante para que Blender recono+ca un script es la
primera l,nea del cdigo. Paralelamente a lo que hacen los script de p*thon
normales, que lan+an el intrprete, Blender lan+a el su*o propio-
1 #!BPY
. continuacin de esta l,nea podemos a/adir un comentario del script
que a/ada !uncionalidad a dicha identi!icacin. Es decir, podemos hacer
un registro del mismo en los men&s de Blender.
[ 225 ]
D
e
s
a
r
r
o
l
l
o
[ 226 ] Tecnologas Libres para Sntesis de Imagen 3D
2 """Registramos el script en los mens de Blender
3 Name: 'Ejemplo de la conferencia...'
4 Blender: 2!
5 "ro#p: 'E$port'
6 %ooltip: 'Este es el ejemplo para la conferencia'
7 """
En este comentario especi!icamos el texto que aparecer( en el men&
0)1, la versin para la que est( escrito 021, el grupo al que pertenece el
script 031 * la etiqueta de a*uda que aparece cuando situamos el cursor
sobre la entrada del men& 041.
5i la versin de Blender sobre la que corremos el script es anterior a la que
marca la cabecera nos mostrar( un aviso de que podr,a no !uncionar
correctamente-
&ersion mismatc': script (as (ritten for Blender 2!.
)t ma* fail (it' *o#rs: 22&ersion mismatc': script
(as (ritten for Blender 2!. )t ma* fail (it' *o#rs:
22
Es posible a/adir m(s in!ormacin a dicha cabecera, como el poder dar
opciones al usuario a la hora de exportar. Por ejemplo, si queremos que el
usuario pueda seleccionar si quiere exportar toda la escena o slo aquellos
objetos que se encuentren seleccionados, podr,amos a/adir submen&s de
la siguiente manera-
8 """Registramos el script en los mens de Blender
9 Name: 'Ejemplo de la conferencia...'
10 Blender: 2!
11 "ro#p: 'E$port'
12 +#,men#: '%odos los o,jetos...' todos
13 +#,men#: '-,jetos seleccionados...' selec
14 %ooltip: 'Este es el ejemplo para la conferencia'
15 """
5i utili+amos submen&s 06786)1 debemos capturar el valor de los
mismos 0todos o selec1. 9omo no todas las versiones de Blender pueden
capturar ese argumento es mejor tener alg&n tipo de cdigo que controle
las excepciones que puede provocar. "amos a ver el ejemplo, esta ve+ con
el cdigo completo-
16 """Registramos el script en los mens de Blender
17 Name: 'Ejemplo de la conferencia...'
18 Blender: 2!
19 "ro#p: 'E$port'
20 +#,men#: '%odos los o,jetos...' todos
21 +#,men#: '-,jetos seleccionados...' selec
Exportacin desde Blender [ 227 ]
22 %ooltip: 'Este es el ejemplo para la conferencia'
23 """
24 # .........
25 # /0)N
26 # .........
27 tr*:
28 0R" 1 22script223'arg'4 # 5apt#ro el arg#mento del
s#,men
29 e$cept:
30 print "&ersi6n antig#a"
31 0R" 1 'selec'
32
33 print "+e 'a seleccionado la opci6n: 7s" 7 0R"8
%o m(s interesante a destacar en el cdigo es el manejo de excepciones
07:8)61 que se hace para cargar en una variable global .#; 07<1 la
seleccin del usuario. .l manejar la excepcin podemos mantener en
!uncionamiento el script * as, poder asignarle un valor por de!ecto a la
variable 0)61. En la linea )) podemos observar que mostramos a travs de
la consola ese argumento como una cadena de caracteres m(s. Es mucho
m(s interesante, por supuesto, si utili+amos dicho valor para hacer cosas
distintas, por ejemplo-
34 if 0R" 11 'todos':
35 los-,jetos 1 +cene.get5#rrent9:.get5'ildren9:
36 else:
37 los-,jetos 1 Blender.-,ject."et+elected9:
Es decir, si el argumento pasado es todos se cargan todos los objetos
de la escena actual en una lista llamada los=bjetos, mientras que si el
argumento es otro, se cargar(n solo los objetos que estn seleccionados.
#ecordamos que si se produce la excepcin que no permite cargar el
argumento desde el submen&, el script cargar( por de!ecto slo los objetos
seleccionados.
Por otro lado, es mu* recomendable que tengamos alg&n cdigo que
controle la versin de Blender que se est( ejecutando. .unque *a hemos
comentado que podemos 0debemos1 establecer la versin de Blender para
la que se ha hecho el script * que el propio programa tiene un cierto control
sobre ello, no est( de m(s que a/adamos m(s seguridad a nuestro script de
!orma manual. Esto evitar( problemas * sinsabores al usuario de una
!orma sencilla * elegante. Por ejemplo, si sabemos que nuestro script no
!unciona en alguna versin determinada podr,amos avisar al usuario para
evitar que pruebe una * otra ve+ sin conseguir nada. Es !rustrante cuando
lan+as un script * no hace lo que esperas * adem(s tampoco sabes el
porqu. Por ejemplo, si sabemos que estamos utili+ando caracter,sticas que
[ 228 ] Tecnologas Libres para Sntesis de Imagen 3D
aparecieron en el .P> a partir de la versin 7.)? podr,amos escribir un
poco de cdigo de la siguiente manera, * comen+ar realmente el
procesamiento del !ichero a partir de la l,nea 27-
38 if Blender."et9';ersion': < 2=:
39 print "0;iso: >&ersi6n incorrecta de ,lender!"
40 print "No est? #tili@ando Blender 2.= o s#periorA
descarg#e"
41 print "#na ;ersi6n m?s act#ali@ada desde
'ttp:BB,lender.orgB"
42 else:
43 .....
Un vistazo a lo que necesitamos
.ntes de comen+ar a detallar algunos mdulos que debemos emplear de
!orma casi sistem(tica, necesitamos comprender un poco cmo est(
organi+ada la in!ormacin que queremos exportar. 'ambin debemos
tener claro el !ormato en el que debe ser escrita. Esto en algunas ocasiones
0por no decir la ma*or,a1 no coincide. Para hacer una exportacin limpia
muchas veces deberemos tener en cuenta esas peculiaridades * adaptarlas
lo mejor posible.
Un poco de matemticas
@n primer !oco de problemas puede venir de la geometr,a de los
objetos. En algunas ocasiones lo podremos reducir a una cuestin de
equivalencias de escala, en otras necesitaremos un conocimiento un poco
m(s preciso de las matem(ticas que envuelven el ).
Para empe+ar vamos a echar un vista+o a la matri+ de los objetos.
9omen+amos para ello con la representacin de un punto. @n punto no
tiene dimensin, simplemente es una posicin 0coordenadas1 en un
espacio ). 5in embargo, la misma posicin puede estar representada por
valores distintos dependiendo del origen de coordenadas que utilicemos.
$uchos sistemas * programas que representan !iguras en un espacio )
siguen pautas parecidas- almacenan la descripcin de una malla con
respecto a un punto 0que llamaremos centro1 * a/aden una matri+ de
modi!icacin. En esa matri+ se guardan in!ormaciones tan valiosas como la
orientacin, posicin * escalado de la malla. Por &ltimo, para conocer la
posicin real de un punto de esa malla slo ha* que aplicar dicha matri+ a
las coordenadas relativas de dicho punto dentro de la malla.
Exportacin desde Blender [ 229 ]
Puede parecer algo alejado del usuario normal, pero no lo es, basta pulsar
n en modo objeto para que blender nos muestre los valores de la matri+
del objeto seleccionado 0aunque no la matri+ misma1.
=tro tema es la orientacin de los ejes de coordenadas. 9oncretamente si
son ejes de coordenadas a derechas o a izquierdas. Blender utili+a un
sistema orientado a derechas, es decir, x crece hacia la derecha, * crece
hacia arriba * + crece hacia a!uera de la pantalla. =tros programas, como
P="8#a* utili+an un sistema orientado a i+quierdas, es decir, x e *
est(n orientados a derecha * arriba, respectivamente * + crece hacia
adentro de la pantalla.
Aa* que tener en cuenta todos estos detalles a la hora de exportar a otros
sistemas, pues sus valores pueden representarse de otra manera. .ntes
deb,amos reali+ar todos los c(lculos necesarios por nosotros mismos
0producto escalar, producto de vectores, c(lculo del mdulo de un vector,
etc1. En la actualidad contamos con un mdulo de utilidades matem(ticas
dentro de blender- $athutils.
Blender la madre del cordero!
Este mdulo es el base de todos los dem(s. Por otro lado, tambin
proporciona in!ormacin &til a la hora de la exportacin. Por ejemplo, si
queremos proporcionar al usuario un nombre de !ichero donde guardar la
exportacin, podemos solicitar a Blender un nombre de !ichero.
44 nom,reCic'ero 1 Blender."et9'filename':
;uarda en la variable nombreBichero el nombre del &ltimo archivo
que se ha abierto o guardado desde blender. =tra de las in!ormaciones
&tiles que proporciona este mdulo es la versin de blender que est( en
!uncionamiento.
45 ,lender&er 1 Blender."et9';ersion':
. partir de este mdulo se har(n las importaciones.
46 import Blender
47 from Blender import N/es'A Dindo(
48 from Blender import +ceneA /at'#tils
49 ....
[ 230 ] Tecnologas Libres para Sntesis de Imagen 3D
Es aconsejable utili+ar importaciones desde el mdulo principal * no hacer
importaciones globales con el comod,n C para no llenar el diccionario del
espacio de nombres de p*thon con demasiadas entradas, muchas de ellas
in&tiles.
Por otro lado, el obligarnos a utili+ar el nombre del mdulo al que
pertenece alguna !uncin, o clase, har( m(s legible el cdigo que
escribamos, sobre todo a la hora de revisiones posteriores.
Facilitando la vida al usuario
Aa* ocasiones en que el programador hace el script para uso propio.
Esto conlleva la tendencia a interactuar con l desde el propio cdigo, sin
embargo, hace pr(cticamente imposible que un tercero utilice dicho script.
En otras ocasiones estamos obligados a pensar en cmo otra persona, que
no tienen porqu saber nada sobre programacin, conseguir( aprovechar
el trabajo que reali+a el script. Para !acilitarnos el trabajo, Blender provee
de dos mdulos interesantes- Sys * Window. En nuestro ejemplo
utili+amos tan slo uno de ellos para preguntar el nombre del !ichero
donde guardar( la salida * comen+ar( el proceso al pulsar el botn
correspondiente.
50 Dindo(.Cile+elector9fic'eroA "E$portar":
Esta l,nea de cdigo muestra en la ventana de Blender un di(logo de
!ichero. El primer argumento de FileSelector es la !uncin que se ejecutar(
si se pulsa el botn del di(logoD a dicha !uncin le pasar( el nombre del
!ichero seleccionado. El segundo argumento es el texto que aparecer( en
dicho botn. %o que nos interesar(, por supuesto, es la estructura de la
!uncin que reali+a el trabajo.
51 def fic'ero9nomCic'ero::
52 if nomCic'ero.find9'.(rl'A .!: < =:
53 nomCic'ero E1 '.(rl'
54 # 0,ro el fic'ero * lo conecto con std
55 f 1 open9nomCic'eroA '(':
56 std 1 s*s.stdo#t
57 s*s.stdo#t 1 f
58 # Proceso los datos
59 sce 1 E$portadorEscena9nomCic'ero:
60 sce.proceso9:
61 # Fe;#el;o el control de stdo#t * cierro el fic'ero
62 s*s.stdo#t 1 std
63 f.close9:
Exportacin desde Blender [ 231 ]
%o primero que hace dicha !uncin es comprobar el nombre del !ichero que
nos proporciona el selector de !icheros de Blender. Principalmente la
extensin, hacemos esto para evitar prdidas de datos producidas por una
seleccin errnea por parte del usuario. Es posible que al seleccionar el
nombre de un !ichero ste marque equivocadamente el !ichero .blend de
origen, o cualquier otro. e esta manera, si el nombre del !ichero no
conclu*e con la extensin deseada, esta ser( a/adida salvaguardando de la
sobrescritura datos ajenos al script * el proceso que representa.
En las siguientes l,neas 03284)1 se reali+a todo el proceso. B(sicamente en
tres pasos-
6. 5e abre un !ichero * se redirecciona la salida est(ndar a l 03383:1.
7. 5e reali+a el proceso de exportacin 03E, 4?1.
). 5e devuelve la salida est(ndar a su estado original 047,4)1.
Esto !acilita en gran medida la legibilidad del cdigo pues simplemente
tendremos que utili+ar instrucciones print para reali+ar la exportacin. En
contrapartida, hace necesaria la instalacin de P*thon en el sistema pues
utili+a su mdulo sys.
=tra di!icultad a/adida aparece si el !ormato al que queremos exportar el
!ichero es binario. En este caso no podr,amos utili+ar esta !orma de
simpli!icacin necesitando adem(s el mdulo struct que P*thon
proporciona para esos menesteres.
"os ob#etos vistos desde Blender
Fo es objeto del presente trabajo hacer una pormenori+ada explicacin de
los distintos mdulos que provee Blender para la automati+acin de tareas.
Para eso remitimos al lector a la documentacin correspondiente. 5in
embargo, no podremos avan+ar mucho sin unas pocas palabras sobre el
trabajo !undamental con algunos de estos mdulos.
El objetivo del script de ejemplo es la pedagog,a m(s que la e!iciencia o la
exactitud, por lo que se ha intentado mantener en un m,nimo ra+onable
todo el aparato de importaciones * cdigo extra/o. >ncluso el autor se ha
reprimido del uso de la herencia a la hora de plantearlo. Por ello, slo
haremos hincapi en los puntos b(sicos. @no de los cuales es el bucle de
exportacin, que en nuestro caso se encuentra dentro de la clase
ExportadorEscena, concretamente ExportadorEscena.proceso().
[ 232 ] Tecnologas Libres para Sntesis de Imagen 3D
64 class E$portadorEscena:
65 def 22init229selfA nomCic'ero::
66 self.fic'ero 1 nomCic'ero
67
68 def proceso9self::
69 glo,al los-,jetos # Gtili@o los o,jetos cargados
en la lista glo,al
70 print "#&R/H &2.= #tfIJn" # ca,ecera del fic'ero
71 print "#7s" 7 self.fic'ero # El nom,re del fic'ero
72 for o,j in los-,jetos: # Proceso la lista de
o,jetos
73 tipo 1 o,j.get%*pe9: # -,tener el tipo de
o,jeto K#e ;amos a tratar
74 if tipo 11 '/es'':
75 o 1 -,jeto9o,j:
76 o.proceso9:
77 elif tipo 11 '5amera':
78 c 1 5amara9o,j:
79 c.proceso9:
80 elif tipo 11 'Hamp':
81 l#@ 1 H#@9o,j:
82 l#@.proceso9:
%o primero que haremos en el proceso ser( escribir la cabecera del !ichero
0:?1 * a/adimos un comentario al mismo con el nombre del !ichero 0:61.
=bsrvese que basta con escribir directamente en la salida est(ndar,
puesto que la hab,amos redireccionado a nuestro !ichero. espus de esta
cabecera comien+a un bucle for que constitu*e el centro de todo el script.
icho bloque 0:78<71 se encarga de procesar los objetos que se ha*an
incluido en la lista global losObjetos que vimos al principio. Puesto que en
el !ichero .blend que nos servir( de ejemplo slo ha* objetos de tipo esh,
!a"era * #a"p, el script slo tiene en cuenta estos tipos. 5e puede
observar la similitud en la estructura de dicho proceso- primero se crea un
objeto del tipo conveniente * a continuacin se llama a su !uncin miembro
proceso(). Esta coincidencia est( llamada a ser tratada mediante herencia,
sin embargo, se ha evitado llevarla a cabo en este caso para no con!undir a
aquellos que no estn acostumbrados a la programacin orientada a
objetos. %a ventaja de dicha programacin nos permitir,a, por ejemplo,
escribir slo una ve+ el cdigo que reali+ara el cambio de sistema de
coordenadas en la clase base * que los dem(s objetos hijos lo heredaran.
Exportacin desde Blender [ 233 ]
"os ob#etos desde $R%"
%a estructura que siguen las clases dentro del script est(n acomodadas a la
estructura que debemos generar para "#$%. Es decir, los objetos tienen
sus mallas de!inidas como listas de vrtices que luego son re!erenciados en
listas de caras. entro de esa estructura de slido llevan tambin incluida
una estructura de apariencia.
En el caso de la apariencia, * con el objeto de abreviar un poco, slo se han
tenido en cuenta los par(metros m(s importantes del material * se han
obviado otros como las texturas.
El problema !undamental desde "#$% era la representacin de objetos *
el cambio de origen para los puntos que de!inen la malla. 9omo sabemos,
Blender almacena la in!ormacin de las mallas en coordenadas locales. Es
decir, las coordenadas de un punto est(n dadas teniendo como origen el
centro del objeto al que pertenece. Para saber la posicin real de un
punto 0desde el ? absoluto1 debemos tener en cuenta las coordenadas del
punto respecto al centro del objeto * la posicin, rotacin * tama/o del
objeto. .l pasar esta in!ormacin a "#$% nos damos cuenta que un
sistema no se corresponde con el otro. %as trans!ormaciones en "#$% se
almacenan de !orma distinta * en este sistema no es lo mismo rotar una
!igura * luego trasladarla, que trasladar una !igura * luego rotarla, pues las
trans!ormaciones se reali+an todas desde el centro absoluto.
.nte estas consideraciones, la salida m(s sencilla era exportar la malla de
!orma absoluta haciendo la conversin de centros.
83 class /alla:
84 ....
85 def a,sol#to9selfA ;::
86 ;r 1 /at'#tils.&ector93;3=4A ;3L4A ;3244:
87 ;r.resi@e!F9:
88 ret#rn /at'#tils.&ec/#lt/at9;rA self.matri@:
El mtodo absoluto() se encarga de convertir una lista de tres valores
en un objeto $ector del mdulo athutils para luego redimensionarlo *
multiplicarlo por la matri+ propia del objeto. evuelve un vector con la
tras!ormacin reali+ada.
Reutilizando cosas
=tro de los aspectos a tener en cuenta cuando se realice una
exportacin es la posible reutili+acin de objetos, texturas, materiales...
que pueda reali+ar el sistema al que estamos exportando. Fo slo eso, sino
tambin en qu manera lo vamos a hacer.
[ 234 ] Tecnologas Libres para Sntesis de Imagen 3D
En nuestro caso hemos decidido reutili+ar los materiales. Para ello hemos
habilitado un diccionario p*thon donde almacenar los que vamos
encontrando. Eso nos permite luego decidir si tenemos que hacer la
de!inicin completa o slo una inclusin de la misma.
89 materiales 1 M8
90 class /aterial:
91 def 22init229selfA mat::
92 glo,al materiales
93 self.nom,re 1 mat.getName9:
94 if materiales.'as2Ne*9self.nom,re::
95 self.definido 1 L
96 else:
97 self.definido 1 =
98 materiales3self.nom,re4 1 L
99 self.color 1 mat.getR"B5ol9:
100 self.am,iente 1 mat.get0m,9:
101 self.spec 1 mat.get+pec5ol9:
102 self.emit 1 mat.getEmit9:
103 self.,rillo 1 mat.'ardB2OO.=
104 self.transparencia 1 L . mat.alp'a
En el !ragmento de script se puede destacar la de!inicin de un
diccionario p*thon vac,o llamado "ateriales 0<E1. . continuacin, dentro
de la clase que va a procesar este tipo de objetos activamos definido como
!lag que nos dir( si ha* que hacer el proceso completo o no 0E28E:1. 5i no
est( de!inido con anterioridad el constructor de la clase a/ade ese material
al diccionario 0E<1 * carga los valores necesarios para procesar el material
0EE86?21.
El script completo
105 #!BPY
106 """ Registramos el script en los mens de Blender
107 Name: 'Ejemplo de la conferencia...'
108 Blender: 2
109 "ro#p: 'E$port'
110 +#,men#: '%odos los o,jetos...' todos
111 +#,men#: '-,jetos seleccionados...' selec
112 %ooltip: 'Esto es #n ejemplo para la conferencia'
113 """
114
115 import Blender
116 import s*s
117 from Blender import N/es'A HampA Dindo(
118 from Blender import +ceneA /at'#tils
119
Exportacin desde Blender [ 235 ]
120 los-,jetos 1 34
121 materiales 1 M8
122
123 class /aterial:
124 def 22init229selfA mat::
125 glo,al materiales
126 self.nom,re 1 mat.getName9:
127 if materiales.'as2Ne*9self.nom,re::
128 self.definido 1 L
129 else:
130 self.definido 1 =
131 materiales3self.nom,re4 1 L
132 self.color 1 mat.getR"B5ol9:
133 self.am,iente 1 mat.get0m,9:
134 self.spec 1 mat.get+pec5ol9:
135 self.emit 1 mat.getEmit9:
136 self.,rillo 1 mat.'ardB2OO.=
137 self.transparencia 1 L . mat.alp'a
138
139 def proceso9self::
140 if self.definido 11 L:
141 print "JtJt# /aterial:"A self.nom,reA "*a definido."
142 self.escri,e/aterialRepetido9:
143 else:
144 print "JtJt# Fefinici6n del material:"A self.nom,re
145 self.escri,e/aterial9:
146
147 def escri,e/aterial9self::
148 # )nicio la definici6n del material
149 print "JtJtmaterial FEC 7s /aterial M" 7 self.nom,re
150 print "JtJtJtdiff#se5olor"A self.color3=4A
self.color3L4A self.color324
151 print "JtJtJtam,ient)ntensit*"A self.am,iente
152 print "JtJtJtspec#lar5olor"A self.spec3=4A self.spec3L4A
self.spec324
153 print "JtJtJtemissi;e5olor"A self.emitA self.emitA
self.emit
154 print "JtJtJts'ininess"A self.,rillo
155 print "JtJtJttransparenc*"A self.transparencia
156 # 5ierro la definici6n del material
157 print "JtJt8"A "# Cinal del material"A self.nom,re
158
159 def escri,e/aterialRepetido9self::
160 print "JtJtmaterial G+E"A self.nom,re
161
162 class 0pariencia:
163 def 22init229selfA m::
164 self.materiales 1 m
165
166 def proceso9self::
167 # 5a,e@ara de la apariencia
168 print "Jtappearance 0ppearance M"
169 for m in self.materiales: #Proceso los materiales
170 mat 1 /aterial9m:
171 mat.proceso9:
[ 236 ] Tecnologas Libres para Sntesis de Imagen 3D
172 # 5ierre de la apariencia
173 print "Jt8 # Cin apariencia"
174
175 class /alla:
176 def 22init229selfA m::
177 self.malla 1 m.getFata9:
178 self.nom,re 1 m.name
179 if 9self.malla.get/ode9: P N/es'./odes.%D-+)FEF: 11 =:
180 self.do,lecara 1 L
181 else:
182 self.do,lecara 1 =
183 self.;erts 1 self.malla.;erts
184 self.faces 1 self.malla.faces
185 self.matri@ 1 m.matri$Dorld
186
187 def proceso9self::
188 # )nicio el proceso de la malla
189 print "Jtgeometr* )nde$edCace+et M"
190 # Gna o dos caras
191 if self.do,lecara 11 L:
192 print "JtJtsolid C0H+E # Fos caras"
193 else:
194 print "JtJtsolid %RGE # Gna cara"
195 self.;ertices9:
196 self.caras9:
197 # Cinali@o el proceso de la malla
198 print "Jt8 # Cin de la geometrQa:"A self.nom,re
199
200 def ;ertices9self::
201 print "JtJtcoord FEC c27s 5oordinate M" 7 self.nom,re
202 print "JtJtJtpoint 3"
203 for ; in self.;erts:
204 ;r 1 self.a,sol#to9;:
205 print "JtJtJtJt 7f 7f 7fA" 7 9;r3=4A ;r3L4A ;r324:
206 print "JtJtJt4 # Cinal de los ;Rrtices"
207 print "JtJt8 # Cin coordenadas c27s" 7 self.nom,re
208
209 def a,sol#to9selfA ;::
210 ;r 1 /at'#tils.&ector93;3=4A ;3L4A ;3244:
211 ;r.resi@e!F9:
212 ret#rn /at'#tils.&ec/#lt/at9;rA self.matri@:
213
214 def caras9self::
215 print "JtJtcoord)nde$ 3"
216 for f in self.faces:
217 ;er5ara 1 ""
218 for ; in f.;:
219 ;er5ara E1 "7dA " 7 ;.inde$
220 print "JtJtJt7s.LA" 7 ;er5ara
221 print "JtJt4 # Cinal de la definici6n de las caras"
222
223 class -,jeto:
224 def 22init229selfA o,j::
225 self.o,jeto 1 o,j
Exportacin desde Blender [ 237 ]
226 self.nom,re 1 o,j.name
227 self.malla 1 o,j.getFata9:
228
229 def proceso9self::
230 print "# Esto es el o,jeto malla: 7s" 7 self.nom,re
231 # 5omien@a el proceso
232 print "FEC 7s +'ape M" 7 self.nom,re
233 # -,tengo los materiales
234 mats 1 self.malla.materials
235 # Proceso la "apariencia"
236 ap 1 0pariencia9mats:
237 ap.proceso9:
238 # Proceso la "malla"
239 malla 1 /alla9self.o,jeto:
240 malla.proceso9:
241 # 5ierro la forma
242 print "8 # +'ape 7s" 7 self.nom,re
243
244 class H#@:
245 def 22init229selfA l::
246 self.l#@ 1 l
247
248 def proceso9self::
249 print "# 0K#Q irQa la definici6n de #n p#nto de l#@ ."
250 print "# Fejamos al lector el ejercicio de definir los
distintos tipos de l#ces."
251 print "# RecordarleA nicamenteA la con;eniencia de
desacti;ar la l#@ 's#,jeti;a'"
252 print "# K#e coloca &R/H por defecto."
253 print "# ...................................."
254
255 class 5amara:
256 def 22init229selfA cam::
257 self.camara 1 cam
258 self.nom,re 1 cam.name
259 self.pos 1 cam.getHocation9:
260 self.orien 1 cam.getE#ler9:
261
262 def proceso9self::
263 print 'FEC 7s &ie(point M' 7 self.nom,re
264 print 'Jtdescription "7s"' 7 self.nom,re
265 # Sago trampas con el ?ng#lo de rotaci6n del ;ector de
orientaci6n * esca,le@co #n
266 # ;alor para e;itar complicar m?s el script
267 print 'Jtorientation'A self.orien3=4A self.orien3L4A
self.orien324A 'L.O'
268 print 'Jtposition 7f 7f 7f' 7 9self.pos3=4A self.pos3L4A
self.pos324:
269 print '8 # Cin de la definici6n de'A self.nom,re
270
271 class E$portadorEscena:
272 def 22init229selfA nomCic'ero::
273 self.fic'ero 1 nomCic'ero
274
275
[ 238 ] Tecnologas Libres para Sntesis de Imagen 3D
276 def proceso9self::
277 glo,al los-,jetos #-,jetos cargados en la lista glo,al
278 # escri,o la ca,ecera del fic'ero
279 print "#&R/H &2.= #tfIJn"
280 print "#7s" 7 self.fic'ero # El nom,re del fic'ero
281 for o,j in los-,jetos: # Proceso la lista de o,jetos
282 tipo 1 o,j.get%*pe9: # -,tener el tipo de o,jeto
283 if tipo 11 '/es'': # * tratarlo
284 o 1 -,jeto9o,j:
285 o.proceso9:
286 elif tipo 11 '5amera':
287 c 1 5amara9o,j:
288 c.proceso9:
289 elif tipo 11 'Hamp':
290 l#@ 1 H#@9o,j:
291 l#@.proceso9:
292
293 def fic'ero9nomCic'ero::
294 if nomCic'ero.find9'.(rl'A .!: < =:
295 nomCic'ero E1 '.(rl'
296 # 0,ro el fic'ero * lo conecto con std
297 f 1 open9nomCic'eroA '(':
298 std 1 s*s.stdo#t
299 s*s.stdo#t 1 f
300 # Proceso los datos
301 sce 1 E$portadorEscena9nomCic'ero:
302 sce.proceso9:
303 # Fe;#el;o el control de stdo#t * cierro el fic'ero
304 s*s.stdo#t 1 std
305 f.close9:
306
307 #......................................................
308 # /0)N
309 #......................................................
310 tr*:
311 0R" 1 22script223'arg'4 # 5apt#ro arg#mento del s#,men
312 e$cept:
313 print "&ersi6n antig#a"
314 0R" 1 'selec'
315
316 if Blender."et9';ersion': < 2=:
317 print "0;iso: >&ersi6n incorrecta de ,lender!"
318 print " No est? #tili@ando Blender 2.= o s#periorA "
319 print " descarg#e #na ;ersi6n m?s act#ali@ada... "
320 else:
321 if 0R" 11 'todos':
322 escena 1 +cene.get5#rrent9:
323 los-,jetos 1 escena.get5'ildren9:
324 else:
325 los-,jetos 1 Blender.-,ject."et+elected9:
326
327 Dindo(.Cile+elector9fic'eroA "E$portar":
Extendiendo Blender:
Programando Plugins de Texturas
Guillermo Vay
i el modelado es la parte que nos permite comprender la
forma del objeto, las texturas son todo aquello que da
color a los modelos, tanto en el sentido figurado como en
el estricto. Son imgenes aplicadas a las caras de los modelos,
las cuales definen o modifican las propiedades del material.
S
Introduccin a las Texturas y a las Texturas
Procedurales
Las texturas pueden tener entre una y tres dimensiones, segn queramos
que afecten de forma lineal, superficial o a todo un volumen. Sin embargo,
lo ms habitual suelen ser las texturas bidimensionales, ya que con stas se
puede modificar todo un modelo aplicndol a las diversas caras.
Los parmetros que puede modificar son muy diversos. Para mucha gente,
las texturas nicamente asignan el color a las caras, pero esto no es as,
sino que un buen texturi!ado puede hacer brillar lo que antes no era ms
que un mal modelo. Parmetros como la reflexi"n o la transparencia alpha
son e#emplos de algunas caractersticas del material que una textura puede
modificar para una correcta visuali!aci"n del ob#eto. $ediante las texturas
podemos simular elementos de modelado que no existen %&bumping map',
tambin llamado canal nor( o incluso generarlos %&displacement map'(.
Para poder conseguir nuestra biblioteca de texturas, hay que empe!ar
distinguindolas en dos tipos)
Procedurales. Son aquellas generadas por un algoritmo y que se
implementan gracias a la programaci"n. Son calculadas en tiempo
de renderi!ado.
[ 239 ]
D
e
s
a
r
r
o
l
l
o
[ 240 ] Tecnologas Libres para Sntesis de Imagen 3D
No procedurales. Son dibu#os, fotografas y, en definitiva,
cualquier imagen esttica. *o dependen de ningn parmetro y,
por lo tanto, siempre quedan de la misma forma.
+unque aparentemente las no procedurales den la impresi"n de ser
ms fciles de conseguir %mucha gente piensa que tomando una fotografa
o haciendo un dibu#o rpido se pueden generar buenas texturas(, lo cierto
es que tanto uno como otro modelo son bastante traba#osos a la hora de
crearlos.
,na textura procedural se consigue mediante la aplicaci"n de modelos
matemticos, es muy complicado generar un modelo matemtico bueno
que solucione el problema. Pero una ve! est desarrollado ste, el paso al
algoritmo programado es bastante sencillo. -n cambio, en las no
procedurales pasa #usto lo contrario) encontrar lo que necesitas es fcil,
pero su conversi"n a una imagen de ordenador que no tenga parmetros de
iluminaci"n residuales es realmente complicado.
Se ha de destacar que el principal problema y virtud de las texturas
procedurales es su propiedad de mantener patrones repetitivos. +l aplicar
una procedural como mapa de color, podemos ver c"mo los caracteres
predominantes se repiten de forma obvia, lo cual suele dar un
desagradable efecto de irrealidad. +dems, los patrones repetitivos son una
de las causas ms comunes de aliasing al ale#arnos de la textura %o lo que es
lo mismo, al reducirla(.
.e igual manera es una caracterstica indispensable, ya que de otra forma
no podramos predecir el resultado) imagina una textura que a cada render
tomase una forma distinta/ sera poco til, 0no1 2ncluso aquellas que nos
parecen completamente aleatorias no lo son, y no s"lo porque un
ordenador no pueda generar un elemento aleatorio puro, sino porque ya
hemos visto que no interesa.
3odo esto nos lleva a pensar que las texturas procedurales son el aliado
perfecto para generar modificaciones en los materiales.
Consiguiendo bmake
Los desarrolladores de 4lender hacen todo lo posible por hacer ms fcil la
colaboraci"n con los proyectos de la 4lender 5oundation. ,n claro e#emplo
es la herramienta bmake. bmake es un shell script creado para facilitar la
tarea a aquellos interesados en desarrollar un plugin. 6ompilar nuestro
c"digo y generar una librera de enlace dinmico %generalmente
caracteri!ada por la extensi"n .so en linux(. .e sta manera los plugins
que e#ecutemos corrern en 4lender como si fuesen parte del programa
Extendiendo Blender: Programando plugins de Texturas [ 241 ]
original. -s por esto que hay que tener cierto cuidado al e#ecutar plugins
que no sepamos que son estables, cualquier error en el plugin podra
estropear la e#ecuci"n de 4lender y causar un cierre prematuro e indeseado
de ste.
Si bien hasta aqu es todo muy bonito, el futuro desarrollador de plugins
puede encontrarse con un peque7o contratiempo. -n los paquetes de
ciertas distribuciones %como por e#emplo en .ebian( la utilidad bmake y
todo lo necesario para la compilaci"n no est empaquetado. 8sto puede ser
debido a que realmente debera pertenecer a un futuro blender-dev.
Para conseguir los ficheros necesarios ba#amos una versi"n del cvs)
# cvs -d:pserver:anonymous@cvs.blender.org:/cvsroot/bf-blender
co blender
y la compilamos
# scons release
La utilidad bmake estar en (path cvs)/blender/release/plugins/bmake y
las libreras necesarias en (path cvs)/blender/source/blender/blender-
pluginapi. 6opiaremos bmake en el directorio de plugins y los headers los
compiaremos ba#o plugins, en el directorio include.
-n dicho directorio tambin hay otros dos llamados texture y secuencer.
-n texture ser donde crearemos los ficheros .c con el c"digo del plugin.
9+hora ya tenemos todo: Para compilar iremos a la carpeta textures y
teclearemos)
# ./bmake plugin.c
Para probarlo en la carpeta textures debera haber dos e#emplos)
tiles.c y clouds.c
# ./bmake tiles.c
# ./bmake clouds.c
6ualquiera de los anteriores debera compilar sin problemas.
[ 242 ] Tecnologas Libres para Sntesis de Imagen 3D
Estructura de un lugin de texturas
-n la documentaci"n de 4lender.org viene una estructura bsica para
comen!ar a dise7ar un plugin. +provecharemos este recurso para evitar
empe!ar de cero.
# include !plugin.h
-sta directiva de preprocesador ha de estar incluida en todo plugin que
queramos desarrollar. Si no lo hacemos as, habr varias constantes y
funciones que no estarn disponibles y por tanto no se podr compilar
correctamente.
char name"#$ % !!& /' (exture name '/
+qu ir el nombre de nuestro plugin tal y como queramos que
apare!ca en la interfa! de 4lender, como se puede apreciar, tiene un
mximo de ;< caracteres.
#define )*+(,-./ 0
char stnames")*+(,-./$"12$ % 3!4ntens!5 !6olor!5 !7ump!8&
)*+(,-./ da el nmero de subtipos que existirn en nuestro plugin. .e
esta manera se puede tener varias texturas procedurales de caractersticas
parecidas ba#o un nico archivo de plugin, pudiendo cambiar de una a otra
desde la selecci"n que nos brinda la interfa! de 4lender. ,n e#emplo de
esto es la textura de 6louds, podemos seleccionarlas en blanco y negro o en
color. La siguiente lnea indica los nombres que asignaremos a estos
subtipos. *o se debe superar los => caracteres para el nombre %no, ni
siquiera modificando la declaraci"n, si haces eso 4lender puede dar
resultados inesperados(.
9ar/truct varstr"$ % 3
3):;4<=>5 !6onst 1!5 1.?5 -1.@5 1.@5 !!85
8&
typedef struct 6ast 3
float a&
8 6ast&
-stas dos estructuras son las que nos darn la informaci"n que le
pidamos al usuario. ?ay que tener en cuenta que han de estar ordenadas
las variables de igual forma que los botones, para que el valor de uno sea
asignado a la otra.
Extendiendo Blender: Programando plugins de Texturas [ 243 ]
varstr define los botones que se van a mostrar as como sus
parmetros bsicos. Se podran dividir en dos grupos bsicos)
=. Numricos) -st dividida en < subtipos combinados con un flo
%coma flotante( o con un int %para enteros( mediante un operador
or %@A@()
num) valor numrico, se edita directamente.
numsli) barra desli!adora para elegir el valor.
tog) un interruptor, consta de dos posiciones.
;. Caracteres) label, sirven para entradas de tipo texto.
+ continuaci"n especificamos el nombre, que ser lo que apare!ca en el
texto del bot"n. *o debe superar los =B caracteres.
Para los elementos de tipo numrico, debemos especificar el valor por
defecto, mnimo y mximo, en este orden. -n el caso de los tog, el valor
mnimo es el de pulsado y el mximo el de libre.
.etrs viene el &tip' o la ayuda que aparecer cuando el puntero est unos
momentos encima del bot"n. -l mximo es de CD caracteres y si no se
quiere usar, debemos de#ar un string nulo %@@(.
-l 6ast es la estructura con la cual se nos pasarn los valores tomados por
la interfa!. Por cada elemento que hubiese en el varstr, aqu habr otro, en
el mismo orden y con el tipo apropiado. Eeneralmente se suele usar el
mismo nombre que para el bot"n, aunque esto ltimo no es necesario %es
una prctica recomendable, ya que me#ora la legibilidad de nuestros
programas y acelera la depuraci"n de los mismos(.
float result"A$&
+qu ir lo que queramos devolver a 4lender. *o tiene porqu estar
relleno entero, sino que depender del valor que demos a la sentencia
return al final de la funci"n texBoit.
result"@$) intensidad. 8ste es el nico que hay que rellenar
siempre.
result"1$) valor de ro#o.
result"$) valor de verde.
result"0$) valor de a!ul.
result"#$) valor de alfa
result"C$) despla!amiento de la normal en el e#e F.
result"2$) despla!amiento de la normal en el e#e G.
result"?$) despla!ameinto de la normal en el e#e H.
[ 244 ] Tecnologas Libres para Sntesis de Imagen 3D
float cfra&
-sta variable nos la establece blender con el frame actual.
int plugin+tex+doit(int5 6ast'5 float'5 float'5 float')&
Prototipo de la funci"n principal para registrarla en la interfa! de
blender. $s adelante hablaremos de sus parmetros.
/' <ixed <unctions '/
int plugin+tex+getversion(void) 3
return 7+-=:D4)+9.*/4>)&
8
void plugin+but+changed(int but) 3 8
-sta parte del c"digo no hace falta tocarla, y no deberemos tocarla a
mnos que sepamos lo que estamos haciendo. +un as, deberemos a7adirla
por compatibilidad de c"digo.
void plugin+init(void) 3 8
-sta funci"n s"lo la modificaremos si hace falta reali!ar algn tipo de
clculo o iniciali!aci"n antes de comen!ar con el procedimiento. -s
importante tener en cuenta que si este plugin se usa en ms de un sitio, la
funci"n init ser llamada cada ve! que se acceda a uno de estos elementos,
por lo que no se debe iniciali!ar elementos de forma global a menos que
estemos muy seguros de que es eso lo que queremos.
void plugin+getinfo(-lugin4nfo 'info) 3
info-Ename%name&
info-Estypes%)*+(,-./&
info-Envars%siFeof(varstr)/siFeof(9ar/truct)&
info-Esnames%stnames"@$&
info-Eresult%result&
info-Evarstr%varstr&
info-Einit%plugin+init&
info-Etex+doit%((exBoit) plugin+tex+doit&
info-Ecallback%plugin+but+changed&
8
-sta funci"n es la que se encarga de registrar los nombres de los
distintos elementos de comunicaci"n entre 4lender y el plugin. Si cambias
algn nombre ms arriba, entonces tambin debers cambiarlo aqu.
+unque lo ms recomendable sera no cambiar ninguno de los nombres
clave para que la gente pueda entender me#or el c"digo.
Extendiendo Blender: Programando plugins de Texturas [ 245 ]
int plugin+tex+doit(int stype5 6ast 'cast5 float 'texvec5
float 'dxt5 float 'dyt)
6abecera de la funci"n principal. 6uando 4lender quiera e#ecutar el
plugin, sta ser la funci"n a la que llame %despus de haber llamado a la
de init si es la primera ve! que accede al plugin(.
Parmetros)
stype) indica el subtipo que seleccion" el usuario, en el caso de
haber ms de uno.
cast) estructura con los datos de la selecci"n de parmetros del
usuario a travs de la interfa! de botones que le dimos.
texvec) array de tres elementos, indicando la posici"n x, y, ! del
texel %el punto de la textura(.
dxt y dyt) estos valores estarn a null a menos que se haya pedido
antialiasing %osa(. -n caso de contener algn valor, indicarn el
tama7o de la textura en espacio de pixel %la explicaci"n de este
concepto queda fuera de este manual, consulta algn libro de
texturas procedurales para saber lo que es(.
if (stype %% 1) 3
return 1&
8 if (stype %% ) 3
return &
8
return @&
.e todo lo anterior s"lo explicaremos el valor de return. Segn
devolvamos D, =, ; " <, 4lender acceder a distintos valores del array
result.
D) nicamente mirar la intensidad.
=) mirar tanto la intensidad como los valores de color rgba.
;) usar los valores de intensidad y de mapa de despla!amiento.
<) acceder a todo el array.
E!emlo: "miley#c
+hora comen!aremos a desarrollar un sencillo plugin. .igo sencillo ya que
no tiene ni siquiera antialiasing, s"lo con este tema ya podra constituir por
s solo un tema entero debido a la cantidad de posibilidades que tiene as
como la elecci"n de cul es me#or o peor segn qu casos.
[ 246 ] Tecnologas Libres para Sntesis de Imagen 3D
-l plugin generar un &smiley' ligeramente configurable, podremos
cambiar el tama7o as como si est triste o alegre %menuda chorrada,
0no1(. 6on este plugin quiero demostrar que mediante procedurales se
pueden reali!ar mltiples texturas, incluso aquellas ms inverosmiles,
aunque a veces no sean las ms tiles. +dems nos servirn como e#emplo
para introducirnos un poco ms en el mundo de las texturas procedurales
de 4lender.
-mpe!amos poniendo las libreras en las cuales se va a apoyar nuestro
plugin. 6omo untili!aremos algunas funciones matemticas avan!adas
%seno, coseno y potencia( deberemos incluir la librera math. +dems
a7adiremos la definici"n de plugin para que use los parmetros, funciones
y constantes necesarias para la api de plugin.
#include Gmath.hE
#include !plugin.h!
+hora le daremos un nombre, 0qu me#or que smiley si eso es lo que
es1 -s conveniente siempre dar nombres que aseguren al usuario la
comprensi"n de lo que hace el plugin a la ve! que son cortos.
char name"$ %% !smiley!&
.ado que esto es un e#emplo sencillo y no queremos complicarnos la
vida, usaremos un nico subtipo de plugin. +qu podramos haber metido
tantos como posibles caras queramos tener, pero lo de#aremos en s"lo uno.
Le asignaremos el nombre smiley ya que no v a haber ms tipos.
#define )*+(,-./ 1
char stnames ")*+(,-./$"12$ % 3!smiley!8&
+hora definimos los parmetros que queremos que sean modificables
por el usuario, as como su presentaci"n en la interfa! de 4lender. -n
nuestro caso s"lo queremos que pueda #ugar con dos de ellos) el radio del
smiley y la boca. ,saremos un desli!ador %&slider' en ingls( para variar
esos tipos. Se me ocurre que tambin podramos haber usado un
interruptor %&toggle'( para la boca, pero con un desli!ador podemos dar un
mayor rango de valores.
Para el radio elegimos un valor de D a =, con D no habr cara, mientras que
con = sta ocupar todo. Para la boca pondremos valores ms peque7os, ya
que los usaremos a modo de tanto por ciento e inclumos valores negativos
y positivos para que exista tanto una cara sonriente como una cara triste.
Extendiendo Blender: Programando plugins de Texturas [ 247 ]
9ar/truct varstr"$ % 3
):;/=4H<=>5 !radio!5 1.@5 @.@5 1.@5 !radio de la cara!5
):;/=4H<=45 !boca!5 @.C5 -@.C5 @.C5
!altura del centro de la boca!
8&
+hora hay que decirle a 4lender con qu variables se correspondern
en nuestro c"digo. +provecho para recordar que deberemos pasrselas en
el mismo orden que en la definici"n de la interfa! par que blender no se lie.
typedef struct 6ast
3
float r6ara&
float aboca&
8 6ast&
Las dos variables siguientes las definimos para la compatibilidad con el
sistema de plugins de 4lender. -n result es donde se almacenarn los
datos a devolver. *osotros s"lo usaremos los de intensidad y color, pero
aun as hay que usar un array de C elementos. cfra lo definimos pero no lo
usaremos %es decir se quedar con valor D(.
float result"A$&
float cfra&
La siguiente parte es la parte que no vamos a tocas para nada. Ga que
no nos sirve de mucho.
int plugin+tex+doit (int5 6ast'5 float'5 float'5 float')&
int plugin+tex+getversion (void)
3
return 7+-=:D4)+9.*/4>)&
8
void plugin+but+changed(int but)
3
8
+hora toca rellenar la funci"n de iniciali!aci"n del plugin. 6omo
nuestra cara no necesita tener ningn valor iniciali!ado, de#aremos la
funci"n en blanco.
void plugin+init(void)
3
8
[ 248 ] Tecnologas Libres para Sntesis de Imagen 3D
La siguiente funci"n es bastante importante, ya que indica a 4lender la
manera de comunicarse. Si bien hemos usado los nombres que venan por
defecto en la estructura, aqu es donde habra que decirle si hemos usado
otros nombres en ve! de esos. Personalmente recomiendo seguir usando
estos nombres, ya que as se hace ms legilble para futuros desarrolladores
formando una especie de estndar consensuado.
void plugin+getinfo(-lugin4nfo 'info)
3
info-Ename%name&
info-Estypes% )*+(,-./&
info-Envars% siFeof(varstr)/siFeof(9ar/truct)&
info-Esnames% stnames"@$&
info-Eresult% result&
info-Ecfra% Icfra&
info-Evarstr%varstr&
info-Einit% plugin+init&
info-Etex+doit% ((exBoit) plugin+tex+doit&
info-Ecallback % plugin+but+changed&
8
-l siguiente tro!o de c"digo es el cora!"n y cerebro de nuestro plugin.
-s el que har todos los clculos y llamar a las funciones necesarias. ?e de
comentar que tiene un grave problema de dise7o, para aquellos que ya
hayan desarrollado ms cosas con anterioridad vern que este pseudoI
main no es modular, sino que reali!a l solito y por s mismo todos los
clculos. 6uan hubiera estado me#or separar el c"digo en tro!os ms
peque7os, invitando de esta manera a futuros desarrolladores a hacer
peque7as modificaciones y hacerles la vida ms c"moda posible. Pero
como esto no es un plugin pensado para su uso he preferido omitir el usar
algunas funciones tpicas de los lengua#es de shading as como el dividir la
estructura en tro!os. Jtra de las ra!ones por las que recomendara usar la
estructura en tro!os es para poder utili!ar el &antialiasing' de forma
c"moda. .e todas formas iremos anali!ndola poco a poco par que quede
todo claro.
Primero usaremos la definici"n anterior del &main' del plugin y definireI
mos las variables que vayamos a usar as como su iniciali!aci"n en caso de
ser necesaria.
int plugin+tex+doit(int stype5 6ast 'cast5 float 'texvec5 float
'dxt5 float 'dyt)
float cox5 coy5 cara5 boca5 rboca&
cara%cast-Er6ara&
boca%cast-Eaboca&
result"@$%1.@& //precolocamos la intensidad
result"#$%1.@& //evitamos transparencias
cox%texvec"@$&
coy%texvec"1$&
Extendiendo Blender: Programando plugins de Texturas [ 249 ]
,sando la f"rmula bsica del crculo comprobamos si el texel a tratar est
dentro o fuera.
if ((poJ(cox5) K poJ(coy5))GpoJ(cara5)) /' dentro de la cara '/
?e decidido dividir la cara en cuatro cuadrantes, para ello primero lo
divido en dos mitades
if (texvec"1$E%@.@) /' mitad superior '/
$ovemos la altura del pixel a un supuesto centro a la altura de los o#os.
coy%texvec"1$-(@.C'cara)&
+hora miramos en el lado al que est y modificamos la posici"n para
hacerla relativa al centro del o#o en la coordenada F segn corresponda.
if (texvec"@$ G% @.@) /' cuarto superior iFLuierdo '/
cox % texvec"@$ K (@.C'cara)& /' centro oMo iFdo. '/
else
cox % texvec"@$ - (@.C'cara)& /' centro oMo dcho. '/
6on la misma f"rmula del crculo, comprobamos si se est mirando
dentro del o#o o fuera de l. Si estamos dentro del o#o, asignaremos un
color negro y si estamos fuera, amarillo.
if((poJ(cox5) K poJ(coy5)) G poJ((@.C'cara)5)) /'dentro'/
3
result"1$%@.@& /'texel negro'/
result"$%@.@&
result"0$%@.@&
8
else /'fuera del oMo'/
3
result "1$%1.@& /'texel amarillo'/
result "$%1.@&
result "0$%@.@&
8
Si no estbamos en la mitad superior, quiere decir que estamos en la
inferior y por tanto s"lo hemos de preocuparnos de la boca. 6omprobamos
que la posici"n pertene!ca a la !ona de la boca, ya que si no el color a
tomar es bastante claro.
[ 250 ] Tecnologas Libres para Sntesis de Imagen 3D
else /'mitad inferior'/
3
if ((texvec"@$ E% -@.C'cara) II (texvec"@$ G% @.C'cara) II
(((texvec"1$ E% -@.C'cara) II (boca E%@)) HH
((texvec"1$G% -@.C'cara)II(bocaG%@))))
...
8
2gual que antes modificamos las coordenadas para ponerlas en base al
centro de la circunferencia que ser la boca.
coy % texvec"1$ K @.C'cara K @.C'boca&
cox % texvec"@$&
+hora ya solo queda por saber si estaremos dentro o fuera de ella.
6omo antes, si estamos dentro asignaremos un color negro y si estamos
fuera, ser amarillo.
if ((poJ(cox5) K poJ(coy5)) G% poJ(boca'cara5))
3
result"1$%@.@&
result"$%@.@&
result"0$%@.@&
8
else
3
result"1$%1.@&
result"$%1.@&
result"0$%@.@&
8
Si no estaba dentro del crculo de la cara, entonces pondremos el color
como transparente, para que se vea el color original del material.
else
3
result"#$%@.@& /' alfa al mNnimo '/
result"1$%@.@&
result"$%@.C&
result"0$%@.@&
8
3erminamos y salimos devolviendo el valor que indica que le
pasaremos los valores de intensidad y color.
return 1&
Extendiendo Blender: Programando plugins de Texturas [ 251 ]
6omo se puede apreciar, este plugin es nicamente para un primer
contacto con la interfa! de plugins, podra ser me#orable de muy diversas
formas)
Permitir la personali!aci"n de los colores o incluso admitir
me!clas.
,tili!ar splines para la definici"n de la boca permitiendo as una
mayor variedad de formas de la boca.
+ntialiasing.
Soporte de canales nor o displacement maps.
,tili!aci"n de otras primitivas para la definici"n de los elementos.
Jtros...
$otas y ms in%ormacin
6osas a tener en cuenta)
=. Las coordenadas ,KL usan un rango de coordenadas @MI=,=N@.
;. -s preferible estar abriendo y cerrando 4lender, ya que si no,
puede no cargar bien.
<. 6onviene tener un .blend con el plugin cargado. .e esta forma se
agili!a la visuali!aci"n de los resultados si se est abriendo y
cerrarndo 4lender.
O. +l asignar un color no debemos olvidarnos del canal alfa, ya que
en 6 las variables se iniciali!an a D y por tanto no veramos ms
que el color base del material del ob#eto.
La compilaci"n de plugins en LindoPs, se hace de manera distinta, ya
que la herramienta bmake se basa en el gcc de linux %el cual no est
disponible en PindoPs(. -n cambio los comandos a e#ecutar sern, aun
cuando no es seguro que funcionen al @=DDQ@.
cd c:OblenderOpluginsOtextureOsinus
lcc -lc:OblenderOpluginsOinclude sinus.c
lcclnk -B== sinus.obM c:OblenderOpluginsOincludeOtex.def
implib sinus.dll
+lgunos de los sitios de donde he sacado informaci"n y e#emplos de
plugins)
http://doJnload.blender.org/documentation/html4/c112@C.html
pagina de la documentaci"n oficial de 4lender.
http://JJJ.cs.umn.edu/Pmein/blender/plugins pagina con e#emI
plos y documentaci"n de plugins.
[ 252 ] Tecnologas Libres para Sntesis de Imagen 3D
El cdigo del lugin comleto
1 #include Gmath.hE
2 #include !plugin.h!
3
4 char name "$ % !smiley!&
5
6 #define )*+(,-./ 1
7
8 char stnames ")*+(,-./$"12$ % 3!smiley!8&
9
10 9ar/truct varstr"$%3
11 ):;/=4H<=>5 !radio!5 1.@5 @.@5 1.@5 !radio de la cara!5
12 ):;/=4H<=>5 !boca!5 @.C5 -@.C5 @.C5 !altura del centro
de la boca!8&
13
14 typedef struct 6ast
15 3
16 float r6ara&
17 float aboca&
18 8 6ast&
19
20 float result"A$&
21 float cfra&
22
23 /'''''''''''-arte fiMa '''''''''/
24 int plugin+tex+doit (int5 6ast'5 float'5 float'5 float')&
25 int plugin+tex+getversion (void)
26 3
27 return 7+-=:D4)+9.*/4>)&
28 8
29
30 void plugin+but+changed(int but)
31 3
32 8
33
34 void plugin+init(void)
35 3
36 8
37
38 void plugin+getinfo(-lugin4nfo 'info)
39 3
40 info-Ename%name&
41 info-Estypes% )*+(,-./&
42 info-Envars% siFeof(varstr)/siFeof(9ar/truct)&
43 info-Esnames% stnames"@$&
44 info-Eresult% result&
45 info-Ecfra% Icfra&
46 info-Evarstr%varstr&
47 info-Einit% plugin+init&
48 info-Etex+doit% ((exBoit) plugin+tex+doit&
49 info-Ecallback % plugin+but+changed&
50 8
Extendiendo Blender: Programando plugins de Texturas [ 253 ]
51 /'''''''''''<in parte fiMa '''''''''/
52
53 int plugin+tex+doit(int stype5 6ast 'cast5 float 'texvec5
float 'dxt5 float 'dyt)
54 3
55 float cox5 coy5 cara5 boca5 rboca&
56
57 cara%cast-Er6ara&
58 boca%cast-Eaboca&
59 result"@$%1.@& //precolocamos la intensidad
60 result"#$%1.@& //evitamos transparencias
61 cox%texvec"@$&
62 coy%texvec"1$&
63
64 if ((poJ(cox5) K poJ(coy5))GpoJ(cara5))
/'dentro de la cara'/
65 3
66 if(texvec"1$E%@.@) /'mitad superior'/ 3
67 coy%texvec"1$ - (@.C'cara)&
68 if (texvec"@$ G% @.@) /'cuarto superior iFLuierdo'/
69 cox%texvec"@$ K (@.C'cara)& /'centro oMo iFdo.'/
70 else
71 cox%texvec"@$ - (@.C'cara)& /'centro oMo dcho.'/
72 if((poJ(cox5) K poJ(coy5)) G poJ((@.C'cara)5))
/'dentro del oMo'/ 3
73 result"1$%@.@& /'texel negro'/
74 result"$%@.@&
75 result"0$%@.@&
76 8
77 else /'fuera del oMo'/ 3
78 result "1$%1.@& /'texel amarillo'/
79 result "$%1.@&
80 result "0$%@.@&
81 8
82 8
83 else /'mitad inferior'/ 3
84 if ((texvec"@$ E% -@.C'cara) II (texvec"@$
G% @.C'cara) II
85 (((texvec"1$ E% -@.C'cara) II (boca E%@)) HH
86 ((texvec"1$G% -@.C'cara)II(bocaG%@)))) 3
87 coy % texvec"1$ K @.C'cara K @.C'boca&
88 cox % texvec"@$&
89 if ((poJ(cox5) K poJ(coy5)) G%
poJ(boca'cara5)) 3
90 result"1$%@.@&
91 result"$%@.@&
92 result"0$%@.@&
93 8
94 else 3
95 result"1$%1.@&
96 result"$%1.@&
97 result"0$%@.@&
98 8
99 8
100
[ 254 ] Tecnologas Libres para Sntesis de Imagen 3D
101 else 3
102 result"1$%1.@&
103 result"$%1.@&
104 result"0$%@.@&
105 8
106 8
107 8
108 else 3
109 result"#$%@.@&/'alfa al minimo'/
110 result"1$%@.@&
111 result"$%@.C&
112 result"0$%@.@&
113 8
114 return 1&
115 8
Rediseo de Yafray: Parte 1. La luz
Alejandro Conty Estvez
aconty@gmail.com ::
a luz en yafray se descompone en una serie de elementos
en la escena llamados luces. La afirmacin parece trivial,
pero la singularidad reside en que no todos estos objetos
se corresponden con lo que intuitivamente llamaramos luz.
L
Estado actual
Antes de entrar en detalles, veamos el diseo de estos elementos. Cada luz
en yafray consiste en un objeto abstracto capaz de iluminar un punto de la
escena. Por ello, definimos un mtodo virtual llamado illuminate que toma
como argumento un punto de una superficie y devuelve el color reflejado
en una direccin concreta.
Para devolver el color reflejado, es necesario que la luz llame al shader
material! asignado a esa superficie. "ste es uno de los puntos confusos del
diseo sobre el que la gente a menudo pregunta. Parece poco intuitivo que
la llamada a los s#aders se delegue en las luces, por lo que volveremos
sobre este punto m$s adelante. Por lo dem$s, con este interfaz, la lgica del
cmputo de iluminacin queda oculta tras esos objetos.
[ 255 ]
D
e
s
a
r
r
o
l
l
o
[ 256 ] Tecnologas Libres para Sntesis de Imagen 3D
%e esta forma pod&amos separar el n'cleo del render del c$lculo de la
iluminacin. %efin&amos la implementacin de los distintos tipos de luces
en fic#eros separados sin que #ubiera m$s dependencia que el citado
interfaz. (n una fase posterior del desarrollo, estos tipos de luces fueron
separados a'n m$s lejos con un sistema de plugins. Al ser tipos abstractos,
slo #ab&a que preocuparse de la creacin de las instancias. A partir de ese
punto, el objeto se manejaba de forma annima y transparente.
Para la gestin de la creacin de objetos se usaron factor&as abstractas ver
patrn factory!. (l entorno de la escena dispon&a de una tabla de funciones
de construccin inde)adas por el tipo del objeto. *o slo para las luces,
tambin para los s#aders y fondos de escena. "stas funciones factor&a se
disearon con un prototipo como el siguiente+
1 light_t * light_factory_t(paramMap_t &params,
renderEnvironment_t &env);
%onde el par$metro ,params- guardaba toda la configuracin del
objeto a crear. .odas estas factor&as se inde)aron en una tabla por nombre
definida de la siguiente manera+
2 std::map<std::string,light_factory_t *> light_factories;
Rendiseo de Yafray: Parte 1 La l!" [ 257 ]
%e la misma forma se #izo para las te)turas, s#aders, etc ... Cuando un
plugin se carga, se llama a una funcin predefinida que ste #a de contener
y que se encarga de registrar las factor&as necesarias para todo lo que ste
contiene. /eamos un ejemplo de cdigo del plugin con los s#aders b$sicos+
3 void registerl!gin(renderEnvironment_t &render)
4 "
5 render#register$actory(%generic%,
generic&hader_t::factory);
6 render#register$actory(%constant%,
constant&hader_t::factory);
7 std::co!t<<%'egistered (asicshaders)n%;
8 *
Aqu& vemos como se registran las factor&as para los tipos de s#ader
,generic- y ,constant-. A partir de este momento, cuando el cargador
encuentra una sentencia )ml que ordena la creacin un s#ader del tipo
,generic- busca la factor&a en la tabla y la invoca d$ndole todos los
par$metros de la sentencia )ml. Como resultado devuelve un puntero a un
s#ader que se almacena en la escena para posterior uso.
/olvindonos a centrar en las luces, todo este sistema permiti crear de
manera independiente los tipos b$sicos de fuentes de luz sin tocar el
n'cleo. (n general es un sistema bueno que sigue funcionando bien para
los s#aders. (n las luces en cambio, no todo result tan bien. (l problema
fue que la definicin de luz era demasiado amplia. 0e entend&a como luz
cualquier cosa capaz de calcular la energ&a reflejada en una direccin sobre
un punto dado. %ebido a esto, ca&mos en el error de implementar mtodos
de iluminacin global como luces en la escena. "ste es un caso claro de
e)ceso de modularizacin, y es de estudio recomendado para todo el que se
proponga disear un programa de envergadura.
1os dos primeros casos fueron la hemilight y la photonlight. 1a primera
calculaba la luz proveniente del fondo de la escena y la segunda las
c$usticas proyectadas desde un punto cualquiera de luz.
(n ese momento, el concepto de luz se disolvi. 1as luces pasaron a ser
mtodos de iluminacin. (sto no #ubiera sido mayor problema de no ser
por la complejidad que alcanzaron ciertos mtodos de iluminacin. (n
concreto la ,luz- pathLight usa complejos c$lculos de iluminacin
indirecta, sistema de cac# e incluso c$usticas. Para ello llega a usar
incluso mapas de fotones que son creados por otra ,luz- independiente.
(sto crea una serie de dependencias molestas entre varias luces y el n'cleo
del render.
[ 258 ] Tecnologas Libres para Sntesis de Imagen 3D
Como se indica en el gr$fico, un supuesto mdulo de subsurface scattering
introducir&a a'n m$s dependencias. 1a 'nica forma de evitarlo ser&a
meterlo directamente dentro de la iluminacin global, #aciendo crecer la
pat#1ig#t a'n m$s. *inguna de las dos opciones es muy recomendable.
aloraci!n del estado actual
Ante esta situacin se pueden #acer las siguientes observaciones+
1os plugins pierden sentido en el momento que aparecen
dependencias camufladas y colisiones.
(l interfaz limitado con los plugins nos para de mejorar ciertos
algoritmos y de aadir nuevas caracter&sticas.
(l primer error viene de mezclar los conceptos de ,fuente de luz- y
,mtodo de iluminacin-. 1as fuentes de luz son posiciones, superficies o
vol'menes que emiten energ&a. 23u se espera de ellas4 .eniendo en
cuenta los algoritmos usados en yafray, lo que se necesita de una fuente de
luz se puede resumir en+
5uestrear la fuente desde un punto cualquiera.
5uestrear la fuente en cualquier punto de sta y en cualquier
direccin.
Rendiseo de Yafray: Parte 1 La l!" [ 259 ]
1a primera de las funciones est$ pensada para el raytracing desde el punto
de vista #acia las fuentes de luz, tambin conocido como raytracing
est$ndar. (n este proceso, para calcular la energ&a que llega a un punto se
usan tcnicas de montecarlo en las que se muestrea la fuente de luz para
cada punto visible desde la c$mara. 1as luces puntuales son un caso
particular de superficie nula en las que slo una muestra es necesaria. (n
general, asumimos que todas las fuentes de luz son muestreables.
(l segundo requisito es para poder llevar a cabo el p#oton mapping.
Cuando #acemos esto recorremos el camino inverso, desde las luces #acia
la escena. Por eso necesitamos una forma de obtener direcciones de
disparo de fotones.
"nteracci!n luz#s$ader
Al principio del desarrollo de yafray se part&a del principio de que una
fuente no puntual se muestreaba en diferentes direcciones y se llamaba al
s#ader por cada una de ellas. (sto se debe a que originalmente, el
resultado del s#ader depende no slo de la energ&a que llega sino tambin
de la direccin.
6no de los t&picos efectos que se consiguen con este sistema son las
,specular highlights-. 6n ,fake de una refle)in borrosa de una luz
puntual. 0in embargo, actualmente en yafray este mtodo no se usa
siempre. Por ejemplo en la iluminacin global, donde el entorno se
muestrea en la semiesfera tangente a la superficie. (n lugar de llamar al
s#ader para cada muestra, se calcula la energ&a total por separado y luego
se llama al s#ader. (sto evita #acer tantas llamadas, y el resultado es lo
suficientemente bueno como para que nadie se #aya quejado a'n.
1o interesante es que si seguimos este principio de calcular la energ&a por
separado y luego llamar al s#ader sin direccin alguna, el diseo se
simplifica. 3uitamos libertad al s#ader para #acer ciertos efectos. Pero
dado que las refle)iones se calculan en yafray por separado, el 'nico efecto
com'nmente usado que perdemos es el de los brillos especulares de luces
puntuales. *o #ay manera de simular este efecto por ninguna otra v&a, as&
que trataremos de poner alg'n aadido al diseo para conservarlas.
[ 260 ] Tecnologas Libres para Sntesis de Imagen 3D
Pro%uesta de diseo %ara fuentes de luz
0iguiendo la directiva anteriormente descrita de calcular la energ&a por
separado y asumir que el s#ader no tendr$ la libertad de #acer ning'n otro
tipo de c$lculo e)perimental, el interfaz de una fuente de luz se reduce a
calcular la energ&a que llega a un determinado punto.
Con esto nos a#orramos el #acer un sistema de muestreo de fuentes de luz.
A'n nos queda otro, el del mapeo de fotones, del que no podremos
des#acernos. Pero a#ora en vez de lanzar rayos en el n'cleo en direccin a
las fuentes, dejamos que sea la misma fuente la que #aga el c$lculo que
tenga que #acer.
Para el caso de luces puntuales para las que pueda ser interesante un
c$lculo de luz especular, pondremos un mtodo adicional que nos permita
conservar dic#a caracter&stica.
(l primer mtodo proporciona la manera est$ndar de calcular la cantidad
de luz que llega a una superficie. 1os par$metros son+
P+ (l punto en cuestin.
*+ 1a normal al plano tangente al punto.
*6 y */+ 1os dos vectores ortogonales que definen el plano
tangente.
scene+ 1a escena.
(l segundo de los mtodos es un mtodo Ad77#oc para las luces puntuales
que puedan provocar reflejos especulares de ellas mismas. (n el caso de
luces no puntuales, la manera correcta de calcularlo es con una refle)in
borrosa que se ver$ en una fase posterior de diseo.
Rendiseo de Yafray: Parte 1 La l!" [ 261 ]
(videntemente, esta decisin de diseo que limita la libertad de un s#ader
tiene un propsito. (l mtodo ,incoming(nergy- encapsula toda la tcnica
montecarlo, y podemos aplicar a#& sin que afecte al resto una tcnica de
aceleracin v&a #ard8are gr$fico. A continuacin veremos cuales son las
ideas detr$s de este concepto.
"lu&inaci!n &ontecarlo v'a (P)
()isten varias formas en las que podemos aprovec#ar el #ard8are gr$fico
para acelerar el render. 9ecordemos que #ay una fase de ,final gather- en
la que para cada punto de la escena visible disparamos rayos en la
semiesfera tangente. :acemos esto para simular una integral de toda la luz
que llega a ese punto. Al fin y al cabo no deja de ser un render estoc$stico
del entorno del punto que vamos a sombrear.
(l propsito de este proceso es el de sumar toda la luz entrante. *o es por
lo tanto necesario que la calidad de ese render local sea muy alta. (n
realidad lo 'nico importante es que el promedio de energ&a vista se
apro)ime a la real. Como es de esperar, para #acer un buen promedio es
necesario lanzar bastantes rayos ralentizando el render.
A#ora supongamos que disponemos de una forma de renderizar una
apro)imacin de la escena usando open;1 por ejemplo. 0e entiende que
esta apro)imacin usa la iluminacin del mapa de fotones mediante alg'n
truco como te)turas o colores en los vrtices. 0i disponemos de esta
caracter&stica, en lugar de lanzar todos esos rayos en la semiesfera
tangente, podemos simplemente #acer un render a baja resolucin usando
open;1.
1a idea es renderizar con un $ngulo muy abierto que apro)ime la
visibilidad de la semiesfera. 0upongamos que #acemos un render de
<==)<== pi)els y luego #acemos la suma ponderada de esos pi)els. 0er&a lo
equivalente a tomar <==== muestras por montecarlo est$ndar. 0lo que el
#ard8are lo #ar&a muc#&simo m$s r$pido. .eniendo en cuenta que el
m$)imo razonable de muestras en yafray viene a ser unas >=== ya que a
partir de a#& empieza a ser e)cesivamente lento, el poder tomar <====
muestras de golpe es sin duda un empujn bastante grande.
Adem$s, no slo este proceso puede beneficiarse del #ard8are, tambin el
render de refle)iones borrosas, luces de $rea y cualquier otra cosa que
pueda funcionar con una apro)imacin de la escena. (n estos casos
particulares lo que se #ar$ es renderizar con un cono pequeo en lugar de
usar uno de <?= grados.
[ 262 ] Tecnologas Libres para Sntesis de Imagen 3D
Como se ve en el diagrama, siempre podemos tener ambas alternativas
presentes. (l render apro)imado por #ard8are o el de calidad. Podemos
elegir uno u otro a voluntad seg'n los requisitos de calidad.
*areas a co&%letar
Para poder llegar a esto es necesario resolver los siguientes problemas+
9ecorrer el $rbol @0P con un cono en lugar de un rayo.
Poder renderizar en open;1 con un cono de <?= grados sabiendo
que $ngulo corresponde a cada pi)el del resultado.
Poder renderizar tri$ngulos con la informacin de color del mapa
de fotones.
(l 'ltimo problema podemos aplazarlo ya que podemos avanzar dando
pasos previos con sistemas de iluminacin menos ambiciosos como #ace la
,#emi1ig#t-.
Para evitar volcar todos los tri$ngulos de la escena en cada uno de esos
renders locales, vendr&a bien poder escoger aquellos que caigan dentro del
cono en el que vamos a renderizar. :asta a#ora cuando traz$bamos un
rayo, recorr&amos los tri$ngulos de la escena usando el $rbol binario @0P.
(so evita tener que comprobarlos todos. A#ora queremos #acer lo mismo
pero usando un cono en lugar de un rayo.
Rendiseo de Yafray: Parte 1 La l!" [ 263 ]
Afortunadamente este algoritmo es bastante sencillo y se puede alcanzar
con algunas modificaciones sobre el algoritmo original para rayos.
Aadiendo este mtodo e)tra de recorrido al $rbol ya tenemos una forma
sencilla de esquivar los tri$ngulos que no nos interesan.
(n cuanto al segundo problema es slo una cuestin de estudiar la
proyeccin usada en open;1 o el sistema que vayamos a usar. Para separar
la interaccin con el APA de open;1, crearemos una clase de driver gr$fico.
(n lugar de usar open;1 directamente para el renderizado, lo #aremos a
travs de este interfaz. (n la siguiente seccin veremos como podr&a ser.
Driver (P)
1a funcionalidad que esperamos del #ard8are gr$fico no es muc#a.
0implemente querremos dibujar tri$ngulos con un color o te)tura
opcionalmente. (l render se #ar$ siempre sobre un buffer arbitrario.
/eamos el interfaz propuesto+
[ 264 ] Tecnologas Libres para Sntesis de Imagen 3D
1a primera funcin, ,renderCone- se llamar$ al principio del render local
para elegir el cono de visin y el buffer donde se pondr$ el resultado.
%esp'es se podr$n usar el resto de funciones para pintar tri$ngulos con un
color plano o con una te)tura. Para las te)turas, ser$ responsabilidad del
driver el mantener una tabla de correspondencias entre las te)turas que el
llamante est$ usando y las que vaya creando en el espacio del #ard8are
gr$fico.
Como vemos, se define un interfaz genrico de render simple del que luego
derivamos a la implementacin espec&fica de open;1. 0eguramente no
usaremos otra cosa para renderizar v&a #ard8are, pero de esta forma
centralizamos el uso del APA y descontaminamos el resto del cdigo.
()iste un problema adicional en el uso del #ard8are. Bafray contempla la
posibilidad de renderizar con #ilos en varias CP6Cs. :ay que evitar que
varios #ilos accedan al #ard8are de manera concurrente. Afortunadamente
open;1 trabaja con conte)tos que se pueden intercambiar.
Rendiseo de Yafray: Parte 1 La l!" [ 265 ]
(n yafray, cada #ilo de renderizado posee un conte)to que nada tiene que
ver con el de open;1. (n este conte)to se guarda informacin de inters
que es espec&fica de cada #ilo, como+
Dltimo objeto intersecado.
Profundidad de render.
Contribucin actual al pi)el que se est$ renderizando.
etc ...
1o mejor que podemos #acer es introducir un driver ;P6 en cada uno de
estos conte)tos. %e esta forma no se pisar$n unos #ilos a otros. 0uponemos
que el mismo driver se ocupa de crear su propio conte)to open;1.
+Por d!nde e&%ezar,
Antes de meternos directamente con la iluminacin global total por
#ard8are, conviene abordar problemas relajados relacionados con la
misma. 0i conseguimos #acer que funcione para los siguientes casos ya
tenemos una gran parte del problema resuelta.
(P) $e&ili-$t
/eamos como podr&amos calcular la iluminacin que llega desde el
fondo de la escena usando la ;P6. (l mtodo de funcionamiento de la
#emilig#t consiste en disparar rayos en una semiesfera tangente al punto
de interseccin. 0i estos rayos golpean alg'n objeto se asume que son rayos
de sombra y su contribucin es nula. %e otra forma alcanzan el fondo y los
contamos como una contribucin de luz positiva. 6samos el color del cielo
como valor de contribucin. Ba que estos son los primeros pasos,
asumiremos que el color del cielo es constante. 5$s adelante se puede
contemplar como #acer que podamos tener una te)tura de cielo o incluso
un mapa :%9.
Para que una escena de cielo abierto tenga una acabado de calidad
aceptable es necesario lanzar un n'mero de muestras alrededor de >==. 0i
bajamos este n'mero empieza a aparecer ruido en torno a las sombras.
(videntemente este mtodo es costoso. 1o que se propone aqu& es evitar
ese proceso de lanzar >== rayos. Para ello podemos intentar renderizar
una apro)imacin del cielo visible desde dic#o punto con la ;P6. %ado
que la contribucin de los objetos a la luz es completamente nula, el
proceso es sencillo. /eamos el siguiente pseudocdigo+
[ 266 ] Tecnologas Libres para Sntesis de Imagen 3D
9 ++ ,> p!nto de interseccion
10 ++ - ,> normal a dicho p!nto
11
12 gp!driver,>render.one(cone_t(,-,/01),(!ffer);
13 gp!driver,>clear((ac2gro!nd_color);
14
15 for each o(3ect in cone_t(,-,/01):
16 "
17 for each o(3ect face in cone_t(-,/01):
18 gp!driver,>p!t4riangle(face#a, face#(, face#c,
color_t(1));
19 *
20
21 gp!driver,>fl!sh();
22 color_t light51;
23 for each pi6el in (!ffer:
24 "
25 contri5cos(angle(pi6el,-));
26 light75contri*pi6el;
27 *
28
29 ret!rn light+(!ffer#n!mi6els;
Como se ve, lo que #acemos es primer rellenar el buffer con el color del
fondo. Acto seguido, lo que #acemos es pintar todos los tri$ngulos de la
escena de color negro. (l resultado es un buffer en el que tenemos el cielo
que puede verse desde ese punto. 0i #acemos una media de todos los
pi)els, tenemos una apro)imacin de la luz que llega desde el cielo.
(l problema de este mtodo es que apro)imadamente m$s de la mitad de
las caras presentes en la escena tienen que volcarse para #acer el render.
Cuando el n'mero de caras en la escena es muc#o mayor que el n'mero de
rayos necesarios para conseguir un resultado libre de ruido, es de esperar
que la tarjeta gr$fica lo #aga m$s r$pido que un mtodo de raytracing. (l
problema est$ en lo que pasa cuando el n'mero de caras es muy elevado.
(n ese caso #abr&a que e)perimentar que es m$s r$pido+
<. 1anzar E== rayos contra F===== caras.
>. :acer un render de >=)>= de F===== caras.
(s de esperar que < sea m$s r$pido, sobre todo si dejamos crecer el
n'mero de tri$ngulos de manera descontrolada. Pero #abr&a que
comprobar donde est$ el l&mite. .ambin cabr&a estudiar si se podr&a
trabajar con versiones decimadas de la escena. (n resumen, el render de
escenas con esta iluminacin en la ;P6 es algo a e)perimentar.
Rendiseo de Yafray: Parte 1 La l!" [ 267 ]
(P) s%$ereli-$t
Cuando la fuente de luz deja de ser algo tan grande como un cielo, las
e)pectativas en cuando a usar la ;P6 mejoran. 0i nuestra fuente de luz es
una esfera de pequeo tamao como podr&a ser una l$mpara o una
bombilla grande, el cono a renderizar disminuye.
Ba no es necesario volcar la mitad de los tri$ngulos de la escena. 0lo
aquellos que estn dentro del cono que une el punto a sombrear con la
esfera que act'a de fuente de luz. (n un punto alejado de sta, el n'mero
de tri$ngulos implicados es de esperar que se apro)ime al n'mero de
muestras que queremos tomar o incluso que sea inferior.
Aqu& es donde realmente nos podemos beneficiar del #ard8are gr$fico. 6n
render de escasos pol&gonos ser&a muc#o m$s r$pido que lanzar <== rayos
contra la escena. (n casos como estos podr&amos permitirnos el lujo de
tomar renders de <==)<==, equivalente a <==== muestras. /eamos un
cdigo de ejemplo+
30 ++ ,> p!nto de interseccion
31 ++ - ,> normal a dicho p!nto
32 ++ . ,> centro de la esfera
33 ++ ' ,> radio de la esfera
34
35 ang!lo5atan('+distance(.,));
36 direccion5.,;
37 gp!driver,>render.one(cone_t(,direccion,ang!lo),
(!ffer);
38 gp!driver,>clear(color_t(1));
39 for each face in esfera:
40 gp!driver,>p!t4riangle(face#a, face#(, face#c,
color_esfera);
41
42 for each o(3ect in cone_t(,direccion,ang!lo):
43 "
44 for each o(3ect face in cone_t(,direccion,ang!lo):
45 gp!driver,>p!t4riangle(face#a, face#(, face#c,
color_t(1));
46 *
47
48 gp!driver,>fl!sh();
49 color_t light51;
50 for each pi6el in (!ffer:
51 "
52 contri5cos(angle(pi6el,-));
53 light75contri*pi6el;
54 *
55
56 ret!rn 8*light+((!ffer#n!mi6els*M_9);
[ 268 ] Tecnologas Libres para Sntesis de Imagen 3D
(l render se #ace siempre sobre buffers cuadrados, dado que el elemento
emisor renderizado sobre l es un c&rculo, quedan puntos en negro que
debemos ignorar. (l factor EGH del cmputo final se aplica para compensar
esos puntos que en principio estamos contando como sombra cuando no lo
son. Itra forma m$s eficiente ser&a esquivar de la suma esos puntos. 0e #a
puesto as& por #acer el cdigo m$s sencillo.
(ste mismo mtodo podr&a usarse para calcular refle)iones borrosas. (sto
es com'nmente llamado ,conetracing-, y sigue el mismo esquema el
mtodo de la esfera. 1a diferencia es que para tal cosa necesitar&amos una
apro)imacin de la escena que incluya la iluminacin, no servir&an caras
negras sin m$s.
(P) a&.ient occlusion
"ste es otro mtodo que podr&a beneficiarse ampliamente del #ard8are
gr$fico. (l ambient occlusion es un sistema muy parecido a la #emilig#t. 1a
diferencia es que slo se tienen en cuenta los tri$ngulos que est$n a una
distancia menor a un radio predefinido.
(s una forma de estimar la cantidad de luz ambiente que llega a un punto
de la escena. %ado que ignora todo lo que est m$s all$ de cierto radio. Por
este motivo es a'n m$s falso de lo que produce la #emilig#t. *o obstante,
este mtodo goza de gran popularidad entre los usuarios de @lender. %ado
que el n'mero de tri$ngulos a volcar en el render est$ limitado por el radio
predefinido, no sobrecargamos el #ard8are tanto como #acemos con la
#emilig#t.
Rendiseo de Yafray: Parte 1 La l!" [ 269 ]
(l cdigo apro)imado ser&a parecido al siguiente+
57 ++ ,> p!nto de interseccion
58 ++ - ,> normal a dicho p!nto
59 ++ ' ,> radio de occl!sion
60
61 gp!driver,>render.one(cone_t(,-,/01),(!ffer);
62
63 for each o(3ect in esfera(,'):
64 "
65 for each o(3ect face in esfera(,'):
66 gp!driver,>p!t4riangle(face#a, face#(, face#c,
color_t(1));
67 *
68
69 gp!driver,>fl!sh();
70 float occl!sion5;
71 for each pi6el in (!ffer:
72 "
73 occ5depth(pi6el)+';
74 if(occ>/) occl!sion75/; else occl!sion75occ;
75 *
76
77 ret!rn am(ient_color*occl!sion+(!ffer#n!mi6els
0e calcula la oclusin media en base a las distancias a los objetos que est$n
en ese radio. (l resultado se multiplica por el color de la luz ambiente y se
devuelve. *tese que asumimos que el driver gr$fico nos puede
proporcionar la profundidad de cada pi)el renderizado.
Conclusi!n
Con este diseo del interfaz de las fuentes de la luz podemos implementar
el c$lculo de la energ&a en un punto de manera independiente. (sto es lo
que permite plantearse el usar el #ard8are gr$fico para estimar estas
energ&as y a#orrar cmputo. (s posible que todo esto sea un esfuerzo en
vano. (ste documento no pretende ser m$s que un compendio de ideas a
tener en cuenta para el futuro del desarrollo de yafray.
[ 270 ] Tecnologas Libres para Sntesis de Imagen 3D
Modelado 3D basado en Bocetos
Inmaculada Gijn Cards
Carlos Gonzlez Morcillo
inmagijon@gmail.com Carlos.Gonzalez@uclm.es ::
a fase de modelado de en proyectos 3D es dificil y tediosa
en muchos casos, ms an cuando son necesarias
superficies orgnicas. !n la mayor"a de las ocasiones, se
parte de una primiti#a y, aplicando transformaciones
geom$tricas, se o%tiene el o%jeto deseado.
&
Este proyecto presenta un prototipo de sistema que utiliza los trazos
dibujados por el usuario para construir directamente una superficie
tridimensional implcita. Nuestra aproximacin difiere de las propuestas
en trabajos previos (como Teddy de Takeo !aras"i# en que es un enfoque
!eneral y que implementa$ con la misma aproximacion$ la creacion de
nuevos objetos y la operacion de extrusion (positiva y ne!ativa#.
Introduccin
%a forma !eneral de construir objetos mediante modelado slido es
comenzar mediante una primitiva y$ empleando operadores y
transformaciones$ construir un modelo modificado. En una primera
clasificacin$ podemos "ablar de modelado poli!onal y modelado basado
en superficies curvas.
&esde principios de los '( se "an desarrollado t)cnicas que permiten la
construccin de modelos or!*nicos de una forma r*pida$ como las
superficies de subdivisin que comienzan con una Malla de Control que es
subdividida recursivamente para obtener un resultado suave denominado
Superficie Lmite.
+tra aproximacin es el uso de superficies implcitas (con trabajos previos
en la construccin de una superficie que cubre un esqueleto#. Nuestra
aproximacin se basa en la silueta dibujada por el usuario. En la fi!ura , se
muestra el interfaz de usuario del prototipo denominado -o.k.
(-odellin! from .ketc"es mplicit .urfaces#. En esta fi!ura se calcula la
espina dorsal del modelo que se emplea para situar las meta/elipses que
formar*n nuestro modelo.
[ 271 ]
D
e
s
a
r
r
o
l
l
o
[ 272 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 1. Interfaz de usuario del prototipo MoSkIS 3D.
Creacin de un objeto
0 continuacin se "ace una descripcin del al!oritmo que -o.k. 1&
desarrolla para llevar a cabo la !eneracin de un objeto 1& a partir de un
trazo libre realizado por el usuario.
Construccin de la silueta
El usuario dibuja un contorno mediante un trazo libre$ el cual debe ser
cerrado y no producir intersecciones consi!o mismo$ ya que en este caso el
al!oritmo fallara.
0 partir de este trazo se !enera un pol!ono plano cerrado mediante la
conexin del punto de comienzo y del punto final del trazo. .e identifican
las aristas de este pol!ono mediante el *n!ulo mnimo que es requerido
entre aristas consecutivas para crear una nueva arista.
Modelado 3D basado en Bocetos [ 273 ]
Figura 2. zqda2 Vrtices convexos a trianularizar.
&rc"a2 Divisi!n del polono en dos.
Este par*metro es decidido por el usuario$ al cual se le permite la opcin de
seleccionar el nivel de detalle con el que se construir* dic"o pol!ono. 0
m*s detalle$ m*s v)rtices y m*s coste computacional pero m*s exactitud en
el objeto final obtenido.
El pol!ono que es !enerado a partir de este contorno dibujado$ servir*
como silueta del objeto 1& obtenido.
Obtencin de la superficie
0 la "ora de obtener una superficie (compuesta de tri*n!ulos# a partir
del pol!ono !enerado (ver fi!ura 1 drc"a# se realizan los si!uientes pasos2
1. Triangularizacin bsica2 se realiza identificando sucesivamente
los v)rtices convexos del pol!ono$ concretamente cuatro$ que son sobre los
que se tiene la se!uridad de ser convesos$ ya que la fi!ura puede ser tan
complicada$ que de lu!ar a errores f*cilmente en esta identificacin. %os
v)rtices convexos de un pol!ono con toda se!uridad$ son los situados en
los extremos$ tanto del eje 3$ como del eje 4$ es decir$ el v)rtice superior$ el
v)rtice inferior$ el v)rtice situado m*s a la derec"a y el v)rtice situado m*s
a la izquierda. 5ara cada uno de estos v)rtices se eval6a si es posible el
trazado de la arista interna que va a formar un tri*n!ulo con las dos aristas
que comparten el v)rtice detectado$ y si es posible la construccin de dic"o
tri*n!ulo$ ese v)rtice es eliminado del proceso de trian!ularizacin junto
con las dos aristas que comparte$ al estar ya trian!ularizada esa zona$ con
lo cual$ el problema se va reduciendo.
5ara que se lleve a cabo la construccin del tri*n!ulo$ la arista interna a
construir no puede cortar a nin!una otra arista del pol!ono (ver fi!ura 7
zqda.#$ es decir$ no puede existir nin!6n v)rtice del pol!ono dentro del
*rea del tri*n!ulo a construir ya que en ese caso la la trian!ularizacin
sera errnea.
[ 274 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 3. zqda2 "lip de arista ileal.
&rc"a2 #esultado de Delauna$ con la cataloaci!n de los tres tipos de tri%nulos.
0 la "ora de construir un tri*n!ulo$ se tiene que ase!urar que la arista no
corta a nin!una otra arista del pol!ono (ver fi!ura 7 zqda.#$ es decir$ que
no "ay parte del pol!ono dentro de la superficie del tri*n!ulo a construir$
ya que en ese caso$ se alterara la fi!ura al no !enerar los tri*n!ulos en la
superficie que encierra el pol!ono.
8omo se puede ver en la fi!ura 7 zqda.$ no sera v*lida la arista interna
que se ve punteada en el v)rtice superior. 5ara solucionar esta situacin$ se
traza una arista interna que va desde este v)rtice "asta el m*s prximo a )l
de los que permanecen en interior del tri*n!ulo que se pretenda formar.
Esta arista divide el pol!ono en dos (ver fi!ura 7 &rc"a.# y de esta forma
se si!ue aplicando una trian!ularizacin b*sica a cada uno de los pol!onos
(se divide el problema#.
En la fi!ura 7 &rc"a. se observa tambi)n que el v)rtice inferior detectado
en el pol!ono 57$ aunque sea convexo y no conten!a parte del pol!ono en
el *rea que del tri*n!ulo a trazar$ c"oca con otra arista interna de la
trian!ularizacin$ este caso nunca se da porque si ya se "a trazado la arista
interna para formar un tri*n!ulo con las aristas que comparten el v)rtice
situado m*s a la izquierda$ este v)rtice y aristas se "an eliminado del
proceso de trian!ularizacin$ con lo cual$ la arista v*lida es la que vemos en
color rojo.
&e esta forma queda trian!ularizada toda la superficie limitada por el
pol!ono cerrado !enerado.
.e denominan aristas externas$ a las aristas que definen el pol!ono o
silueta !enerada y aristas internas$ a las aristas que "an sido !eneradas
mediante trian!ularizacin (ver fi!ura 1 &rc"a#.
2. Delaunay2 a la trian!ularizacin b*sica !enerada$ se le aplica la
optimizacin de &elaunay$ consistente en la identificacin y sustitucin de
aristas internas ileales por aristas internas leales.
Modelado 3D basado en Bocetos [ 275 ]
Figura 4. &spina Dorsal.
9na arista es leal cuando maximiza el *n!ulo mnimo del tri*n!ulo
formado$ y es ileal en caso contrario. .i se identifica una arista ileal$ se
realiza un !iro (tambi)n denominado flip# de esa arista$ por la opuesta en
el cuadril*tero formado por los dos tri*n!ulos que comparten dic"a arista.
&e esta forma se ase!ura que la superficie del pol!ono quede repartida
mediante tri*n!ulos de la forma m*s "omo!)nea posible (ver fi!ura 1
zqda.#.
%os tri*n!ulos !enerados a partir de la trian!ularizacin se pueden
catalo!ar como (ver fi!ura 1 &rc"a.#2
T-triangles2 compuestos de dos aristas externas.
S-triangles2 compuestos de una arista externa.
J-triangles2 compuestos de tres aristas internas.
Deteccin y elevacin de la espina dorsal
9na vez !enerado el plano$ se procede a detectar la espina dorsal
(spine# de )ste. 5ara ello se detectan los puntos principales del eje mediano
de la forma inicial$ a lo que llamaremos puntos de conexi!n de la espina
dorsal. %a unin meidante aristas de estos puntos de conexin me dan la
espina dorsal del plano que representa la silueta del objeto.
Estos puntos de conexin se calculan recorriendo cada uno de los tri*n!u/
los que forman el plano y analizando cada uno de ellos como se explica a
continuacin (ver fi!ura :#2
T-triangle2 se detecta un punto de conexin en el centro de la
arista interna del tri*n!ulo. Este punto tambi)n ser* detectado al
evaluar el otro tri*n!ulo que comparte esta misma arista interna$ y
si es un ./trian!le o un ;/Trian!le unir* este punto de conexin
con el que corresponda se!6n se explica a continuacin.
[ 276 ] Tecnologas Libres para Sntesis de Imagen 3D
S-triangles2 se detectan dos puntos de conexin$ uno por cada
una de las aristas internas del tri*n!ulo y ser*n situados en el
centro de cada arista. Estos dos puntos de conexin ser*n unidos
por una arista para formar la espina dorsal.
J-triangles2 se detectan cuatro puntos de conexin$ uno por cada
una de las aristas internas$ situados cada uno en el punto medio de
las correspondientes aristas$ y un punto de conexin situado en el
centro del tri*n!ulo. 8ada punto de conexin pertenecientes a las
aristas internas ser*n unidos mediante una arista de la espina
dorsal al punto de conexin del centro del tri*n!ulo.
9na vez que todos los puntos de conexin "an sido unidos mediante
aristas formando la espina dorsal del plano$ se procede a la elevacin de la
espina (ver fi!ura <#.
El problema es computar la distancia desde la espina dorsal al lmite del
pol!ono. %o ideal es construir secciones representativas exactas de la
forma$ en cada uno de los v)rtices de la espina dorsal$ cuyo coste es
bastante elevado. 5or ello se calcula$ para cada punto de conexin$
dependiendo de si est* asociado a una arista interna o est* situado en el
centro de un tri*n!ulo.
5ara el caso en el que los puntos de conexin sean punto medio de
aristas internas$ se calcula un promedio de las distancias entre los
puntos de conexin y los v)rtices externos (cualquier v)rtice del
plano# que est*n conectados directamente a ese v)rtice$ y esa ser*
la altura de ese punto de la espina.
5ara el caso en el que los puntos de conexin son el punto central
de un ;/trian!le$ se calcula como promedio de las distancias de
elevacin de los puntos de conexin directamente conectados a
)ste.
Figura 5. &levaci!n de la espina dorsal.
Modelado 3D basado en Bocetos [ 277 ]
Figura 6. zqda2 Dimensiones ' e ( $ orientaci!n de cada metaelipse.
&rc"a2 Dimension ) de cada metaelipse.
Obtencin del volumen mediante metasuperficies
%a obtencin del volumen se realiza a=adiendo para cada v)rtice o
punto de conexin de la espina dorsal un metaelemento$ concr)tamente
una metaelipse con una dimensin y orientacin determinada (ver fi!ura
>#.
%a dimensin X de cada metaelipse se corresponde para el caso
en el que su punto de conexin asociado es el punto medio de una
arista interna$ con la lon!itud de dic"a arista interna? si por el
contrario$ el punto de conexin asociado se corresponde con el
punto medio de un ;/trian!le$ la dimensin 3 se corresponde con
la lon!itud media de las bisectrices del ;/trian!le.
%a dimensin Y de cada metaelipse se corresponde con la
distancia media desde ese punto de conexin al resto de puntos de
conexin directamente conectados al mismo.
%a dimensin Z de cada metaelipse se corresponde con el doble
de la altura de la espina en el punto de conexin asociado a la
metaelipse$ ya que la fi!ura resultante va a ser sim)trica$ y tendr*
una componente @ positiva de valor el de la altura de la espina y
una componente @ ne!ativa del mismo valor absoluto (ver fi!ura >
&rc"a.#.
8on este al!oritmo se obtiene una malla 1& creada a partir de la unin
de esas metaelipses a=adidas$ consi!uiendo el objeto 1& con las
dimensiones correspondientes a la forma inicial pintada por el usuario.
[ 278 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 7. zqda2 Metaelipses de dimensi!n fi*a $ reducida.
&rc"a2 Metaelipses a lo laro del e*e ).
Mejoras en la obtencin del volumen
En la !eneracin del objeto 1& se!6n el al!oritmo de !eneracin de
volumen especificado en el apartado anterior sur!en dos problemas
principales2
8uando en la !eneracin de la espina dorsal$ aparecen por ejemplo
dos puntos de conexin muy distantes$ pero que a sus otros lados
respectivamente tienen puntos de conexin muy cercanos$ como la
dimensin 4 que se establece para cada metabola es la media de
las distancias$ pueden aparecer "uecos o cavidades en la malla 1&
del objeto resultante debido a la falta de metaelementos en esa
zona.
En al!unas fi!uras creadas por el usuario$ se identifican saltos
bruscos entre las metasuperficies$ cuando en realidad$ no se deba
poder identificar visualmente cada metasuperficie$ sino que se
debera obtener una malla suavizada como resultado del trazo
realizado ori!inariamente por el usuario. Estos saltos son m*s
destacados a cu*nto menor es el nivel de detalle. 0 mayor nivel de
detalle en la !eneracin del pol!ono a partir del trazo del usuario$
m*s v)rtices otenemos$ por lo tanto m*s tri*n!ulos son !enerados
en la trian!ularizacin y m*s puntos de conexin obtendremos en
la construccin de la espina dorsal$ con lo cual las dimensiones de
los metaelementos cambian de uno a otro m*s pro!resivamente.
%a solucin a estos problemas pasa por la creacin de metaelipses de
dimensiones fijas reducidas$ en vez de una por cada punto de conexin de
la espina dorsal$ crear las necesarias para cubrir todas las dimensiones (ver
fi!ura A zqda.#.
Modelado 3D basado en Bocetos [ 279 ]
.e sit6an metaelipses con dimensiones fijas y reducidas a lo lar!o
de cada arista interna.
.e sit6an metaelipses a lo lar!o de la mayor bisectriz de cada ;/
trian!le.
.e sit6an metaelipses a lo lar!o del eje de la espina dorsal$ y cada
cierta distancia$ en ausencia de aristas internas$ se crear*n aristas
internas ima!inarias$ con el mismo comportamiento que el citado
anteriormente para la situacin de metaelipses. 8on esta decisin$
se evita la !eneracin de "uecos indeseados en el objeto 1&
!enerado.
.e sit6an metaelipses cubriendo la distancia media desde el punto
de conexin con los puntos conectados directamente.
.e sit6an metaelipses a lo lar!o del eje @ cubriendo la altura de la
espina dorsal$ estableciendo una altura incremental desde la altura
de un punto de conexin al si!uiente. 0s evitamos escalones
bruscos en la malla 1& !enerada.
8omo se puede ver en la fi!ura A &rc"a.$ (la fi!ura "a sido simplificada
vi)ndose 6nicamente metaelipses a lo lar!o de la espina dorsal para mayor
claridad#$ se muestra "asta dnde lle!aran las metaelipses a lo lar!o del
eje @$ estableciendo como se "a dic"o anteriormente un promedio entre la
posicin (en el eje @# de las que est*n situadas en la posicin de los puntos
de conexin que las limitan.
l!oritmo de e"trusin
0 continuacin se describe el al!oritmo para la ejecucin de la operacin
de extrusin sobre un objeto 1& previamente creado. Este al!oritmo a6n se
encuentra en desarrollo en el sistema -+.B.1&.
#razo del usuario
En primer lu!ar$ el usuario realiza un trazo seleccionando la superficie
del objeto 1& a extruir$ ese trazo$ tambi)n llamado trazo +ase$ debe formar
una superficie cerrada. 0 continuacin$ realiza otro trazo$ llamado trazo de
extrusi!n$ con la forma que desea conse!uir con la operacin (ver fi!ura C
zqda.#.
El al!oritmo de extrusin$ crea una nueva malla 1& basada en el trazo
+ase creado por el usuario y en el trazo de extrusi!n.
[ 280 ] Tecnologas Libres para Sntesis de Imagen 3D
Figura 8. zqda2 ,razos del usuario al realizar la operaci!n de extrusi!n.
&rc"a2 -olono trianularizado.
El usuario puede desear una extrusi!n positiva$ es decir$ una prolon/
!acin del objeto 1& "acia el exterior si!uiendo la forma del trazo realiza/
do? o una extrusi!n neativa$ es decir$ una concavidad en el interior del
objeto 1& con la forma indicada (ver fi!ura C zqda.#.
0 partir del trazo +ase$ se construye un pol!ono plano cerrado con el
mismo nivel de detalle que el establecido para la !eneracin del objeto 1&
previo.
0 partir del trazo de extrusi!n$ tambi)n se !enera un pol!ono plano$ pero
abierto$ que tendr* el mismo nivel de detalle que en el caso anterior (ver
fi!ura C &rc"a.#.
#rian!ularizacin y !eneracin de la espina
9na vez obtenido el pol!ono del trazo base$ se procede a la trian!ulari/
zacin de ese pol!ono cerrado$ al i!ual que se "aca en el caso de creacin
de un objeto nuevo. 5rimero se trian!ulariza mediante un al!oritmo de
trian!ularizacin b*sica y a continuacin se procede a una optimizacin
por &elaunay (ver fi!ura 1 &rc"a#.
9na vez trian!ularizado el trazo base$ se tiene una superficie compuesta de
los tres tipos de tri*n!ulos citados anteriormente T/trian!les$ ;/trian!les y
./trian!les (ver fi!ura 1 &rc"a#.
En este momento$ se calcula la espina dorsal del plano !enerado a partir
del trazo base$ evaluando cada uno de los tri*n!ulos como se "aca en la
deteccin de la espina para el caso de creacin de un objeto nuevo (ver
fi!ura :#$ obteniendo una serie de puntos conectados formando el eje
central de la superficie seleccionada por el usuario$ es decir$ la superficie a
extruir.
Modelado 3D basado en Bocetos [ 281 ]
Figura 9. zqda2 ,razo +ase trianularizado $ espina dorsal detectada.
&rc"a2 .nillos de extrusi!n.
En la creacin de un objeto nuevo$ el si!uiente paso era la elevacin de
la espina dorsal mediante el c*lculo de un promedio en cada uno de los
puntos de conexin de la espina. En el al!oritmo de extrusin$ por el
contrario$ no se quiere crear un objeto 1& a partir de la forma creada por el
usuario como trazo base$ sino extruir esa forma a lo lar!o del trazo de
extrusin$ por lo que no tiene sentido el c*lculo del objeto 1& asociado a
esa forma$ y por tanto$ no tiene sentido el paso de elevacin de la espina
dorsal (ver fi!ura ' zqda.#.
Generacin de la e"trusin
9na vez obtenido el plano correspondiente al trazo +ase/ y la espina
dorsal de dic"o plano$ se procede a rellenar el plano con metaelipses.
.e sit6an metaelipses con dimensiones fijas y reducidas a lo lar!o de cada
arista interna$ para cada tri*n!ulo$ y para el caso en el que se ten!a un ;/
trian!le se sit6an metaelipses a lo lar!o de la mayor bisectriz del tri*n!ulo.
5ara evitar la !eneracin de "uecos indeseados$ se sit6an metaelipses a lo
lar!o del eje de la espina dorsal$ y cada cierta distancia$ si no existen aristas
internas$ se crear*n ima!inarias$ con el mismo comportamiento. Tambi)n
se sit6an metaelipses cubriendo la distancia media entre el punto de
conexin y los puntos conectados directamente a este.
8on este paso obtenemos un conjunto de metabolas con la forma de la
superficie que delimitaba el trazo base !enerado ori!inalmente por el
usuario. 5ara !enerar la extrusin del trazo +ase a lo lar!o del trazo de
extrusi!n se procede a la proyeccin del conjunto de metabolas$ de forma
que cada una de las proyecciones resultantes queden situadas
perpendicularmente con respecto al trazo de extrusin y se redimensionen
para ajustarse al tama=o del trazo.
[ 282 ] Tecnologas Libres para Sntesis de Imagen 3D
El n6mero de proyecciones en principio depende del nivel de detalle con el
cual se "aya !enerado el pol!ono abierto correspondiente al trazo de
extrusin creado por el usuario. En los casos en los que la distancia entre
los v)rtices del pol!ono (del trazo de proyeccin# sea muy !rande$ para
evitar el problema de zonas "uecas o poco pobladas del que "abl*bamos en
el apartado de Me*oras en la o+tenci!n del volumen$ delimitaremos la
distancia m*xima que debe "aber para una nueva proyeccin$ y en el caso
en el que no se cumpla$ se a=adir* una nueva proyeccin (ver fi!ura '
&rc"a#.
Day que diferenciar el caso en el que la extrusin es positiva o ne!ativa$ ya
que en el primer caso las metaelipses !eneradas deben tener una atraccin
positiva$ mientras que en el caso en el que la extrusin es ne!ativa$ se
producir* una repulsin$ para conse!uir la concavidad o "ueco que se
desea (ver fi!ura C zqda#.
$esultados
Empleando el m)todo explicado en este artculo "emos obtenido el modelo
de la fi!ura ,(. %a silueta ori!inal fue convertida a :1, superficies
implcitas (incluyendo las necesarias para realizar las extrusiones#. El
si!uiente paso fue convertir la superficie a malla poli!onal (formada por
,7:(1 caras#. Einalmente$ el modelo fue suavizado y se aplic un al!oritmo
de eliminacin de aristas.
Figura 10. &*emplo de persona*e realizado con MoSkIS 3D.
Ciudad Real
Junio 2006

You might also like