Input dell'utente


Sensori del dispositivo di puntamento


Permettono di monitorare il Dispositivo di Puntamento (DP) dell'utente (di solito, il mouse), rilevare click, drag, ..., ed eventualmente trasformarli in eventi di vario tipo.

Anchor
sensore dal comportamento predefinito (attiva un collegamento ad una risorsa Web quando l'utente clicca)
TouchSensor
monitora la posizione e lo stato del DP
PlaneSensor SphereSensor
CylinderSensor
trasformano il movimento del DP rispettivamente in una traslazione su un piano, una rotazione su una sfera e una rotazione su un cilindro

Anchor
{
  exposedField MFNode   children    []
  exposedField SFString description ""
  exposedField MFString parameter   []
  exposedField MFString url         []
  ...
}


Recupera il contenuto specificato dal campo url quando l'utente clicca su uno dei nodi figli

parameter
permette di specificare parametri aggiuntivi che il browser VRML o HTML interpreta (ad es. target=nome_del_frame per caricare la risorsa su un certo frame)
description
permette di specificare una descrizione testuale della risorsa collegata

TouchSensor
{
  exposedField SFBool  enabled             TRUE
  eventOut     SFVec3f hitPoint_changed
  eventOut     SFVec2f hitTexCoord_changed
  eventOut     SFBool  isActive
  eventOut     SFBool  isOver
  eventOut     SFTime  touchTime
  ...
}


Monitora posizione e stato del DP e spedisce eventi se:

enabled vale TRUE se il puntatore del DP si trova nell'area del sensore, cio la superficie dello schermo occupata dai nodi contenuti nel gruppo genitore del nodo TouchSensor

Quando il DP <b>entra</b> nell'area del sensore, viene generato un evento <b>isOver</b> con valore <b>TRUE</b>
Quando il DP <b>esce</b> dall'area del sensore, viene generato un evento <b>isOver</b> con valore <b>FALSE</b>
Mmentre il DP <b>all'interno</b> dell'area del sensore:<ul>
vengono continuamente generati gli eventi <b>hitPoint_changed</b> e <b>hitTexCoord_changed</b> contenenti rispettivamente il punto 3D sulla superficie della geometria (nel sistema di coordinate del sensore) e le coordinate della texture (applicata alla medesima superficie) nel punto di contatto con il DP
se l'utente attiva il DP (es. preme il pulsante del mouse) viene generato un evento <b>isActive</b> con valore <b>TRUE</b>; quando l'utente disattiva il DP (es. rilascia il pulsante del mouse) viene generato un evento <b>isActive</b> con valore <b>FALSE</b>. A questo punto, viene anche generato l'evento <b>touchTime</b> con il tempo del 'click'

PlaneSensor
{
  exposedField SFBool  autoOffset          TRUE
  exposedField SFBool  enabled             TRUE
  exposedField SFVec2f maxPosition         -1 -1
  exposedField SFVec2f minPosition         0 0
  exposedField SFVec3f offset              0 0 0
  eventOut     SFBool  isActive
  eventOut     SFVec3f translation_changed
  ...
}


Se <b>enabled</b> vale <b>TRUE</b>, e il DP viene attivato nell'area del sensore, trasforma movimenti del DP in traslazioni su un piano invisibile parallelo a <b>Z=0</b> nel sistema di coordinate locale</li>

utile per muovere oggetti su un piano

Mentre il DP all'interno dell'area del sensore:<ul>
quando l'utente attiva il DP (es. preme il pulsante del mouse) viene generato un evento <b>isActive</b> con valore <b>TRUE</b>
mentre il DP attivo e viene spostato (es. mouse drag) viene generato un evento continuo <b>translation_changed</b> pari alla traslazione relativa dal punto originale di intersezione (quando l'utente ha attivato il DP) fino al punto attuale del DP, pi il valore del campo <b>offset</b>
quando l'utente disattiva il DP, viene generato un evento <b>isActive</b> con valore <b>FALSE</b> e se <b>autoOffset</b> vale <b>TRUE</b>, <b>offset</b>
viene posto all'ultimo valore di <b>translation_changed</b>
minPosition</b> e <b>maxPosition</b> limitano i valori di <b> translation_changed</b> all'interno di un intervallo di valori (rispetto all'origine del piano <b>Z=0</b>)

Se <b>minPosition > maxPosition</b> per una componente, il movimento e' libero su quella componente

SphereSensor
{
  exposedField SFBool     autoOffset       TRUE
  exposedField SFBool     enabled          TRUE
  exposedField SFRotation offset           0 1 0 0
  eventOut     SFBool     isActive
  eventOut     SFRotation rotation_changed
  ...
}

<li>se <b>enabled</b> vale <b>TRUE</b>, e il DP viene attivato nell'area del
sensore, trasforma movimenti del DP in rotazioni intorno ad una sfera
invisibile centrata nell'origine del sistema di coordinate locale</li>
<li>utile per ruotare oggetti intorno ad un punto</li>
<li>mentre il DP all'interno dell'area del sensore:<ul>
<li>quando l'utente attiva il DP (es. preme il pulsante del mouse) viene
generato un evento <b>isActive</b> con valore <b>TRUE</b></li>
<li>mentre il DP attivo e viene spostato (es. mouse drag) viene
generato un evento continuo <b>rotation_changed</b> pari alla rotazione
relativa dal punto originale di intersezione (quando l'utente ha
attivato il DP) fino al punto attuale del DP, pi il valore del campo <b>
offset</b></li>
</ul>
</li>
<li>quando l'utente disattiva il DP, viene generato un evento <b>isActive</b>
con valore <b>FALSE</b> e se <b>autoOffset</b> vale <b>TRUE</b>, <b>offset</b>
viene posto all'ultimo valore di <b>rotation_changed</b></li>
<li>il raggio della sfera usata per calcolare le rotazioni dipende dal punto
iniziale di attivazione del DP (aumenta con la distanza dal sistema di
coordinate locale)</li>

CylinderSensor
{
  exposedField SFBool     autoOffset       TRUE
  exposedField SFBool     enabled          TRUE
  exposedField SFFloat    maxAngle         -1
  exposedField SFFloat    minAngle         0
  exposedField SFFloat    offset 0
  eventOut     SFBool     isActive
  eventOut     SFRotation rotation_changed
  ...
}

<li>se <b>enabled</b> vale <b>TRUE</b>, e il DP viene attivato nell'area del
sensore, trasforma movimenti del DP in rotazioni intorno ad un cilindro
invisibile allineato con l'asse <b>Y</b> del sistema di coordinate locale</li>
<li>utile per ruotare oggetti intorno ad un asse</li>
<li>mentre il DP all'interno dell'area del sensore:<ul>
<li>quando l'utente attiva il DP (es. preme il pulsante del mouse) viene
generato un evento <b>isActive</b> con valore <b>TRUE</b></li>
<li>mentre il DP attivo e viene spostato (es. mouse drag) viene
generato un evento continuo <b>rotation_changed</b> pari alla rotazione
relativa intorno all'asse <b>Y</b> locale dal punto originale di
intersezione (quando l'utente ha attivato il DP) fino al punto attuale
del DP, pi il valore del campo <b>offset</b></li>
</ul>
</li>
<li>quando l'utente disattiva il DP, viene generato un evento <b>isActive</b>
con valore <b>FALSE</b> e se <b>autoOffset</b> vale <b>TRUE</b>, <b>offset</b>
viene posto all'ultimo valore di <b>rotation_changed</b></li>
<li><b>minAngle</b> e <b>maxAngle</b> limitano i valori di <b>
rotation_changed</b> all'interno di un intervallo di valori. Se <b>minAngle</b>
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki