El sensor de proximitat és una eina molt interessant per a poder fer un seguiment dels moviments de l'observador en una certa zona de l'entorn. El node ProximitySensor ens permet definir una zona en forma de caixa centrada en una certa posició de l'espai, la qual detecte si l'observador és dins o fora, en quin instant entra o surt, etc.
A continuació donem un exemple on un TimeSensor s'engega o s'apaga en funció de si l'observador
és dins o fora d'una zona cúbica de l'espai. Per a veure com s'engega i s'apaga el TimeSensor,
enllaçarem el nostre exemple del Cub Canviant de Color del mòdul anterior a un ProximitySensor
que definirem nou.
|
Exemple1: Sensor de proximitat engega i apaga el canvi de color del cub.
|
Els elements nous són el sensor de proximitat ZonaActiva que defineix una zona de 8x8x8 unitats centrada en l'origen (0,0,0), i l'últim ROUTE que connecta el eventOut isActive del sensor de proximitat amb el exposedField enabled del sensor de temps.
Aquest conjunt, detecte si l'observador és fora o dintre de la zona compresa entre els plans X = 4 i X = -4, Y = 4 i Y = -4 i Z = 4 i Z = -4. Si l'observador és fora, el sensor de proximitat emet un esdeveniment de isActive = FALSE i per tant el ROUTE ho canalitza cap a desactivar el sensor de temps a través del exposedField enabled (on enabled vol dir activat en anglès). Si l'observador és dintre, el sensor de proximitat emet un esdeveniment de isActive = TRUE i per tant el ROUTE ho canalitza cap a activar el sensor de temps.
D'aquesta manera, el canvi de color queda congelat mentre l'observador és fora de la zona i torna a variar quan
l'observador entra.
Exercicis proposats:
|
Abans que res, cal dir que el nom de "tacte" és del tot inapropiat pel que fa aquest sensor. En anglès es defineix com a node TouchSensor que és el que realment és desafortunat, la traducció senzillament pateix de l'original.
El que en realitat fa aquest sensor és permetre detectar quan l'observador apunta a un objecte amb el cursor i quan prem el botó del ratolí. Per tant, permet definir "botons 3D".
Per veure com funciona, modificarem l'exemple anterior i ara el canvi de color del cub començarà quan es pitji
sobre el cilindre verd en primer pla.
|
Exemple2: Sensor de tacte engega el canvi de color del cub.
|
Mentre s'estigui prement el "boto verd", el sensor de tacte va emetent esdeveniments de que està actiu i s'encaminen cap al sensor de temps que activa el canvi de color. En deixar de prémer, el sensor de tacte envia esdeveniments d'inactivitat i atura el sensor de temps, aturant així el canvi de color.
És curiós notar que el sensor de tacte ha de ser agrupat juntament amb els objectes que serviran de botó,
dintre d'algun node d'agrupació, per tal que el VRML sàpiga quins objectes estaran actius al pitjat de l'usuari.
Per això hem definit el sensor de tacte SensorBotoVerd com a "germà" del cilindre que defineix la
geometria del botó dins el node agrupador BotoVerd Transform.
Exercicis proposats:
|