Punts de Vista.

Tutorial de VRML97

En VRML97 existeix la possibilitat de definir diversos punts de vista dels mons de manera que poguem mostrar a l'usuari aquelles parts que ens semblen importants del món que hem definit. L'usuari podrà continuar navegant amb total llibertat pel món, però si definim una sèrie de punts d'interès, ell podrà anar-hi dirèctament sense perdre's ni divagar.

node Viewpoint

La manera de definir aquests punts de vista o punts d'interès, és mitjançant el node Viewpoint.

Posició i Orientació

Com sempre, veurem un exemple i després l'estudiarem:

Exemple1: Definició de dos punts de vista d'un món senzill.


Viewpoint {
	position 0 0 10
	orientation 0 0 1  0
	description "PV_per_Defecte"
}

Viewpoint {
	position 10 0 10
	orientation 0 1 0  0.7854 # 45 graus en radians
	description "PV_tres_quarts"
}

Shape {
	appearance Appearance { material Material { diffuseColor 1 0.6 0 } }
	geometry Sphere { radius 2 }
}

Transform {
	translation 0 0 -8
	children
		Shape {
			appearance Appearance { material Material { diffuseColor 0.4 0 1 } }
			geometry Sphere { radius 2 }
		}
}

Per tal de poder triar un o altre punt de vista, cal utilitzar el menú del browser (normalment es fa apareixer amb el botó dret del mouse) i sota l'apartat "Viewpoints" es podrà trobar els noms dels punts de vista que hem definit. El primer punt de vista que es defineix en el codi, passa a ser el punt de vista d'arrencada del món quan s'obre en un browser. (També és usual poder passar d'un punt de vista a un altre ambles tecles d'avançar i retrocedir pàgina del teclat).

Ara si, examinem les parts. El primer node Viewpoint defineix in punt de vista idèntic al que ja s'estableix per defecte en entrar al browser. Això ens serveix per a poder tornar a la posició inicial sense haver de tornar a carregar l'entorn. Els valors per defecte són doncs, situar l'observador sobre l'eix Z positiu a 10 unitats de l'origen i mirant en direcció de l'eix Z negatiu.

La forma en que funciona el field orientation és força incòmoda ja que no utilitza el model conegut com "look at" ("mira a..") si no que utilitza un vector com a eix de rotació i un angle de rotació per a desviar el vector director per defecte de la càmera: el [0 0 -1]. En el cas del punt de vista per defecte, l'eix de rotació definit (els tres primers valors del field orientation), és l'eix Z. Però això en realitat és indiferent ja que l'angle de rotació (el darrer valor del field orientation) és, de fet, zero graus. Per tant no hi ha desviació.

En el segon punt de vista s'entendran millor els conceptes. Aquí definim la posició de l'observador a 10 unitats positives en l'eix X i 10 unitats positives en l'eix Z. El que volem aconseguir és una vista tres quarts de l'escena i per tant volem mirar en direcció a l'origen de coordenades. Per a fer això, cal desviar el vector director per defecte de la càmera, que és el [0 0 -1], és a dir, mirant en la direcció de l'eix Z negatiu. Per a desviar-lo cap a l'origen cal rotar 45 graus respecte l'eix Y (local del punt de vista), tal i com mostra la figura:

Angle de Visió

Així com en una càmera es pot canviar la lent per tal de tenir un angle de visió més o menys gran, el model de punt de vista de VRML2.0 permet variar aquest angle de visió. L'angle que es varia és l'horitzontal i el vertical s'adapta automàticament segons les proporcions de la finestra del browser. Vejam un exemple amb tres punts de vista simulant tres tipus de lent:

Exemple2: Definició de tres punts de vista d'un món senzill.


Viewpoint {
	fieldOfView 2.618
	description "Gran_Angular"
}

Viewpoint {
	fieldOfView 1.3962667
	description "80mm"
}

Viewpoint {
	fieldOfView 0.31416
	description "Telefoto"
}

Shape {
	appearance Appearance { material Material { diffuseColor 1 0.6 0 } }
	geometry Box { size 30 10 2 }
}

Shape {
	appearance Appearance { material Material { diffuseColor 0.3 0 1 } }
	geometry Box { size 8 5 5 }
}

Shape {
	appearance Appearance { material Material { diffuseColor 0 1 0.5 } }
	geometry Box { size 1 1 8 }
}

Cal tenir clar que en canviar de punt de vista, la posició de l'observador no es modifica, és a dir, l'observador no es mou en davant i en darrera, si no que és com si tinguessim un zoom el qual utilitzem per ampliar o reduir el que cau en el nostre rang de visió.

Pas d'un punt de vista a un altre

Una altra propietat dels punts de vista és la de passar d'un a l'altre de manera suau o saltant-hi dirèctament. Treballant amb el Cosmo Player (i en general amb tots els browsers) el pas d'un a l'altre de manera suau és la manera per defecte. Si es vol saltar de cop, cal modificar el field jump i posar-lo a TRUE. Si de manera explícita es vol saltar de manera suau, cal modificar el field jump i posar-lo a FALSE.

NOTA: En el moment d'escriure el tutorial (01/97), el Cosmo Player no fa cas del field jump del codi i aplica salt suau o salt brusc en funció del que es digui interactivament a través del menú del browser.



< Anterior | Menú ^ | Següent >