Está en la página 1de 34

 

Iluminación en Java 3D
Este módulo presenta las técnicas para proporcionar detalles de los objetos visuales a través de
sombras y texturas. Esta página explica el modelo de iluminación y cómo utilizar luces en Java
3D para conseguir sombras.

 Java 3D sombrea los objetos visuales basándose en la combinación de sus características


materiales y en las luces del universo virtual. El sombreado resulta de aplicar un modelo de
iluminación a un objeto visual en presencia de uentes de luz. !a siguiente sección da una
descripción del modelo de iluminación usado en el renderizador de Java 3D y cómo la luz
interact"a con las características materiales para proporcionar sombreado. #ada una de las
siguientes secciones explica las características relevantes del $%& Java 3D para el modelo de
iluminación.

Sombreado en Java 3D
'ombrear objetos visuales en Java 3D depende de muc(os actores. Esta sección proporciona
una descripción abreviada del modelo de iluminación de Java 3D) del modelo de color) y del
modelo de sombreado. !a especi*cación del $%& Java 3D presenta una inormació
inormaciónn más detallada
sobre el modelo de iluminación de Java 3D. #omo la mayor parte de la iluminación de Java 3D y
del modelo de sombreado se basa en OpenGL
OpenGL)) se puede encontrar más inormación en páginas
sobre OpenGL
OpenGL..

Modelo de Iluminación

En el mundo real) los colores +ue percibimos son una combinación de las características ísicas
del objeto) de las características de las uentes de luz) de las posiciones relativas de los objetos a
las uentes de luz) y del ángulo desde el cual se ve el objeto. Java 3D utiliza un modelo de
iluminación para aproximar
aproximar la ísica del mundo real. El resto de esta sección explica el modelo de
iluminación de Java 3D en términos generales. !a sección E., de la especi*cación del $%& Java 3D
presenta las ecuaciones matemáticas para el modelo de iluminación Java 3D.

!a ecuación del modelo de iluminación depende de tres vectores- la super*cie normal n/) la
dirección de la luz l/) y la dirección al ojo del espectador e/ además de las características
materiales del objeto y de las características de la luz. !a 0igura 12 muestra los tres vectores
para dos vértices de una super*cie esérica. !os vectores para cada vértice pueden tener
distintas direcciones
direcciones dependiendo de especí*cidades de la escena. #uando los vectores de la luz
y del ojo varían) se cálculan en tiempo de ejecución. %or lo tanto) cada vértice de la esera
potencialmente se renderiza como una sombra dierente.

El modelo de iluminación incorpora tres tipos de re4exiones de luz del mundo real- ambiente)
diuso) y especular.
especular. !a re4exión ambiente resulta de la luz ambiente) luz constante de bajo nivel)
en una escena. !a re4exión diusa es la re4exión normal de una uente de luz desde un objeto
visual. !as re4exiones especulares son las re4exiones sobreiluminadas de una uente de luz
sobre un objeto) +ue ocurren en ciertas situaciones.
 

!a 0igura 12, muestra una esera y un plano renderizados por Java 3D. !os tres tipos de re4exión
se pueden ver en la esera de la 0igura 12,. !a parte más oscura de la esera ex(ibe sólo la
re4exión ambiente. El centro de la esera está iluminado por la luz diusa y ambiente. #on una
esera azul y una luz blanca) la re4exión diusa es azul. !a parte más brillante de la esera es el
resultado de la re4exión especular con re4exiones ambiente y diusa.

Ojo Local contra Vectores de Ojos Infnitos

'i cada vértice de cada objeto visual en una escena re+uiere un vector de luz) un vector del ojo)
y el cálculo de la sombra) una porción signi*cativa del cálculo de representa
representación
ción se utiliza en los
vértices sombreados.
ojo) o ambos !a son
vectores cantidad de cálculo
constantes. puede reducirse
El vector de luz essiconstante
el vector de luz) o el
cuando usavector
una del
luz
direccional.. El vector del ojo es constante por deecto) aun+ue podemos especi*car un vector
variable del ojo usando un método del objeto View
View..

!ectos inter"objetos no #onsiderados

5ientras +ue el modelo de iluminación se basa en la ísica) los enómenos ísicos complejos no se
modelan. 6bviamente) la sombra ec(ada por la esera sobre el plano no está en la 0igura
0igura 12,. 7o
tan obvio) también alta la luz re4ejada de la esera sobre el plano. 8ambién alta la luz re4ejada
desde el plano sobre la esera +ue de nuevo se re4eja en el plano... etcétera.

$ menudo es diícil comprender


comprender la complejidad del cálculo de la acción de la luz. #onsideremo
#onsideremoss la
di*cultad de calcular cómo cada gota del agua se comporta en una duc(a. !as gotas vienen de la
cabeza de la duc(a en distintas direcciones. #uando encuentran un objeto) la colisión +ue resulta
produce muc(as gotas más pe+ue9as +ue viajan en distintas direcciones. El proceso se repite
muc(as veces antes de +ue el agua se vaya por el desague. !a complejidad de interacciones de
la luz con los objetos
objetos vis
visual
uales
es es muy semejant
semejante.e. $lg
$lguna
unass de las dierenc
dierencias
ias entre los
comportamientos del agua y la luz son +ue la luz no tiene ninguna ad(erencia luz no se pega a
los objetos visuales/ y el eecto de la gravedad es insigni*cante para la luz.

%ara reducir la complejidad del cálculo) el modelo de iluminación considera solamente un objeto
visual al mismo tiempo. #onsecuentemente) las sombras y las re4exiones inter2objetos no son
renderizadas por el modelo de iluminación. Estos dos eectos re+uieren la consideración de todos
los objetos junto con sus posiciones relativas en el momento de la representación. 'e necesita
considerablemente más cálculo para renderizar una sola escena con eectos inter2objetos. Java
3D) y el resto de los sistemas grá*cos en tiempo real) no (acen caso de eectos inter2objetos en
la representación. $lgunos de los eectos ignorados del mundo real se pueden agregar a las
escenas cuando sea necesario.

Modelo de #olor

El modelo del color no está basado en la ísica. Java 3D modela el color de las luces y los
materiales como una combinación de rojo) verde) y azul. El color blanco) como el color de la luz o
 

del material) es la combinación de los tres componentes con la intensidad máxima. #ada luz
produce un solo color de luz especi*cado por un tuple :;<. El modelo de iluminación se aplica a
cada uno de los componentes del color :;<. %or ejemplo) una bola roja en presencia de una luz
azul no será visible puesto +ue la luz azul no se re4eja desde un objeto rojo. En realidad) el color
es una combinación de muc(as longitudes de onda de la luz) no solo tres. El modelo de color
:;< representa muc(os colores) pero no todos.

In$uencia de las Luces

En Java 3D) la porción de una escena donde los objetos visuales son iluminados por una uente
de luz determinada se llama la región de in4uencia de ese objeto de luz. !a región de in4uencia
más simple para una uente de luz usa un objeto %ounds %ounds   y el método
setInfluencingBounds()  de Li&'t Li&'t.. #uando un objeto uente de luz con límites de in4uencia
intersecciona con los límites de un objeto visual) se utiliza la luz para sombrear todo el objeto.
!os límites de in4uencian de una luz determinan +ué objetos iluminar) no +ué porciones de
objetos se iluminan.

Modelo de Sombreado

El mod
modelo
elo de il
ilumi
uminac
nación
ión sombrea
sombrea tod
todos
os los vértice
vértice de un obj
objeto
eto vi
visua
suall por cada luz de
in4uencia. !a sombra de un vértice es la suma de las sombras proporcionadas por cada uente
de luz para la vértice. El resto de un objeto visual se sombrea basándose en la sombra de los
vértices.
vértices. El mode
modelolo de somb
sombra
ra de un objeto visual)
visual) espe
especi*c
ci*cado
ado como atributo (ppearance
)ode#omponent)) determina cómo se (ace el sombreado para el resto del objeto visual.
)ode#omponent

El #olorin&(ttr
#olorin&(ttributes
ibutes )ode#ompon
)ode#omponent ent   especi*ca el modelo de sombra para los objetos
visu
visual
ales
es do
dond
nde
e el momode
delo
lo de so somb
mbra
ra se es espe
peci
ci*c
*ca
a cocomo
mo un
uno
o de S*(D+GO,-(,D
S*(D+GO,-(,D))
S*(D+.L(/)) .(S/S/
S*(D+.L(/ .(S/S/)) )I#S/
)I#S/.. DeDebe
bemo
moss te
tene
nerr cu
cuid
idad
adoo ya +u
+uee el co
colo
lorr de un ob
obje
jeto
to
#olorin&(ttributes nunca
#olorin&(ttributes  nunca se utiliza en el sombreado.
sombreado.

En el sombrad
sombrado o Gouraud
Gouraud)) cada pixel se sombrea con un valor derivado de la interpolación
trilinear del valor de la sombra de cada vértice del polígono +ue lo encierra. En el sombreado
plano) todos los pixeles de un polígono se asignan el valor de la sombra a partir de un vértice del
polígono. !a 0igura 123 muestra una esera sombreada plana y una esera sombrada Gouraud Gouraud..
!a ventaja del sombreado plano es la velocidad en la representación del sot=are. El sombreado
de Gouraud
Gouraud tiene
 tiene la ventaja de la apariencia visual.

>n "ltimo punto antes de ir a un ejemplo? los objetos uentes de luz no son objetos visuales.
&ncluso si una uente de luz se situa dentro de la vista) no será renderizada.

-eceta para Iluminar Objetos Visuales


 

'e necesita una serie de pasos para permitir la iluminación de los objetos visuales en el universo
virtual. $demás de crear y de personalizar objetos para re+uisitos particulares de luz) cada
objeto
obje to de luz debe ser agr
agregad
egadoo al escenario
escenario grá*co y (aber especi*cad
especi*cado o un obje
objeto
to %ound
%ound..
#ada objeto visual +ue se va a sombrear debe tener super*cies normales y características de
material. $bajo podemos ver la receta con los pasos necesarios-

. Esp
Espec
eci*c
i*caci
ación
ón de
de la uen
uente
te de
de !uz
!uz

. se
sele
lecc
ccio
iona
narr los
los lími
límite
tess
,. a9a
a9adir
dirla
la al esc
escena
enario
rio grá
grá*co
*co

,. 6bje
jeto
to @is
isua
uall

. super*
r*ccies

,. pr
prop
opie
ieda
dade
dess de mate
materi
rial
al

'i alta algunos de estos elementos no se podrá usar la iluminación. !a presencia del objeto
Material en
Material  en un manoj
manojoo (ppearance
(ppearance de de un objeto visual permite el modelo de iluminación para
ese objeto.
objeto. 'in el objeto Material
Material el
 el objeto visual será coloreado) pero no sombreado por el
#olorin&(ttribute   o los colores
#olorin&(ttribute colores de vértice
vértice del objeto
objeto Geometr0
Geometr0.. 'i ni uno ni otro están
presentes) el objeto será blanco sólido. !a 0igura 12A muestra la excepción lanzada cuando un
objeto visual tiene un objeto Material
Material pero
 pero no tiene super*cies normales.
javax.me
javax.media
dia.j
.j3D.
3D.Il
Illeg
legal
alRen
Rende
derin
ringS
gStat
tateEx
eExce
cepti
ption
on:
: anno
annot
t do lig!t
lig!tin
ing
g
"it!out
specif#ing normals in geometr# o$ject

!os errores con uentes de luz pueden no ser áciles de encontrar. 7o (ay ning"n aviso de +ue
dejamos sin luz un escenario grá*co. 7i (ay ninguna alerta por no *jar los límites de in4uencia
de una uente de luz. En cual+uiera de estos casos) el objeto de luz no tendrá ninguna in4uencia
sobre los objetos visuales en el escenario grá*co. >n objeto visual especi*cado correctamente
para sombreado es decir) uno con un objeto Material
Material// en un escenario grá*co vivo pero uera
de los límites de in4uencia de todos los objetos uente de luz se renderizará a negro.

Es po
posi
sibl
ble
e es
espe
peci
ci*c
*car
ar co
corr
rrec
ecta
tame
ment
nte
e un
unaa es
esce
cena
na en la cu cual
al un obobje
jeto
to vi
visu
sual
al co
conn la
lass
características materiales in4uenciadas por un objeto de luz y +ue se renderice a negro. !a
orientaci
orientación
ón relativa
relativa de la luz) el obje
objeto
to visual) y la dirección
dirección de la visión entran en jueg
juego
o en el
renderizado.

jemplos de Luces Sencillas

'eg"n lo mencionado arriba) crear renderizados con sombras implica la especi*cación apropiada
de la uente de luz y de los objetos visuales. Basta el momento) ni la clase Li&'t
Li&'t ni
 ni los objetos
Material se
Material  se (an discutido en detalle. 'in embargo) aprovec(ándo
aprovec(ándo los valores por deecto del $%&
y sus características) podemos proceder a iluminar mundos virtuales. !os primitivos geométricos
generan super*cies normales cuando se solicitan. !os valores por deecto del objeto Material
especi*can un objeto visual razonable. !os valores por deecto de los constructores de la uente
de luz especi*can uentes de luz utilizables.

>sando la clase Simple,niverse


Simple,niverse con con los dos métodos del .ra&mento de códi&o 1"2 se produce
un universo virtual +ue incluye una sola esera con las características materiales con sus valores
 

por deecto
deecto iluminada
iluminada por un solo objeto
objeto uente de luz (mbientLi&'t
(mbientLi&'t.. El primer método del
ragmento del código ensambla un objeto Material
Material con
 con un objeto (peareance
(peareance para para la esera. El
segundo método crea un objeto %ranc'Group
%ranc'Group para
 para servir como la raíz de la rama de contenido
grá*co)
grá*c o) después agrega
agrega los objetos
objetos Sp'ere
Sp'ere   y (mbientLi&'t
(mbientLi&'t   al escenario grá*co. El objeto
Material en
Material  en el manojo del aspecto se agrega al objeto Sp'ere
Sp'ere en
 en la construcción de la esera
líneas , y 3/. >n valor por deecto %oundin&Sp'ere
%oundin&Sp'ere proporciona
 proporciona la región de in4uencia para
el objet
objeto
o (mbientLi&'t
(mbientLi&'t   líneas A a C/. El diagrama del escenario grá*co de este mundo
virtual aparece en !a 0igura 121.

.ra&mento de #ódi&o 1"2 #rear un scena con un s!era Iluminada4


%. &ppearance create&ppearance() '
. &ppearance appear  ne" &ppearance()*
3. +aterial material  ne" +aterial()*
,. appear.set+aterial(material)*
-.
. return appear*
/. 0
1.
2. Branc!roup createScene ()'
%4. Branc!roup scene  ne" Branc!roup()*
%%.
%. scene.add!ild(ne" Sp!ere(4.-f5 Sp!ere.E6ER&7E869R+&S5
%3. create&ppearance()))*
%,.
%-. &m$ientig!t lig!t&  ne" &m$ientig!t()*
%. lig!t&.setInfluencingBounds(ne"
lig!t&.setInfluencingBounds( ne" BoundingSp!ere())*
%/. scene.add!ild(lig!t&)*
%1.
%2. return scene*
4. 0

!as líneas  y A del .ra&mento de códi&o 1"2  podrían ser reemplazadas por la siguiente línea
+ue crea y usa un objeto Material
Material anónimo.
 anónimo.

&ppear.set+aterial(ne" +aterial())*

!os objetos Material


Material son
 son completamente personalizables con los parámetros de su constructor)
simpli
simpli*c
*cand
andoo el uso de ob
objet
jetos
os Material
Material   anó
anónim
nimos.
os. %or el co
contra
ntrario
rio)) cr
crear
ear un obj
objeto
eto Li&'t
anónimo (ace muc(o más dí*cil la adicción de límites de in4uencia. Debemos tener en cuenta
+ue el manojos
varios nombramiento del objeto
del aspecto) Material puede
Material
dando  puede (acer
como resultado el objeto sea más
un uncionamiento ácil
mejor. de compartir entre
mejor.

El Simple,niverse
Simple,niverse proporciona
 proporciona los objetos Virtual,niverse
Virtual,niverse   y Locale
Locale junto
 junto con el la rama de
vista
vista grá
grá*ca
*ca para el didiagr
agrama
ama de escescena
enario
rio grá
grá*co
*co mostrado
mostrado en la 0ig igura
ura 12
121.
1. 'i'in
n una
transormación) el objeto Sp'ere
Sp'ere y
 y el objeto %oundin&Sp'ere
%oundin&Sp'ere estarán
 estarán centrados en el origen) y
se interseccionarán. El objeto Sp'ere
Sp'ere se se sombrea por la uente (mbientLi&'t
(mbientLi&'t.. !a 0igura 12C
muestra la imagen +ue resulta con un ondo blanco. !a especi*cación del ondo no se muestra
en el código.
 

!a esera de la 0igura 12C es de color gris uniorme) +ue es el valor por deecto de la propiedad
ambiente del material.

!a 0igura 12C muestra +ue las escenas iluminadas unicamente con luz ambiente son opacas.
#omo la iluminación ambiente es uniorme) produce la sombra uniorme. !a luz ambiente está
pensada para llenar de luz una escena donde otras uentes no iluminan. !a adición de una uente
DirectionalLi&'t (ará
DirectionalLi&'t  (ará esta escena más interesante.

&nsert
&nsertan
ando
do el .ra&m
ra&ment
entoo de cód i&o 1"5  en el
códi&o el .ra&
ra&men
mento
to de códi&o 1"2  se a9ade
códi&o a9ade un
DirectionalLi&'t a
DirectionalLi&'t  a la rama de contenido grá*co de la escena. >na vez más los valores por
deecto se utilizan para la uente de luz) y se utiliza un %oundin&Sp'ere
%oundin&Sp'ere por
 por deecto para la
región de in4uencia. !a 0igura 12 muestra el diagrama del escenario grá*co +ue resulta sin los
objetos proporcionados
proporcionados por el Simple,niverse
Simple,niverse..

.ra&mento de #ódi&o 1"5 (6adir una Lu7 Direccional a la scena4


%. Directionalig!t lig!tD%  ne" Directionalig!t()*
. lig!tD%.setInfluencingBounds(ne"
lig!tD%.setInfluencingBound s(ne" BoundingSp!ere())*
3. ;; customi<e Directionalig!t o$ject
,. scene.add!ild(lig!tD%)*
 

!a 0igura 12F muestra la imagen producida por la combinación de los dos ragmentos del código
código..
!a in4uencia
in4uencia del obj
objeto
eto (mbientLi&'t
(mbientLi&'t apenas
 apenas se puede verver con la uente DirectionalLi&'t .
6bviamente) es necesaria la personalización de los re+uisitos particulares de los objetos de luz
yGo las características materiales del objeto visual para crear escenas interesantes.

Dónde (6adir un Objeto Li&'t en un scenario Gr8fco

!a in4uencia de un objeto de luz en el mundo no está aectada por la posición del objeto de luz
en el escenario grá*co? sin embargo) el objeto bounds
bounds reerenciado
 reerenciado por la luz si lo está. El objeto
bounds está
bounds  está sujeto a las coordenadas locales del escenario grá*co donde se inserta el objeto de
luz. #onsideremos la 0igura
0igura 12H como ejemplo. El mismo objeto %oundin&Sp'ere
%oundin&Sp'ere reerenciado
 reerenciado
por dos uentes de luz proporciona dos regiones de in4uencia distintas debidas la traslación
proporcionada por el objeto /rans!ormGroup
/rans!ormGroup.. El origen del sistema de coordenadas local del
escenario grá*co debajo del /rans!ormGroup
/rans!ormGroup está
 está , metros por debajo del origen del mundo
!ocale/ y la otra región de la esera de in4uencia.
 

'i dependen o no) los objetos de la uente de luz del escenario grá*co en la 0igura 12H
in4uen
in4uencia
cian
n el som
sombr
bread
eadoo lu
luz/
z/ de
dell ob
objet
jeto
o vis
visual
ual ilu
ilumin
minado
ado si los lím
límite
itess de
dell ob
objet
jeto
o vi
visua
suall
interseccionan
de una luz comocon
unlasólo
región de in4uencia
 podría nodeuncionar
bounds podría
bounds los objetos detodas
para luz. Especi*car la región de in4uencia
las aplicaciones.

#lase Li&'t

El $%& Java 3D proporciona cuatro clases para luces. 8odas se derivan de la clase Li&'t
Li&'t.. !a 0igura
12 muestra
muestra la jerar
jerar+uía
+uía de clases de Java 3D relacionad
relacionada
a con las luces. Li&'t
Li&'t)) una clase
abstracta) proporciona
proporciona los métodos y las constantes de capacidade
capacidadess asociadas para manipular el
estado) color) y los límites de un objeto Li&'t
Li&'t.. El estado de la luz es un boleano +ue activa y
desactiva la luz.
 

El siguiente blo+ue de reerencia lista los métodos y las constantes de la clase Li&'t
Li&'t.. Debemos
recordar +ue los límites seleccionados con setInfluencingBounds()  activan una luz cuando
el objeto bounds
bounds reerenciado
 reerenciado intersecciona con la vista.

!ista %arcial de 5étodos de la #lase Li&'t

Li&'t es
Li&'t  es una clase abstracta +ue contiene variables de ejempla
ejemplarr comunes a todas las luces.

void setolor(olor3f color)

'elecciona el color actual de la luz.

void setEna$le($oolean state)

$ctiva y desactiva la luz.

void setInfluencingBounds(Bounds $ounds)

'elecciona los límites de in4uencia de la luz.

'umario de #apacidades de la #lase Li&'t

&9=8I6>?E6I68B9?6DS8RE&D @ =RI7E
&9=8S7&7E8RE&D @ =RI7E
&9=899R8RE&D @ =RI7E.
 

Lu7 (mbiente

!os objetos de luz ambiente proporcionan luz de la misma intensidad en todas las localizaciones
y en todas las direcciones. !os objetos de luz ambiente modelan la luz re4ejada desde otros
objetos visuales. 'i miramos la super*cie inerior de nuestro escritorio) veremos la parte inerior
del escritorio aun+ue ninguna uente de luz esté dando directamente en esa super*cie a menos
+ue tengamos una lámpara bajo el escritorio/. !a luz +ue brillaba (acia arriba en el ondo del
escritorio se re4ejó en el suelo y en otros objetos. En ambientes naturales con muc(os objetos) la
luz se re4eja desde muc(os objetos para proporcionar la luz ambiente. !a clase (mbientLi&'t
de Java 3D simula este eecto.

El siguiente blo+ue de reerencia enumera los constructores de la clase (mbientLi&'t


(mbientLi&'t.. !a clase
abstracta Li&'t
Li&'t proporciona
 proporciona los métodos y las capacidades para esta clase enumerada en el
blo+ue de reerencia anterior/.

'umario de #onstructores de la clase (mbientLi&'t

>n objeto uente de luz ambiente proporciona la misma intensidad de luz en todas las
localización y direcciones.
localización direcciones. 5odela la compleja re4exión
re4exión inter2objetos de la luz presente en
escenas naturales.
&m$ientig!t()

#onstruye e inicializa un objeto uente de luz ambiente usando los siguientes valores por
deecto-

• lig(t6n true

• color ) ) /

&m$ientig!t(olor3f color)

#onstruye e inicializa una luz ambiente usando los parámetros especi*cados.

&m$ientig!t($oolean lig!t9n5 olor3f color)

#onstruye e inicializa una luz ambiente usando los parámetros especi*cados.

5ientras +ue podría ser natural pensar +ue una uente de luz ambiente se puede aplicar
globalmente) esto no es necesariamente cierto en un programa Java 3D. !a in4uencia de la
uente (mbientLi&'t
(mbientLi&'t está
 está controlada por sus límites igual +ue otras uentes de luz Java 3D. 'e
pueden utilizar varios objeto uente (mbientLi&'t
(mbientLi&'t en  en un programa de Java 3D. 7o (ay límite en
el n"mero de los objetos uentes (mbientLi&'t
(mbientLi&'t +ue +ue se pueden utilizar.

'eg"n lo mencionado en secciones anteriores) la sombra de un vértice es el resultado de las


uentes de luz) de las características materiales del objeto visual) y de su geometría relativa
dista
distanci
ncia
a y ori
orient
entaci
ación/
ón/.. %a
%ara
ra la
lass re4
re4ex
exio
iones
nes amb
ambien
iente)
te) la geo
geomet
metría
ría no es un ac
actor
tor.. !a
propiedad ambiente
ambiente del material sólo se utiliza para calcular la re4exión ambiente. El modelo de
ilum
ilumin
inac
ació
ión
n ca
calc
lcul
ula
a la re
re4e4exi
xión
ón amambi
bien
ente
te de la lu
luzz co
como
mo el pr
prod
oduc
ucto
to la in
inte
tens
nsid
idad
ad dedell
(mbientLi&'t y
(mbientLi&'t  y la propiedad ambiente del material del objeto visual.
 

Lu7 Direccional

>na uente
>na uente DirectionalLi&'t
DirectionalLi&'t   aproxima uentes de luz muy distantes tales como el sol. $l
contratrio
contratrio +ue las uent
uentes
es (mbientLi&'t
(mbientLi&'t)) las uentes DirectionalLi&'t
DirectionalLi&'t proporcionan
 proporcionan una sola
dirección al brillo de luz. %ara los objetos iluminados con una uente DirectionalLi&'t
DirectionalLi&'t)) el vector
de luz es constante.

!a 0igura 12, muestra dos vértices de la misma esera +ue están siendo iluminados por una
uente
uente DirectionalLi&'t . El vector de luz es igual para estos dos y para todos los vértices.
#ompara !a 0igura 12, con la 0igura 12 para ver la dierencia. %uesto +ue todos los vectores de
luz de una uente
uente DirectionalLi&'t  son paralelos) la luz no se aten"a. En otras palabras) la
intensidad de una uente DirectionalLi&'t
DirectionalLi&'t no
 no varía con la distancia al objeto visual y la uente
DirectionalLi&'t..
DirectionalLi&'t

!os siguientes blo+ues de reerencia listan los constructores y los métodos de DirectionalLi&'t )
respectivamente.

'umario de #onstructores de la #lase DirectionalLi&'t

!os objetos DirectionalLi&'t  modelan uentes de luz muy distantes teniendo una dirección del
vector de luz constante

Directionalig!t()

#onstruye e inicializa una uente direccional


direccional usando los siguientes valores por deecto-

• lig(t6n true

• color ) ) /

• direction H) H) 2/

Directionalig!t(olor3f color5 Aector3f direction)

#onstruye e inicializa una luz direccional


direccional con el color y la dirección
dirección especi*cados. %or deecto el
estado es true on/.

Directionalig!t($oolean lig!t9n5 olor3f color5 Aector3f direction)


 

#onstruye e inicializa una luz direccional


direccional con el estado) el color y la dirección especi*cados.
especi*cados.

'umario de 5étodos de la #lase DirectionalLi&'t

void setDirection(Aector3f direction)

'elecciona la dirección de la luz.

void setDirection(float x5 float #5 float <)

'elecciona la dirección de la luz.

'umario de #apacidades de la #lase DirectionalLi&'t

$demás de las #apacidades (eredadas


(eredadas de la clase !ig(t) los objetos Directional!ig(t tienen la
siguiente capacidad-
capacidad-

&9=8DIRE7I968RE&D @ =RI7E

!os DirectionalLi&'ts
DirectionalLi&'ts sólo
 sólo participan en las porciones diusas y specular de la re4exión del
modelo de la iluminación. %ara las re4exiones diusas y specular) la geometría es un actor al
contrario +ue las re4exiones ambiente/. @ariar la dirección de la uente de luz cambiará el
sombreado de los objetos visuales. 'olo las características materiales diusas y specular se
utilizan para calcular las re4exiones diusas y specular.

9unto de Lu7

>n 9ointLi&'t
9ointLi&'t es
 es el contra
contrario
rio de un DirectionalLi&'t . Es una uente de luz omnidireccional
cuya intensidad
intensidad se aten"a con la distancia
distancia y tiene una localizació
localización.
n. un DirectionalLi&'t
DirectionalLi&'t   no
tiene ninguna localización) solo una dirección/. !os objetos 9ointLi&'t
9ointLi&'t se se aproximan a bombillas)
velas) u otras uentes de luz sin re4ectores o lentes.

>n modelo de ecuación cuadrática modela la atenuación de las uentes 9ointLi&'t


9ointLi&'t.. !a ecuación
se encuentra en la sección E., de la especi*cación del $%& Java 3D. !a 0igura 123 ilustra la
relaci
relación
ón de un objeto
objeto 9ointLi&'t
9ointLi&'t   con una esera. 6bserva +ue los vectores de luz no son
paralelos.
 

!os siguientes
siguientes blo+ues
blo+ues de reerencia
reerencia listan los cons
construct
tructores
ores y los métodos
métodos de 9ointLi&'t
9ointLi&'t))
respectivamente.

'umario de #onstructores de la #lase 9ointLi&'t

El objeto 9ointLi&'t
9ointLi&'t especi*ca
 especi*ca una uente de luz atenuada en el espacio +ue irradia la luz
igualmente en todas las direcciones desde la uente de luz.
ointig!t()

#onstruye e inicializa una uente de punto de luz usando los siguientes valores
valores por deecto-

• lig(t6n true

• color ) ) /

• position H) H) H/

• attenuation ) H) H/

ointig!t(olor3f color5 oint3f position5 oint3f attenuation)


#onstruye e inicializa un punto de luz. %or deecto la luz está activa.

ointig!t($oolean lig!t9n5 olor3f color5 oint3f position5 oint3f


attenuation)

#onstruye e inicializa un punto de luz.

'umario de 5étodos de la #lase 9ointLi&'t

void set&ttenuation(oint3f attenuation)

'elecciona los valores


!os tres valores de atenuación
especi*cados actuales
en el objeto de la especi*can
9oint3!  luz y los sit"a
 especi*can losen el parámetro
coe*cientes especi*cado.
constante) linear)
y cuadrático) respectivamente.

  %
atenuaciCn 

constatelinearcuadrFticoGdistancia 

donde distancia es la medida desde la uente de luz al vértice +ue está siendo sombreado.
sombreado.

void set&ttenuation(float constant5 float linear5 float Huadratic)

'elecciona los valores de atenuación actuales de la luz y los sit"a en el parámetro especi*cado.
@er la ecuación anterior.

void setosition(oint3f position)


 

'elecciona la posición de la !uz.

void setosition(float x5 float #5 float <)

'elecciona la posición de la !uz.

'umario de #apacidades de la #lase 9ointLi&'t

$demás de las capacidades (eredadas de la clase Li&'t


Li&'t)) los objetos 9ointLi&'t
9ointLi&'t tienen
 tienen las
siguientes capacidades.
capacidades.

&9=89SI7I968RE&D @ =RI7E
&9=8&77E6?&7I968RE&D @ =RI7E

#omo DirectionalLi&'t ) 9ointLi&'t


9ointLi&'t participa
 participa solamente en las porciones diusa y de re4exión
especular del modelo de iluminación. %ara las re4exio
re4exiones
nes diusas y especular) la geometría es un
actor. @ariando la localización de un objeto 9ointLi&'t
9ointLi&'t se
 se cambiará el sombreado de los objetos
visuales en una escena.

SpotLi&'t

SpotLi&'t es una subclase de 9ointLi&'t


SpotLi&'t es 9ointLi&'t.. !a clase SpotLi&'t
SpotLi&'t agrega
 agrega dirección y concentración
a los parámet
parámetros
ros de pos
posici
ición
ón y de atenuaci
atenuación
ón de 9ointLi&'t
9ointLi&'t.. !o
!oss ob
obje
jeto
toss SpotLi&'t
SpotLi&'t   crean
manualmente modelos de uentes de luz arti*ciales como 4as(es ) lámparas) y otras uentes con
re4ectores yGo lentes.

!a intensidad de la luz producida por una uente SpotLi&'t


SpotLi&'t produce
 produce la luz dentro de un ángulo
especi*cado desde la dirección de la luz. 'i el vértice exterior se sale del ángulo de la extensión
de la luz) entonces no se produce ninguna luz. %or dentro del ángulo de extensión) la intensidad
varía mediante el ángulo y la distancia al vértice. >na vez más una ecuación cuadrática modela
la ate
atenua
nuació
ción
n de
debi
bido
do a la di
dista
stanci
ncia.
a. El pa
parám
rámetr
etro
o con
concen
centra
tració
ción
n y una ececuac
uació
ión
n di
diere
erente
nte
gobiernan la variación de la intensidad debido al ángulo. !as ecuaciones +ue gobiernan estos
lazos se encuentran en la sección E., de la especi*cación del $%& Java 3D. !a 0igura 12 ilustra
en ,D cómo la intensidad de luz varía desde una uente 9ointLi&'t
9ointLi&'t en
 en 3D.
 

El ángulo de extensión de un objeto SpotLi&'t


SpotLi&'t podría
 podría (acer +ue la luz iluminara parte de un
objeto visual. Esta es la "nica luz capaz de iluminar sólo una parte de un objeto visual.

!os si
!os sigu
guie
ient
ntes
es bl
blo+
o+ue
uess de re
ree
ere
renc
ncia
ia li
list
stan
an lo
loss co
cons
nstr
truc
ucto
tore
ress y mé
méto
todo
doss de 9ointLi&'t
9ointLi&'t))
respectivamente.

'umario de #onstructores de la #lase SpotLi&'t


SpotLi&'t es
SpotLi&'t  es una suclase de 9ointLi&'t
9ointLi&'t con
 con los atributos de dirección) ángulo de extensión y
concentración.

Spotig!t()

#onstruye e inicializa una uente de luz usando los siguientes valores por deecto-

• lig(t6n true

• color ) ) /

• position H) H) H/

• attenuation ) H) H/

• direction H) H) 2/

• spread$ngle %& H degrees/

• concentration H.H

Spotig!t(olor3f color5 oint3f position5 oint3f attenuation5 Aector3f


direction5 float spread&ngle5 float concentration)

#onstruye e inicializa un punto de luz. %uedes ver el sumario de métodos de 9ointLi&'t


9ointLi&'t para
 para
más inromación sobre la atenuación. %or deecto la luz está activa.

Spotig!t($oolean lig!t9n5 olor3f color5 oint3f position5 oint3f


attenuation5 Aector3f direction5 float spread&ngle5 float concentration)

#onstruye e inicializa un punto de luz. %uedes ver el sumario de métodos de 9ointLi&'t


9ointLi&'t para
 para
más inromación sobre la atenuación.

'umario de 5étodos de la #lase SpotLi&'t

$demás de los métodos listados anteriormente para 9ointLi&'t


9ointLi&'t)) la clase SpotLi&'t
SpotLi&'t tiene
 tiene los
siguientes métodos-

void setoncentration(float concentration)

'elecciona la concentración del punto de luz.


 

void setDirection(float x5 float #5 float <)

'elecciona la dirección de la luz.

void setDirection(Aector3f direction)

'elecciona la dirección de la luz.

void setSpread&ngle(float spread&ngle)

'elecciona el ángulo de exposición de la luz.

'umario de #apacidades de la #lase SpotLi&'t

$demás de las capacidades (eredadas de la clase Li&'t


Li&'t)) los objetos SpotLi&'t
SpotLi&'t tienen
 tienen las
siguientes capacidades-

&9=8SRE&D8&6E8RE&D @ =RI7E
&9=896E67R&7I968RE&D @ =RI7E
&9=8DIRE7I968RE&D @ =RI7E

#omo los objetos DirectionalLi&'t   y 9ointLi&'t


9ointLi&'t)) los SpotLi&'ts
SpotLi&'ts participan
 participan solamente en las
porciones diusas y re4exión specular del modelo de iluminación. %ara las re4exiones diusas y
specular) la geometría es un actor. #ambiar la localización o la orientación de una uente de
SpotLi&'t cambiará
SpotLi&'t  cambiará el sombreado de los vértices dentro de la región de in4uencia de la luz.

(plicaciones de .uentes de Lu7

#on todos los tipos de uentes de luz) y la variedad de maneras de utilizarlas) veremos una
pe+ue9a guía de su uso típico en esta sección. En general) desearemos utilizar tan pocas uentes
de luz como se pueda para una aplicació
aplicación
n dada. #uántas son su*cientes dependerá del eecto de
iluminación deseado para la aplicación. El n"mero de luces y la con*guración de atributos es
más una consideración artística +ue cientí*ca.
Desde un punto de vista artístico) a menudo es su*ciente tener solo dos luces para una escena
dada. >na luz proporciona la iluminación principal) la otra se utiliza para completar la cara más
oscura de los objetos. !a luz principal normalmente se coloca a la derec(a del espectador) el
relleno a la iz+uierda del espectador.
espectador. >na vez más éstas son pautas generales para lo +ue pueda
ser un dise9o artístico complejo.
complejo.

7ormalmente se pre*ere incluir uentes de luz direccionales para la mayoría de las aplicaciones
puesto +ue el cálculo re+uerido en la representación es perceptiblemente menor +ue para los
puntos de luz. !as uentes de puntos de luz se usan muy raramente debido a la alta complejidad
de cálculo.

Es normal incluir una sola uente de luz ambiente con una gran región de in4uencia. Esto
iluminará las partes posteriores de los objetos como la Icara oscura de la lunaI/. El valor por
deect
deecto
o del col
color
or un
unci
ciona
onará
rá raz
razona
onable
blemen
mente
te bi
bien.
en. El tie
tiempo
mpo re
re+ue
+uerid
rido
o pa
para
ra inc
inclui
luirr la luz
ambiente es pe+ue9o comparado con otras uentes de luz. Dejar uera una luz ambiente puede
ser muy sensible en algunas escenas) y no ser notado en absoluto en otras.
 

jemplos de Iluminación
!a interacción de la luz con los objetos es muy compleja en la naturaleza. &ncluso en el mundo
virtual donde es menos complejo el modelo de la iluminación) las uentes de luz son simplista
simplistas)
s) y
las super*cies son menos detalladas) el eecto de una uente de luz en un objeto visual es algo
complejo. Esta sección presenta algunos ejemplos de la iluminación para ayudar a clari*car las
características) capacidades)
capacidades) y las limitaciones del modelo de iluminación en Java 3D.

Dos Luces #oloreadas

!a 0igura 12A muestra una sola esera blanca iluminada por dos uentes de luz direccionales)
una roja y una azul. $un+ue puede sorprendernos) la sombra +ue resulta es magenta. 5ezclar
rojo y azul da lugar a la p"rpura) +ue es el resultado en el sistema de color sustractivo. 5ezclar
luces rojas y azules resulta en magenta) los resultados de un sistema de color aditivo.

En ausencia de luz) la esera es negra. 'i la "nica uente de luz es roja) entonces la esera
aparecerá roja) o algo sombreada en rojo. #on la adicción de una uente de luz azul) sólo son
posibles el rojo) el azul y las mezclas de estos dos.

Di!erentes 9atrones de Iluminación

!a siguiente aplicación ilustra las dierencia entre las uentes de luz. En Li&'ts)9lanes(pp4java
se iluminan tres planos con una uente de luz distinta. De iz+uierda a derec(a) los objetos
DirectionalLi&'t)) 9ointLi&'t
DirectionalLi&'t 9ointLi&'t)) y SpotLi&'t
SpotLi&'t   iluminan los planos. !a 0igura 121 muestra la
imagen renderizada por la aplicación.
 

El DirectionalLi&'t  ilumina el plano uniormemente. El 9ointLi&'t


9ointLi&'t)) situado directamente sobre
el borde superior del plano del centro) ilumina el plano de orma irregular debido a la dirección
variable de la luz con respecto a las super*cies) y) en un grado inerior) a la atenuación de la luz.
El SpotLi&'t
SpotLi&'t)) también situado directamente sobre el centro de su plano) ilumina solamente una
parte pe+ue9a del tercer plano.

!a 0igura 12C ilustra la geometría implicada en la iluminación de los primeros dos planos. En la
ilustración iz+uierda) los vectores de luz constantes de la uente DirectionalLi&'t
DirectionalLi&'t en
 en conjunción
con los vectore
re4exión)vecto ress nor
e inclusonormal
demales
laes consta
constante
ntessdeldeplano.
iluminación un pla
plano
Ennola dan lugar
lugar aderec(a
ilustración vector
vectores
eslosco
const
nstant
antes
vectoreses de
deluz
la
variables de la uente 9ointLi&'t
9ointLi&'t se
 se combinan con los vectores normales constantes del plano
dando por resultado las distintas direcciones para los vectores de re4exión) y una iluminación
desigual del plano. El SpotLi&'t
SpotLi&'t es
 es un caso especial de la uente 9ointLi&'t
9ointLi&'t donde
 donde la in4uencia
de la uente de luz está limitada por el ángulo de la extensión.

#oncentración
#oncentración 0 :n&ulo de ;tensión de SpotLi&'ts

!a 0igura 12 muestra las imágenes renderizadas a partir de versiones distintas del programa
#oncentration(pp4java. >n plano es iluminado por nueve puntos de luz. !os valores del ángulo
y de la concentración de la extensión para las luces de los puntos varían con la posición. El
ángulo de la extensión varía por cada *la con valores de .) .3 y .A radianes/ desde la *la
superior a la inerior) respectivamente. !a concentración varía por cada columna con valores de
)H) AH)H) y HH)H desde la columna de la iz+uierda a la de la derec(a) respectivamente.
!os valores de concentración no tienen ning"n eecto para la *la superior) el ángulo de la
extensión es el "nico actor. En la *la inerior) la concentración tiene un eecto para cada uno de
los ángulos de la extensión. El azul en las imágenes es el color diuso del material.
 

#oncentration(pp4java demuestra dos limitaciones del modelo de iluminación. !a primera es el


renderizado de los arteactos representados en la 0igura 12. $rteactos similares son visibles
en la 0igura 121. !os modelos desiguales de iluminación para los planos verdes y rojos son
debidos al pe+ue9o n"mero de vértices usados para representar los planos. :ecordamos +ue el
modelo de iluminación se aplica solamente en los vértices. #uantos más vértices) mayor es el
eecto de sombreado y más tardará en renderizarse.
!a dierencia entre las imágenes iz+uierda y derec(a de la 0igura 12 es debido a la dierencia
en el n"mero de las vértices usados para representar el plano. !a versión del programa +ue
generó la imagen iz+uierda utilizó 1 veces más vértices +ue la +ue está a la derec(a ,.AHH
vértices contra H.HHH/. !os arteactos de la imagen derec(a son un resultado de la reducción de
la densidad de vértices en la super*cie y la triangulación impuesta por el sistema de renderizado
de Java 3D.

Limitar el )<mero de Luces

!a segunda limitación demostrada en #oncentration(pp no se ve en la representación. El plano


de #oncentration(pp
#oncentration(pp son son realmente cuatro objetos planos uno al lado de otro. Esto se (izo
para
para su
supe
pera
rarr un
una
a po
pote
tenc
ncia
iall li
limi
mita
taci
ción
ón dedell si
sist
stem
ema
a de re
repr
pres
esen
enta
taci
ción
ón su
suby
byac
acen
ente
te.. !a
especi*cación
especi*cación de OpenGL
OpenGL re+uiere
 re+uiere soporte para oc(o uentes de luz simultáneas. 'i el plano de
#oncentration(pp   uera un objeto visual)
#oncentration(pp visual) entonces
entonces OpenGL
OpenGL limitaría
 limitaría el n"mero de luces a
oc(o en algunas má+uinas.

>sando los límites de in4uencia para seleccionar solamente las uentes de luz relevantes para un
objeto visual) Java 3D crea dinámicamente las especi*caciones de iluminación para las luces
mientras +ue se renderizan los objetos visuales. 5ientras +ue ning"n objeto sea iluminado por
más de oc(o luces) los programas de Java 3D no están limitados en el n"mero de luces en un
mundo virtual.

%or eso proporcionar al cuadro planos más pe+ue9os y los límites apropiados para asegurarse de
+ue ning"n plano se ve in4uenciado por más de oc(o luces) en el ejemplo parece +ue (ay nueve
luces
luces r
real
ealmen
mente te di
diez)
ez) con la luz amb
ambien
iente/
te/ ilu
ilumin
minand
ando
o un pl
plano
ano.. 7ec
7ecesi
esita
ta un poc
poco
o más
prog
progra
rama
macición
ón)) pe
pero
ro el pr
prog
ogra
rama
ma +u +ue
e re
resu
sult
ltaa es má
máss po
port
rtab
able
le.. 5i
5ien
entra
trass +u
+ue
e mu
muc(
c(as
as
implementa
impl ementacione
cioness de OpenGL
OpenGL utilizan
 utilizan más de oc(o luces simultáneas) si estamos planeando
distribuir nuestros programas) debemos tener en cuante esta limitación potencial.
potencial.

En esta sección)
iluminación Javaalgunos
3D. !a ejemplos
intenciónmuestran alguna de
de esta sección es las
darcaracterísticas
a los lectoresyalgunos
las limitaciones
ejemplosdede
la
programas básicos y algunas *guras de ejemplo para comparar con sus propios programas. 7o
 

es posible proporcionar ejemplos de cada posible situación de iluminación) pues los actores en
la representación son demasiado dierentes.

>na "ltima cosa) 9ointLi&'t


9ointLi&'t y
 y SpotLi&'t
SpotLi&'t utilizan
 utilizan la especi*cación de atenuación. !a atenuación
se esp
espec
eci*c
i*ca
a po
porr los tér
términ
minos
os co
const
nstant
antes
es en la ec ecuac
uació
ión
n cua
cuadrá
drátic
tica
a inv
invers
ersa
a bas
basad
ada
a en la
distancia entre la luz y el vértice véase el blo+ue de la reerencia anterior/. Encontrar la
atenuación apropiada para una aplicación especí*ca es un problema artístico. 7o se incluye
ningun programa de ejemplo de atenuación en este tutorial.

Objetos Material

!as característic
características
as materiales
materiales de un obje
objeto
to visu
visual
al se espe
especi*c
ci*can
an en el obje
objeto
to Material
Material de
 de un
manojo de aspecto. Material
Material es
 es una subclase de )ode#omponent
)ode#omponent.. !a 0igura 12F muestra la
 jerar+uía de clases
clases del $%& Java
Java 3D para Material
Material..

El objet
objeto
o Material
Material   especi*ca colores ambiente) diusos) especular) y emisivo y un valor de
brillantez. #ada uno de los tres primeros colores se utiliza en el modelo de iluminación para
calcular la re4exión correspondiente. El color emisivo permite +ue los objetos visuales Ibrillen
intens
intensame
amente
nte en la oscoscuri
uridad
dadI.
I. El val
valor
or de bri
brilla
llante
ntezz se uti
utiliz
liza
a sol
solame
amente
nte pa
para
ra cal
calcul
cular
ar
re4exiones especulares.

!os siguientes blo+ues de reerencia enumeran los constructores y los métodos de la clase
Material..
Material

'umario de #onstructores de la #lase Material

El objeto Material
Material de*ne
 de*ne la aparienia de un objeto bajo la iluminación.

+aterial()

#onstruye e inicializa un objeto Material


Material usando
 usando los siguientes valores por deecto-

• ambient#olorr H.,) H.,) H.,/


ambient#olo

• emissive#olor
emissive#olor H) H) H/

• diuse#olorr ) ) /
diuse#olo
 

• specular#olor
specular#olor ) ) /

• s(ininess H.H

+aterial(olor3f am$ientolor5 olor3f emissiveolor5 olor3f


diffuseolor5
olor3f specularolor5 float s!ininess)

#onstruye e inicializa un nuevo objeto Material


Material usando
 usando los parámetros especi*cados.
especi*cados.

!ista %arcial de 5étodos de la #lase Material

void set&m$ientolor(olor3f color)

'elecciona el color ambiente de este Material


Material..

void set&m$ientolor(float r5 float g5 float $)

'elecciona el color ambiente de este Material


Material..

void setDiffuseolor(olor3f color)

'elecciona el color diuso de este Material


Material..

void setDiffuseolor(float r5 float g5 float $)

'elecciona el color diuso de este Material


Material..

void setDiffuseolor(float r5 float g5 float $5 float a)

'elecciona el color diuso más alp(a de este Material


Material..

void setEmissiveolor(olor3f color)

'elecciona el color emisivo de este Material


Material..

void setEmissiveolor(float r5 float g5 float $)

'elecciona el color emisivo de este Material


Material..

void setig!tingEna$le($oolean state)

$ctiva o desactiva la iluminación de objetos visuales +ue reerencian este objeto.

void setS!ininess(float s!ininess)

'elecciona la brillantez de este Material


Material..

void setSpecularolor(olor3f color)


 

'elecciona el color especular de este Material


Material..

void setSpecularolor(float r5 float g5 float $)

'elecciona el color especular de este Material


Material..

java.lang.String toString()

Devuelve una representación 'tring de los valores de este Material


Material..

'umario de #apacidades de la #lase Material

$demás de las #apacidades (eredadas de )ode#omponent


)ode#omponent)) los objetos Material
Material tienen
 tienen la
siguiente capacidad-
capacidad-

&9=89+96E678RE&D @ =RI7E

%ermite llerGescribir
llerGescribir inormación de los campos individuales del componente.

jemplos sencillos de Material

!as re4exiones especulares ocurren naturalmente en los objetos lisos. En general) cuanto más
lisa sea una super*cie) más de*nida e intensa es la re4exión especular.
especular. #uando una super*cie es
su*cientemente lisa) act"a como un espejo +ue re4eja la luz sin cambiar el color de la luz. %or lo
tanto) el color especular de un objeto normalmente es blanco. #ambiamos el color specular de
un Material
Material para
 para alterar la intensidad de una re4exión specular por ejemplo) olor3f(4.1f5
4.1f5 4.1f)/.

El valor de brillantez controla el rango de la extensión del ángulo de la visión para el cual se
puede ver una re4exión especular. >na brillantez más alta resulta en re4exiones especulares
más pe+ue9as. !a 0igura 12,H muestra nueve eseras distintas iluminadas por una uente de luz.
#ada esera tiene un valor de brillantez distinto.
 

>n objeto Material


Material se
 se asocia a un objeto visual a través de un objeto (pearance
(pearance de
 de la misma
mane
ma nera
ra +u
+uee lo (a
(ace
cenn lo
loss at
atri
ribu
buto
toss de
dell as
aspe
pect
cto.
o. El mé
métotodo
do Set+aterial()  de la clase
clase
(ppearance reerencia
(ppearance  reerencia un objeto Material
Material para
 para ese objeto (ppearance
(ppearance..

9ropiedades Geometr0 color #olorin&(ttributes 0

Material
Bay tres maneras de especi*car el color para un objeto visual- color por2vértice especi*cado en
la geometría con los métodos getolor()) #olorin&(ttributes
#olorin&(ttributes de de un nodo (ppearance
(ppearance)) y el
objeto Material
Material.. Java 3D permite +ue creemos objetos visuales sin usar ninguna) alguna) o las
tres ormas de especi*car color.

#uando se (a (ec(o más de una especi*cación del color) dos sencillas reglas determinan +ué
especi*cación del color toma la precedencia.

• #olo
#olorr Material
Material   se utiliza solamente cuando la representación ilumina objetos y
col
olor
or de #olorin&(ttributes
#olorin&(ttributes   sól
sólo
o se uti
utiliz
liza
a cua
cuando
ndo se ren
rende
deriz
rizan
an obj
objeto
etoss no
iluminados.

• ;eometría
;eometría po
por2
r2vér
vértic
tice
e sie
siempr
mpre
e tie
tiene
ne pr
prece
eceden
dencia
cia sob
sobre
re #olorin&(ttributes
#olorin&(ttributes   o
Material..
Material

!as reg
regla
lass pue
pueden
den ser más cl
clara
arass cua
cuando
ndo el pr
probl
oblema
ema se div
divid
ide
e en ob
objet
jetos
os ilu
ilumin
minad
ados
os o
apagados. !a iluminación está activa para un objeto cuando se reerencia un objeto Material
Material..
&nversamente) cuando no se asocia ning"n objeto Material
Material al
 al objeto visual) la iluminación está
desactivada para ese objeto. 6bserva +ue una escena puede tener tanto objetos iluminados
como apagados.

#uando la iluminación está activa para un objeto es decir) se reerencia un objeto Material
Material/)
/) se
utilizan el color material o el color de la geometría por2vértice
por2vértice para sombrear.
sombrear. 'i esta presente) el
color por2vértice
por2vértice reemplaza los colores de Material
Material diusos
 diusos y ambiente. 6bserva +ue el color de
#olorin&(ttributes nunca
#olorin&(ttributes  nunca se utiliza para la iluminación de objetos. !a siguiente 8abla resume
las relaciones-
 

#olo
#olorr de Geom
Geomet
etr0
r0 por
por V=rti
=rtice
ce #olo
#olorr #olo
#olori
rin&
n&(t
(ttr
trib
ibut
utes
es -esu
-esult
ltad
ado o
76 76 #olor 5aterial
'& 76 #olor ;eometry
76 '& #olor 5aterial
'& '& #olor ;eometry

#uando la iluminación está desactivada para un objeto es decir) no se reerencia un objeto
Material/)
Material /) se usan el color de #olorin&(ttributes
#olorin&(ttributes o o el color de por2vértice para colorear. 'i está
presente)
pres ente) el colo
colorr de la geom
geometría
etría por2vér
por2vértice
tice reemplaza
reemplaza el colo
colorr de #olorin&(ttributes
#olorin&(ttributes.. !a
siguiente 8abla resume las relaciones.

#olo
#olorr Geo
eom
metr
etr0 por V=r
=rttic
ice
e #ol
#olor #olo
#olorrin
in&
&(ttr
(ttriibut
utes
es -es
esul
ulta
tad
do
76 76 blanco plano
'& 76 #olor ;eometry
76 '& #oloring$ttributes
'& '& #olor ;eometry

Superfcies )ormales

'eg"n lo mencionado en secciones anteriores) las super*cies normales son necesarias para
sombrear los objetos visuales. $l crear objetos visuales usando clases Geometr0
Geometr0)) utilizamos uno
de los métodos set6ormal() para especi*car los vectores de los vértices.

El )ormalGenerator
)ormalGenerator   incluido con los utilidades de Java 3D genera super*cies normales al
especi
especi*ca
*carr los ob
objet
jetos
os vi
visua
suale
less +ue usa
usan
n obj
objeto
etoss Geometr0In!o
Geometr0In!o.. %a
%ara
ra gene
generar
rar supe
super*cie
r*ciess
normales) ponemos nuestro objeto visual Geometr0  
Geometr0 y llamamos a
6ormalenerator.generate6ormals() .

!os primitivos geométricos generan sus propias super*cies normalea cuando son especi*cados.

7o importa cómo se especi*can o se generan/ las super*cies normales) sólo se especi*ca una
super*cie normal por vértice. Esto conduce a algunos problemas interesantes. %or ejemplo)
cuando las dos super*cies normales de polígonos son visibles) la normal es solamente correcta
para una de las super*cies normales. El resultado es +ue las caras posteriores sean renderizadas
si se renderizan/ solamente con las características materiales de ambiente. !as re4exiones
diusa y especular re+uieren la especi*caci
especi*cación
ón normal apropiada.

Este problema com"n se soluciona especi*cando caras normales detrás al contrario +ue las
super*
super*ci
cies
es nor
normal
males
es del
delant
antera
eras.
s. >ti
>tiliz
lizamo
amoss el mét
métod
odo
o setBac>ace6ormal>lip()   de un
objeto 9ol0&on(ttributes
9ol0&on(ttributes para
 para este propósito
propósito..

!a 0igura 12, muestra dos imágenes sombreadas de una tira doblada. !a imagen de la iz+uierda
ue renderizada
renderizada desde la supe
super*cie
r*cie rontal)
rontal) y la dere
derec(a
c(a muest
muestra
ra las super*cies
super*cies norm
normales
ales
traseras.
 

#uando un vértice es compartido por las super*cies normales o varian las orientaciones) tener
solamente una super*cie normal por vértice puede dar lugar a problemas. #onsideremos los
ejemplos ilustrados en la 0igura 12,,. !a geometría ilustrada en la cara del lado iz+uierdo de la
0igura
0igura 12,, muestra la sección transversal de una super*cie donde cada polígono se orienta a un
ángulo de FHK de sus vecinos. 'i se selecciona la super*cie normal como el normal actual para
una super*cie) es muy incorrecto para su vecino. 'i las super*cies normales se especi*can seg"n
lo mostrado) entonces la super*cie estará sombreada constantemente entre los vértices con
super*cies paralelas. >n problema similar ocurre con la geometría del cubo mostrada en la cara
derec(a en la 0igura 12,,. !a solución a ambos problemas es aumentar el n"mero de vértices
para aumentar el n"mero de super*cies normales. Esto) por supuesto) aumenta el uso de la
memoria y el tiempo de la renderización.

specifcar la In$uencia de las Luces

En ejemplos anteriores) la especi*cación de los límites +ue in4uencian un objeto de luz se


consig
con sigue
ue al re
reeri
erirse
rse a un objeto
objeto %ounds
%ounds.. Est Esto
o con
conect
ectaa la loc
locali
alizac
zación
ión de los límites
límites +ue
in4u
in4uen
enci
cian
an a la lo loca
cali
liza
zaci
ción
ón de la lu luz.
z. E
Enn se
secc
ccio
ione
ness an
ante
teri
rior
ores
es se ex expl
plic
icó
ó cócómo
mo la
lass
trans
transor
ormac
macion
iones
es en el escescena
enario
rio grá
grá*co
*co ae
aecta
ctan
n a los vo vol"m
l"mene
eness de limlimite
itess usa
usados
dos pa
para
ra
especi*car los límites de in4uencia de las luces./ 5ientras +ue esto se (ace trivial para mover
luces
luces jun
junto
to con los ob objet
jetos
os vis
visual
uales
es +ue se ilu ilumin
minan
an)) otr
otras
as aplaplica
icaci
cione
oness nec
necesi
esitan
tan una
especi
esp eci*ca
*cació
ciónn más 4e 4exi
xible
ble de la in4in4uen
uenci
cia
a de lucluces.
es. $
$ort
ortuna
unadam
dament
ente)e) el $%& Jav Java
a 3D
proporciona un método alternativo para especi*car los límites de in4uencia y una manera de
limitar el ámbito en adición de los límites.
 

(lternativa a los L>mites de In$uencia? %oundin&Lea! 

>n obje
objeto
to %oundin&Lea!   es un al alte
tern
rnat
ativ
iva
a a un objet
objeto
o %ounds
%ounds   de in4
in4uen
uencia
cia.. >n ob
objet
jeto
o
%oundin&Lea!  es
 es reerido por otros nodos de la (oja para de*nir una región de in4uencia. #omo
descendiente
grá*co. de SceneGrap'Object
El objeto SceneGrap'Object)
 está )sujeto
%oundin&Lea!  está los ejemplares
al sistemadede%oundin&Lea!   se agregan
 se
coordenadas local al escenario
de su posición en el
escenario grá*co) +ue podría ser independiente del sistema de coordenadas del objeto de luz. Es
dec
eciir) us
usar
ar un %oundin&Lea!   peperm
rmitite
e a un
unaa lu
luzz y a su
suss lí
lími
mite
tess de inin4u
4uen
enci
cia
a mo
move
vers
rse
e
independientemente.

>na llamada a setInfluencingBoundingeaf()   pa para


ra un ob obje
jeto
to de luluzz es
espe
peci
ci*c
*caa el
argu
argume
mentnto
o %oundin&Lea!   co
como
mo loloss lí
lími
mite
tess de in
in4u
4uenenci
cia
a de la lu luz.
z. Es
Esta
ta esespe
peci
ci*c
*cac
ació
ión
n
reem
reempl
plaz
aza
a cu
cual
al+u
+uie
ierr es
espe
peci
ci*c
*cac
ació
ión
n re regi
gion
onal
al de loloss lí
lími
mite
tess de in in4u
4uen
enci
cia.
a. >n ob obje
jeto
to
%oundin&Lea!  puede
 puede ser compartido por varios objetos de luz.

!a 0igura 12,3 muestra el diagrama del escenario grá*co para una aplicación de ejemplo de un
objeto %oundin&Lea!  con
  con objetos de luz. En esta escena) se mueven dos luces junto con un
objeto /rans!ormGroup
/rans!ormGroup a  a la derec(a/. Estas luces podían ser ejemplares de 9ointLi&'t
9ointLi&'t   o de
SpotLi&'t.. 'in embargo) la in4uencia de estas luces no cambia cuando las luces se mueven. !a
SpotLi&'t
in4uencia de las luces se mueve cuando el /rans!ormGroup
/rans!ormGroup iz+uierdo
 iz+uierdo cambia la localización del
objeto %oundin&Lea! 
en la 0igura 12H. . %odemos comparar este diagrama del escenario grá*co con el +ue está

En la 0igura 12H) si se mueve la luz) su región de in4uencia también se mueve. 8ambién) seg"n
lo demostrado en la 0igura 12H) la región de in4uencia de dos luces +ue comparten el mismo
objeto
objeto %ounds
%ounds pueden
 pueden o no pueden tener la misma región de in4uencia. #uando dos o más
luce
lucess co
comp
mpar
arte
tenn el mi
mism
smo
o ob
obje
jeto
to %oundin&Lea! ) ti tien
enen
en si
siem
empr
pre
e la mi
mism
smaa re
regi
gión
ón de la
in4uencia.
 

:mbito de L>mites de In$uencia de las Luces

>na región de limites) con un objeto %ounds


%ounds o
 o un objeto %oundin&Lea! ) especi*ca la región de
in4uencia de un objeto de luz. >n ámbito especi*cado puede además limitar la in4uencia de una
luz amundo
del una porción
virtual del escenario
en el grá*co.
cual reside. #omo valor
!a adición porespeci*cación
de una deecto) todasdel
lasalcance
luces tienen
reduceel además
alcance
la in4uenci
in4uencia
a de una luz a los objetos
objetos visuale
visualess en el esc
escena
enario
rio grá*co
grá*co dedebaj
bajo
o de
dell &roup@sA
especi*cado.. %or ejemplo) consideremos la aplicación siguiente.
especi*cado

jemplo de :mbito de Iluminación

!a escena consiste en una lámpara y algunos objetos visuales en una mesa. !a lámpara tiene
una sombra) por eso no todos los objetos) ni toda la mesa) debe ser iluminada por la lámpara. El
interior pero no el exterior/ de la lámpara también se debe iluminar en este ejemplo) la sombra
de la lámpara es completamente opaca/. 'abemos +ue Java 3D no proporcionará la obstrucción
por nosotros. >sando sólo un volumen de limitación) la in4uencia de la luz puede ser controlada)
pero podría ser muy diícil) especialmente si se iluminan y apagan objetos +ue están uno cerca
del otro) o se mueven.

Especi*car un ámbito de limitaciones para la luz nos permite controlar limitaciones complejas
complejas de
la in4uencia
apag ados en más
apagados ácilmente.
partes
parte s sepa radas!adel
separadas "nica consideración
nario grá*co. es
escenario
esce mantener
7uestro los objetos
pensamie
pensamiento iluminados
nto inic
inicial
ial pudo sery
come
co menz
nzar
ar a co
cons
nstr
trui
uirr el es
esce
cena
nario
rio gr
grá*
á*co
co %ranc'Groups
%ranc'Groups   papara
ra los objetos
objetos ilu
ilumin
minado
adoss y
apagad
apa gados)
os) pe
pero
ro éso no es a men menudo
udo necesari
necesario
o ni re
recom
comend
endad
ado
o par
para
a la may
mayorí
oría
a de las
aplicaciones.
 

El diagrama del escenario grá*co de la iz+uierda de la 0igura 12, muestra un acercamiento


nativo a la construcción del escenario grá*co. !a organización no es natural y será diícil de
manipular en una aplicación animada. %or ejemplo) si la mesa se mueve) la lámpara y otros
objeto
objetoss deb
deben
en mov
movers
erse
e cocon
n ell
ella.
a. En el esc
escena
enario
rio grá
grá*co
*co de la iz+
iz+uie
uierd
rda)
a) mov
mover
er la mes
mesa a
med
m edia
iant
nte
e la ma
mani
nipu
pula
laci
ción
ón de /rans!ormGroup
/rans!ormGroup// no momove
verá
rá la lá
lámp
mpar
ara
a o el re
rect
ctán
ángu
gulolo
ilumiando? solamente el rectángulo apagado se moverá con la mesa.

El diagrama del escenario grá*co de la derec(a representa


representa una organizaci
organización
ón más natural para la
escena. !os objetos
mueve mediante laen la mesa sonde
manipulación (ijos del /rans!ormGroup
/rans!ormGroup +ue
/rans!ormGroup/
/rans!ormGroup  +ue coloca
/ los objetos la mesa.
de la mesa 'i la mesacon
se moveran se
ella.

!a escena de ejemplo se crea en Li&'tScope(pp4java. !a 0igura 12,A muestra dos imágenes


renderizadas del programa de ejemplo. !a imagen iz+uierda utiliza ámbito de luz para limitar la
in4uencia de la luz de la lámpara a la lámpara y el rectángulo iluminado. !a imagen derec(a no
utiliza scoping? por lo tanto) la luz de la lámpara ilumina el L rectángulo no iluminadoL.
iluminadoL.

El área brillante debajo de la lámpara no representada en ning"n diagrama del escenario
grá*co/ es un polígono situado justo sobre la tapa de la mesa. Este polígono brillante representa
representa
la parte de la mesa +ue es iluminada por la lámpara. El área brillante aparece más ligera +ue el
resto de la mesa incluso en la imagen derec(a de la 0igura 12F/ por+ue sus super*cies se
alinean más cercanas al punto de luz de la lámpara.

!a sombra no aparece iluminada en ninguna imagen de la 0igura 12,A por+ue su característica


Material diusa
Material  diusa es negra. !a sombra puede crearser con el uso del scoping solamente si un nodo
adicional del grupo +ue se utiliza en el escenario grá*co.

!a sombra en esta escena ue creada a mano. !as técnicas para crear sombras automáticamente
incluso dinámicamente/ se discuten en la siguiente sección.

 8ampoco se representan en ning"n diagrama del escenario grá*co las tres uentes de luz
 8ampoco
adicionales- dos uentes de luz direccionales y una uente de luz ambiente. Mstas son necesarias
para simular la luz de una escena natural.

El siguiente blo+ue de reerencia muestra los métodos de la clase Li&'t


Li&'t usados
 usados para especi*car
limitaci
limitaciones
ones del scoping
scoping y el uso de los objetos %oundin&Lea!  para
  para especi*car los límites de
in4uencia.
 

!ista %arcial de 5étodos de la #lases Li&'t

6tros métodos de la clase Li&'t


Li&'t aparecieron
 aparecieron en secciones anteriores.

void addScope(roup scope)

$9ade el ámbito especi*cado a la lista de ámbitos de este nodo.


java.util.Enumeration get&llScopes()

Devuelve un objeto Enumeration con todos los ámbitos.

void insertScope(roup scope5 int index)

&nserta el ámbito especi*cado por el nodo grupo en el índice especi*cado.


especi*cado.

int numScopes()

Devuelve un contador con los ámbitos de luces.

void removeScope(int index)

Elimina el ámbito del nodo en la posición de índice especi*cada.

void setInfluencingBoundingeaf(Boundingeaf region)

'elecciona la región de in4uencia de la luz al %oundin&Lea!  especi*cado.


 especi*cado. 'eleccionar un
%oundin&Lea!  sobreescribe
 sobreescribe un objeto %ounds
%ounds..

void setScope(roup scope5 int index)

'elecciona el ámbito de (erencias en el índice especi*ado.


especi*ado. %or deecto las luces tienen ámbitos
sólo para los límites de su región de in4uencia.

6tra ventaja de usar alcances para limitar la in4uencia de una luz- puede reducir el tiempo de
renderizado. #alcular la intersección de los límites para un objeto visual con los límites +ue
in4uencian de una luz es más complejo +ue determinar el alcance de una luz. Debemos tener
cuidado con +ue ni el uso de los límites de in4uencia ni los alcances limitará la in4uencia de una
luz a una parte de un objeto visual.

#rear Objetos %rillantes"en"la"Oscuridad Sombras 0

Otros 9roblemas de Iluminación


!as secciones anteriores cubren las aplicaciones típicas de iluminación en Java 3D. Esta sección
cubre algunas de las características y técnicas menos utilizadas.
 

Objetos %rillantes"en"la"Oscuridad

El objeto
objeto Material
Material permite
 permite la especi*cación de un color emisivo. Esto se puede utilizar para
crear el eecto de un objeto brillante en la oscuridad. 8ener un color emisivo no (ace del objeto
visual una uente
en aplicaciones de luz? notales
especiales) iluminará
comootros objetos
indicar visuales.
un objeto El Material
especialMaterial Emisivo
 Emisivo
o un objeto es(a
+ue se también "til
escogido.

!a 0igura 12,1 muestra la escena del programa del ámbito de luz donde se le (a dado color
emisivo al rectángulo no iluminado. #omparemos esta imagen con la imagen iz+uierda de la
0igura 12,A. #omo podemos ver) el uso del color emisivo sólo modi*ca al objeto visual +ue lo
tiene. Este ejemplo también demuestra +ue el uso e*caz del color emisivo) como con la mayoría
de los parámetros de la iluminación) es más un problema artístico +ue de programación.

#alcular Sombras

!a complejidad de calcular sombras es tan grande +ue no orma parte de ning"n sistema de
grá*cos en tiempo real. !a complejidad viene de cálcular si la uente de luz alcanza o no un
vértice. 8odo polígono de otro objeto visual debe ser considerado al calcular la respuesta.
 

El sombreado es muc(o más complejo en realidad. !as uentes de luz no son uentes puramente
direccionales ni perectas. %or lo tanto) las sombras no tienen bordes sostenidos. &gnorando la
realidad) como (acemos a menudo en grá*cos) ec(emos una ojeada a las ormas de simular
sombras.

#rear Sombras

Bay dos partes básicas al simular o al alsi*car/ sombras- calcular donde están las sombras) y
crear geometrías o texturas/ para servir como sombras. Bay varias maneras de calcular la
localización
localización de la sombra) pero los detalles de las distintas técnicas de sombreado están más allá
del alcance de esta guía. !as dos secciones siguientes cubren dos técnicas generales para crear
el contenido de la sombra.

Sombrear 9ol>&onos

>n polígono especi*cado sin propiedades Material


Material se
 se puede utilizar como polígono de sombra)
llamado un polígono sombra coloreado. El color del polígono sombra) especi*cado por geometría
o con un ob
obje
jeto
to #olorin&(ttributes
#olorin&(ttributes)) se elige para aparecer como el objeto en sombra. !os
polígonos sombra especi*cados
especi*cados de esta manera pueden parecer alsos en escenas complejas.

!os polígonos sombra especi*cados con las características Material


Material pero
 pero uera de la in4uencia
de uno o más objetos de luz se llaman polígonos sombra sombreados. !os polígonos sombra son
somb
sombreread
ados
os po
porr lo
loss ob
obje
jeto
toss de lu
luzz +u
+ue
e lo
loss in
in4u
4uen
enci
cian
an ta
tall +u
+ue
e pa
pare
rece
cen
n má
máss re
real
alis
ista
tas.
s.
6bviamente) especi*car un polígono sombra sombreado es más complejo +ue especi*car un
polígono sombra coloreado.

7o importa cómo se especi*+ue un polígono sombra) la posición del polígono sombra es justo
arriba) o en rente de) el polígono al +ue da sombra. 5ientras +ue la adición de polígonos sombra
no da lugar normalmente a más polígonos para renderizar debido a la obstrucción de otros
polígonos/ crea más objetos en el universo virtual lo +ue puede degradar el uncionamiento de la
renderización.

En vez de crear los polígonos sombra) las sombras pueden crearse cambiando la in4uencia de
luces para excluir polígonos Len la sombraL. El ámbito de luces es "til para este propósito. 'in
embargo) puesto +ue la in4uencia se determina en base al objeto) puede ser complejo calcular
cómo subdividir los objetos visuales +ue se sombrean parcialmente.

Sombrear /e;turas

#omo las so
#omo sombr
mbras
as ant
anteri
eriore
ores)
s) las so
sombr
mbrasas nat
natura
urales
les son com
compl
pleja
ejas.
s. >na som
sombra
bra nat
natura
urall
raramente tiene un borde recto y una sombra constante. 'e puede usar el texturado para (acer
sombra
som brass más re
reali
alista
stas.
s. Bay do doss man
manera
erass bá
básic
sicas
as de usa
usarr te
textu
xturad
rado
o par
paraa cr
crear
ear som
sombra
bras-
s-
aplicando textura a los polígonos sombra) o la aplicació
aplicación
n de texturas
t exturas a los objetos visuales.

#omo el texturado no se (a cubierto todavía #ap>tulo B/) y el cálculo de las texturas de la


sombra incluso o2line/ es diícil y va más allá del alcance de esta guía/ este es un tema
pendiente para otro libro.

Mover Objetos Mover Sombras

Debemos tener presente +ue la adición de sombras a una aplicación (ace la aplicación muc(o
más compleja. %or ejemplo) cuando un cubo con una sombra gira) la sombra gira y se deorma.
%ara esa materia) las luces móviles (acen +ue las sombras se muevan también. En cual+uier
caso) el movimiento agrega otro nivel de complejidad a la programaci
programación
ón de sombras.
 

9ro&rama de jemplo de Sombras

El pr
prog
ogra
rama
ma S'adow(pp4java  da un eje ejemp
mplo
lo de cóm
cómo o se pue
pueden
den crear
crear pol
políg
ígono
onoss som
sombra
bra
sencillos. El programa de*ne una clase para crear los polígonos sombra. !a clase sombra crea un
polígono
polígono 1"3
#ódi&o sombra
  mu para
mues
estra cada
tra geometría
geom
la clas
ase etría dada como  us
e SimpleS'adow
SimpleS'adow  entrada
entra
usadadapa
ada de
ra ino
para inormac
rmación.
crea
crear ión.
r po
polí
lígo
gono .ra&mento
Elnos
s so
sombra de
mbra en
S'adow(pp4java. !a 0igura 12, muestra la escena renderizada con una sombra.

.ra&mento de #ódi&o 1"3 #lase S'adow para #rear 9ol>&onos Sombreados4


%. pu$lic class SimpleS!ado" extends S!ape3D '
. SimpleS!ado"(eometr#&rra# geom5 Aector3f direction5
3. olor3f col5 float !eig!t) '
,.
-. int vount  geom.getAertexount()*
. Juad&rra# pol#  ne" Juad&rra#(vount5 eometr#&rra#.99RDI6&7ES
/. @ eometr#&rra#.99R83
1. )*
2.
%4. int v*
%%. oint3f vertex  ne" oint3f()*
%. oint3f s!ado"  ne" oint3f()*
%3. for (v  4* v K vount* v) '
%,. geom.getoordinate(v5 vertex)*
%-. s!ado".set( vertex.x  (vertex.#!eig!t) G direction.x5
%. !eig!t  4.444%f5
%/. vertex.<  (vertex.#!eig!t) G direction.#)*
%1. pol#.setoordinate(v5 s!ado")*
%2. pol#.setolor(v5 col)*
4. 0
%.
. t!is.seteometr#(pol#)*
3. 0

@arias asunciones (ec(as en la clase SimpleS'adow


@arias SimpleS'adow para
 para (acerlo ácil/ limitan las aplicaciones
de esta clase
clase.. SimpleS'adow
SimpleS'adow   está limitada en +ue- proyecta solamente a los planos) sólo
considera una proyectando.
el +ue se está luz) sólo (ace Escribir
algunasuna
orientaciones) no considera
clase de *nes generaleslas dimensiones
para dellaplano
el cálculo de sobre
sombra es
una empresa importante.
 

/ópico (van7ado? l 9apel del Objeto View en el

Sombreado
!a vista o las vistas/ asociadas a un escenario grá*co juegan una gran variedad de papeles en
cómo se renderiza una escena. Esta sección no explica todos los papeles del objeto View View.. !a
especi*cación
especi*cació n del $%& Java 3D proporciona una reerencia completa a la clase View
View.. Esta sección
menci
men ciona
ona solament
solamente e do
doss mét
método
odoss de la cla
clase
se View
View   "tiles para entender el sombreado de
objetos visuales.

'eg"n lo mencionado en la sección I@ectores


I@ectores de ojo local contra ojos in*nitoI) el vector del ojo es
constante como valor por deecto. Esto se conoce como un vector de ojo in*nito. Es decir) la
esce
escena
na se rerend
nder
eriz
iza
a co
como
mo si uuer
era
a vi
vist
sta
a de
desd
sdee el inin*n
*nit
ito.
o. 8en
ener
er un ojojo
o in
in*n
*nit
ito
o re
redu
duce
ce
perceptiblemente
perceptiblemente el cálculo de renderización.

'in embargo) la imagen +ue resulta puede parecer incorrecta. !a 0igura 12,F muestra las
imágenes renderizadas a partir de una escena usando un ojo in*nito y un ojo local usando
diversas uentes de luz.

%ara
de laapreciar
ena..completamente
escena
esc !a esc ena sonlasnue
escena imágenes
nueve
ve es des laen0igura
esera
eras 12,Fnizaci
necesitamos
una organiz
orga ación
ón pl conocer
plana
anar
r. #ada launa
#ada geometría
de las
imágenes se ve con el mismo campo visual desde la misma posición. !as "nicas variables son si
 

la luz es un DirectionalLi&'t
DirectionalLi&'t o  o un 9ointLi&'t
9ointLi&'t)) y si el ojo es in*nito o local. El DirectionalLi&'t
tiene dirección H) H) 2/) el 9ointLi&'t
9ointLi&'t se
 se coloca en H) H) /.

!as imágenes a/ y c/ de la 0igura 12,F se renderizan con un ojo in*nito. En estas imágenes) los
vectores del ojo son constantes) así +ue las re4exiones especulares están básicamente en la
misma posición para cada esera. !as imágenes b/ y d/ de la 0igura 12,F se renderizan con un
ojo local. !os vectores del ojo varían en estas imágenes) así +ue las re4exiones especulares
están en distinta posición para cada esera. 6bservemos también +ue la re4exión diusa azul/
en las eseras varía sólo con la uente de luz. El vector del ojo sólo desempe9a un papel en el
cálculo de la re4exión especular.

>na vez más la característica de la visión del ojo in*nito se utiliza para reducir el cálculo) y por lo
tanto el tiempo de la renderización. !a imagen a/ de la 0igura 12,F tarda un menor tiempo para
renderizarse y la imagen d/ tarda el mayor tiempo. !as imágenes b/ y c/ tardan una cantidad
casi igual de tiempo) +ue es menor +ue el tiempo de la imagen d/) pero mayor +ue el de la
imagen a/. El tiempo real para renderizar varía con el sistema utilizado. !a dierencia es más
pronunciada en los sistemas +ue renderizan por sot=are.

!ista %arcial de 5étodos :elacionados con el 'ombreado/ de la #lase View

El objeto View
View contiene
 contiene todos los parámetros necesarios para rendereizar una escena
tridimensional desde un punto de vista.

void setocalE#eig!tingEna$le($oolean flag)

'elecciona una bandera +ue india si se usa el ojo local para calacular las proyecciones de
perspectivas.

void set=indo"E#epointolic#(int polic#)

'elecciona la política del modelo


modelo de vista de ojo de la ventana a uno de -

• :E!$8&@EN86N0&E!DN60N@&EO)

• :E!$8&@EN86N'#:EE7) :E!$8&@EN86NO&7D6O

El objeto View
View se
 se puede conseguir desde un Simple,niverse
Simple,niverse usando
 usando los métodos apropiados.
Entonces el objeto View
View se
 se puede manipular como en el siguiente ejemplo-

Simple?niverse su  ne" Simple?niverse(canvas)*


su.getAie"er().getAie"().setocalE#eig!tingEna$le(true)*

También podría gustarte