Sistemi multimediali Massimiliano Piscozzi – [email protected] ProximitySensor • Rileva quando l’avatar entra (ed esce) in una zona rappresentata da un parallelepipedo • Quando l’utente si trova all’interno del parallelepipedo il sensore traccia la sua posizione e orientazione ProximitySensor : X3DEnvironmentalSensorNode { SFBool [in,out] enabled TRUE SFVec3f [in,out] center 000 SFVec3f [in,out] size 000 SFTime [out] enterTime SFTime [out] exitTime SFRotation [out] orientation_changed SFVec3f [out] position_changed SFBool [out] isActive ... } Permette di far iniziare (terminare) delle animazioni quando l’avatar si avvicina (allontana) ad un particolare oggetto Permette di muovere un oggetto in modo da replicare il movimento dell’avatar (utile per la creazione di interfacce) Esempio (1) • Animazione di un parallelepipedo in base alla vicinanza dell’avatar ProximitySensor enterTime TimeSensor PositionInterp. startTime set_fraction fraction_changed value_changed Transform ·· · ·· · scale ·· · exitTime ·· · TimeSensor PositionInterp. startTime set_fraction fraction_changed value_changed ·· · ·· · Shape ·· · Appearance ·· · Box ·· · Material ·· · Esempio (2) • Posizionamento di un oggetto in base alla posizione dell’avatar ProximitySensor Transform position_changed translation orientation_changed rotation ·· · ·· · La grandezza del sensore (campo size) deve essere tale da racchiudere tutta la scena virtuale Occorre disabilitare il rilevamento delle collisioni: <Collision collide=“false”> ... </Collision> Sistema di coordinate locali corrispondente alla posizione dell’avatar Collision ·· · Transform ·· · VisibilitySensor • Rileva quando un’area rappresentata da un parallelepipedo è visibile all’avatar VisibilitySensor : X3DEnvironmentalSensorNode { SFBool [in,out] enabled TRUE SFVec3f [in,out] center 000 SFVec3f [in,out] size 000 SFTime [out] enterTime SFTime [out] exitTime ... } Permette di far iniziare (terminare) delle animazioni quando l’avatar può o meno vedere un particolare oggetto (utile per attirare l’attenzione dell’utente) Sound (1) • Il nodo Sound permette di creare delle sorgenti acustiche nello spazio 3D Sound : X3DSoundNode SFVec3f [in,out] SFVec3f [in,out] SFFloat [in,out] SFFloat [in,out] SFFloat [in,out] SFFloat [in,out] SFFloat [in,out] SFNode [in,out] SFBool [] ... } { location direction intensity minFront minBack maxFront maxBack source spatialize 000 001 1.0 0 0 0 0 NULL TRUE [X3DSoundSourceNode] • Modello acustico minFront maxFront location direction maxBack minBack Sound (2) • File audio (.wav, .midi, .mp3) AudioClip : X3DSoundSourceNode { SFBool [in,out] loop SFFloat [in,out] pitch SFTime [in,out] startTime SFTime [in,out] stopTime SFTime [in,out] pauseTime SFTime [in,out] resumeTime MFString [in,out] url SFTime [out] duration_changed SFTime [out] elapsedTime SFBool [out] isActive SFBool [out] isPaused ... } TRUE 1 0 0 0 0 “” I campi loop, startTime e stopTime permettono di attivare l’Audioclip allo stesso modo di quanto avviene per il TimeSensor La variazione del pitch modifica sia il tono sia la velocità di riproduzione • Esempio <Sound minBack="6" minFront="6" maxBack="11" maxFront="11"> <AudioClip description="LittleBirds" loop="true" url="Littlebirds.mid"/> </Sound>