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>
Scarica

pps