Informació de Navegació i Fons

Tutorial de VRML2.0

Aquest mòdul és una mica un calaix de sastre per acabar de veure les eines més útils de VRML2.0.

Informació de Navegació

La informació de navegació són aquelles característiques del browser que es poden modificar des de VRML2.0. Per exemple, quin tipus d'interfície de navegació es vol, si es vol llum d'usuari o no, velocitat de moviment, etc. Aquesta eina és molt útil per a poder establir certs paràmetres del browser, sense que ho hagi de fer l'usuari a través del menú.

La manera de definir aquests paràmetres, és mitjançant el node NavigationInfo. De tota manera, no totes les opcions dels menús del browser estan accessibles des d'aquest node. Vejam les més importants:

El llum d'usuari o headlight

Aquest llum ja l'hem descrit en el mòdul sobre Il.luminació i varem veure que és com si fos un llum de casc de miner. Aquest llum, pot interferir en la il.luminació que volem donar al nostre entorn i per tant és important poder-lo apagar ja d'entrada. La manera de fer-ho és:

Exemple1: Apagar llum d'usuari o headlight.

NavigationInfo { headlight FALSE }

Afegint aquesta línia a un entorn, ens assegurem que controlem la il.luminació.

Interfície de Navegació

Quan es navega amb un browser de VRML, es pot triar d'entre tres modes que llistem a continuació:

Mode d'examinar objectes o EXAMINE:
amb el qual, el punt de vista resta quiet, i són els objectes els que es mouen respecte el punt de vista. Aquest mode és molt útil, justament, per a examinar objectes per tots costats.
Mode de caminar o WALK:
amb el qual, el punt de vista es mou, però limita el moviment de manera que es mantingui en un pla o bé seguint un terreny. Aquest mode va molt bé per a emular el moviment humà o d'un vehicle terrestre.
Mode de vol o FLY:
amb el qual, el punt de vista es mou en totes direccions lliurement.
Cap o NONE:
amb el qual, no apareix cap tauler de controls de navegació. Això pot ser útil si volem donar nosaltres, eines per a controlar els moviments i la interacció en general.

Tot el que cal fer és triar la paraula del navegador que volem utilitzar i escriure la següent línia:

Exemple2: Triar el tipus d'interfície de navegació.

NavigationInfo { type "WALK" }

Velocitat de moviment dins l'entorn

També pot ser interessant controlar la velocitat ambque es desplaça el punt de vista dins l'entorn que hem dissenyat. Això es controla amb:

Exemple3: Establir la velocitat de moviment del punt de vista.

NavigationInfo { speed 1.0 }

On la quantitat estipulada significa metres per segon (recordeu que les unitats en VRML es prenen com a metres).

Fons

El control d'un color de fons pot ser molt útil pel disseny d'un entorn. En VRML2.0, no només podem controlar el color, si no que a més podem controlar degradats de cel, de terra o bé posar imatges com si fossin escenografies.

L'Esfera de Cel i Terra

Per a definir un color sòlid o un degradat de fons, el VRML2.0 defineix el concepte d'esfera (o semiesfera) de cel i terra. El cel és com si hi haguès una esfera de radi infinit que engloba tot el món. El terra és una semiesfera de radi infinit posada boca amunt que engloba tota la meitat inferior del món. Tot això es pot fer amb el node Background.

Per aquestes esferes es permet definir un sol color, o bé es pot definir el color que pertoca a un cert angle d'elevació. Curiosament, en l'esfera del cel, l'angle es calcula a partir del punt superior ("pol nord") de l'esfera que és l'angle 0º i va incrementant fins arribar al punt inferior ("pol sud") que és l'angle 180º. En canvi, la semiesfera de terra funciona a l'inrevés. La següent il.lustració mostra una vista lateral de l'esfera del cel (externa) i la semiesfera del terra (interna).

No és obligatori definir els dos fons, l'esfera del cel i la semiesfera del terra, si no que es pot triar de tenir un o l'altre o els dos (o cap). A continuació veurem un exemple en que definim un sol color de cel.

Exemple4: Definim un fons blau uniforme.

Background {
	skyColor [ 0.8 0.8 1 ]
}

Shape { # Objecte de referencia
	geometry Sphere { radius 2 }
	appearance Appearance { material Material { diffuseColor 1 0.8 0 } }
}

Aquí estem definint un sol color de cel, el qual el VRML s'encarrega de distribuir-lo a tot el fons. El següent exemple defineix un degradat de blau fosc a taronja, com si fos una posta de sol.

Exemple5: Definim una "posta de sol".

Background {
	#          0º       22º    45º    60º          75º        85º        90º
	skyAngle [	    0.384, 0.785, 1.047,       1.309,     1.484,     1.5708  ]
	skyColor [ 0 0 0.2, 0 0 1, 0 1 1, 0.75 0.75 1, 0.8 0.8 0, 0.8 0.6 0, 1 0.4 0 ]
	#          blaufosc blau   cian   blauclar     groc       taronja    vermellos
}

Shape { # Objecte de referencia
	geometry Sphere { radius 2 }
	appearance Appearance { material Material { diffuseColor 1 0.8 0 } }
}

Cal fer observar que el primer angle, el zero (0º), no s'inclou en la llista d'angles. Ja es dóna per suposat que el primer color correspon al "pol nord", és a dir, a zero graus.

Com es pot observar, el darrer color definit (el vermellos), s'extén fins al pol sud.Això és degut a que el VRML2.0, omple tota l'esfera de color i per tant dedueix que volem omplir amb el darrer color definit, la resta d'esfera que queda indefinida.

Per les dues raons que acabem d'explicar, el primer exemple de color de fons uniforme, només defineix un sol color i cap angle: per que és el color corresponent a l'angle zero (i per tant no cal especificar l'angle) i per que el VRML2.0 dedueix que aquest "darrer" color definit es vol extendre fins al pol sud.

Per a posar un terra, es fa de forma anàloga, peró en aquest cas, es comença des del "pol sud" (que representa zero graus, 0º) cap amunt. Afegim doncs un terra uniforme de color verd al nostre exemple de la posta de sol:

Exemple6: Definim una "posta de sol" amb terra verd.

Background {
	#          0º       22º    45º    60º          75º        85º        90º
	skyAngle [	    0.384, 0.785, 1.047,       1.309,     1.484,     1.5708  ]
	skyColor [ 0 0 0.2, 0 0 1, 0 1 1, 0.75 0.75 1, 0.8 0.8 0, 0.8 0.6 0, 1 0.4 0 ]
	#          blaufosc blau   cian   blauclar     groc       taronja    vermellos

	#             0º         90º
	groundAngle [            1.5708    ]
	groundColor [ 0.2 1 0.4, 0.2 1 0.4 ]
}

Shape { # Objecte de referencia
	geometry Sphere { radius 2 }
	appearance Appearance { material Material { diffuseColor 1 0.8 0 } }
}

Observeu que pel terra, el funcionament és diferent que pel cel. Aquí, el VRML2.0 dedueix que ha de posar "color transparent" entre l'últim angle definit i el "pol nord". Per tant, si només definim un sol color i cap angle, no ens mostra res, per que entre l'últim angle que hem definit (0º, zero) i el "pol nord" no ens posa res. És per aquesta rao que hem hagut de repetir el color verd de terra per la posició zero i per la posició 90º.

Imatges d'Escenografia

Per a definir un fons, el VRML2.0 també permet definir unes imatges que mapeja sobre les parets internes d'un cub de mida teòricament infinita que envolten el món. Així doncs, hem de definir 6 imatges per a cobrir les parets: frontal, posterior, dreta, esquerra, superior i inferior del cub. A continuació podem veure un exemple on les imatges no no formen un fons uniforme, però que permeten distingir bé les sis superfícies.

Exemple7: Definim un fons amb sis imatges.

Background {
	frontUrl "fons1.gif"
	backUrl "fons2.gif"
	topUrl "fons3.gif"
	bottomUrl "fons4.gif"
	rightUrl "fons5.gif"
	leftUrl "fons6.gif"
}

Shape { # Objecte de referencia
	geometry Sphere { radius 2 }
	appearance Appearance { material Material { diffuseColor 1 0.8 0 } }
}

NOTA: En el moment d'escriure el tutorial (01/97), el Cosmo Player no implementa aquest tipus de fons.



< Anterior | Menú ^