LoadSound3D()
Syntaxe
Resultat = LoadSound3D(#Son3D, NomFichier$ [, Option])Description
Charge un fichier son 3D en mémoire.
Arguments
#Son3D Le numéro d'identification du son 3D chargé.
#PB_Any peut être utilisé pour générer automatiquement ce numéro.NomFichier$ Le nom du fichier sonore, de type WAV ou OGG. Option (optionnel) #PB_Sound_Streaming: Active le support du streaming.
Valeur de retour
Renvoie une valeur non nulle en cas de succès, zéro sinon.
Remarques
Le son 3D doit être en mono.
Un son 3D n'a pas de position.
Il peut être attaché à un noeud pour avoir sa propre position. Un son 3D est joué par rapport à l'emplacement d'écoute. Pour modifier l'emplacement d'écoute, utilisez SoundListenerLocate().
Exemple
; Initialisation du monde 3D
InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
Add3DArchive(#PB_Compiler_Home+"Examples/3D/Data", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home+"Examples/3D/Data/Packs/skybox.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home+"Examples/3D/Data/Textures", #PB_3DArchive_FileSystem)
; Ouverture de la fenêtre
OpenWindow(0,0,0,1000,1000,"Le Son varie en fonction de la position de la planète",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,1000,1000,1,0,0)
;Création du monde 3D
SkyBox("stevecube.jpg");
cam=CreateCamera(#PB_Any, 0, 0, 100, 100)
planete=CreateSphere(#PB_Any, 10)
tex_planete=LoadTexture(#PB_Any, "clouds.jpg")
material=CreateMaterial(#PB_Any,TextureID(tex_planete))
planeteE=CreateEntity(#PB_Any,MeshID(planete),MaterialID(material))
; Chargement du fichier Son3d Wav ou Ogg, qui doit être mono
son3D= LoadSound3D(#PB_Any,"Roar.ogg",#PB_Sound3D_Loop)
SoundVolume3D(son3D, 20) ; Volume sonore à 20%
SoundRange3D(son3D, 1, 100) ; Zone d'émission du son
SoundCone3D(son3D, 90, 360, 20) ; Facultatif, Cône sonore
; Le Son est joué en boucle
PlaySound3D(son3D, #PB_Sound3D_Loop)
; L'auditeur se déplace avec la caméra
SoundListenerLocate(CameraX(cam),CameraY(cam),CameraZ(cam))
; Le Son et la planète sont liés,
; ainsi si l'utilisateur déplace la planète, le son se déplace avec elle
noeud=CreateNode(#PB_Any, 0, 0, -75)
AttachNodeObject(noeud, SoundID3D(son3D))
AttachNodeObject(noeud, EntityID(planeteE))
; Gestion de la fenêtre, du clavier et de la souris
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
ExamineKeyboard()
ExamineMouse()
If MouseDeltaX()>0
MoveNode(noeud,0.5,0,0)
ElseIf MouseDeltaX()<0
MoveNode(noeud,-0.5,0,0)
EndIf
If MouseDeltaY()>0
MoveNode(noeud,0,-0.5,0)
ElseIf MouseDeltaY()<0
MoveNode(noeud,0,0.5,0)
EndIf
If MouseButton(#PB_MouseButton_Left) <>0
End
EndIf
If MouseButton( #PB_MouseButton_Right) <>0
MoveNode(noeud,0,0,-75,#PB_Absolute)
EndIf
If KeyboardPushed(#PB_Key_Escape)
quitter + 1
EndIf
RotateNode(noeud,0.3,0.4,0.5,#PB_Relative)
If KeyboardPushed(#PB_Key_Right)
MoveNode(noeud,0.5,0,0)
EndIf
If KeyboardPushed(#PB_Key_Left)
MoveNode(noeud,-0.5,0,0)
EndIf
If KeyboardPushed(#PB_Key_Up)
MoveNode(noeud,0,0.5,0)
EndIf
If KeyboardPushed(#PB_Key_Down)
MoveNode(noeud,0,-0.5,0)
EndIf
tiks = MouseWheel()
If tiks > 0
MoveNode(noeud,0,0,5)
EndIf
If tiks < 0
MoveNode(noeud,0,0,-5)
EndIf
; Affichage de la scène
StartDrawing(WindowOutput(0))
DrawText(0,5,"X=" + Str(NodeX(noeud)) + " Y=" + Str(NodeY(noeud)) + " Z="+Str(NodeZ(noeud)))
DrawText(0,30,"Souris ou Clavier: Haut, Bas, Droite, Gauche et Molette souris")
DrawText(0,60,".: Echap ou clic gauche pour quitter :.")
StopDrawing()
RenderWorld()
FlipBuffers()
Until quitter
End
Voir aussi
FreeSound3D(), IsSound3D()
OS Supportés
Tous