Distance entre camera et son ne fonctionne PAS avec un wav

Généralités sur la programmation 3D
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Distance entre camera et son ne fonctionne PAS avec un wav

Message par falsam »

L'utilisation conjointe de SoundRange3D() et SoundListenerLocate() permet de régler l'atténuation d'un son en fonction de la distance par exemple d'un joueur par rapport à l’émetteur d'un son.

L'exemple qui suit place un émetteur de son (une alarme) suffisamment loin de la caméra pour l'entendre faiblement.

Pour que ça fonctionne, il faut que le son soit ancré sur un node afin de définir les coordonnées d'émission.
Ensuite il faut modifier le champ d'émission d'un son avec la fonction SoundRange3D() en indiquant la distance minimum et maximum à partir de laquelle le son sera entendu. Le son est atténué entre ces deux valeurs

Rapprochez la caméra prés du cube, ce son sera plus fort. Allez suffisamment à gauche ou à droite pour entendre le son respectivement à droite ou à gauche.

Code : Tout sélectionner

EnableExplicit

Enumeration
  #Mainform
EndEnumeration

Global Event, Camera, Entity, Node, Sound

InitEngine3D()
InitKeyboard()
InitSprite()
InitSound()
UseOGGSoundDecoder()

Add3DArchive(#PB_Compiler_Home+"Examples\3D\Data\", #PB_3DArchive_FileSystem)

OpenWindow(#Mainform, 0, 0, 1024, 768, "", #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#Mainform), 0, 0, 1024, 768)

AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -1.8, 10, 5)

Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))

MoveCamera(Camera, 0, 2, 25, #PB_Absolute)  
CameraLookAt(Camera, 0,0,0)   

Sound = LoadSound3D(#PB_Any, "Siren.ogg")
If Sound
  SoundVolume3D(Sound, 50)
  SoundRange3D(Sound, 0, 50)
  PlaySound3D(Sound, #PB_Sound3D_Loop)
EndIf

CreateEntity(#PB_Any, MeshID(CreatePlane(#PB_Any, 40, 60, 1, 1, 1, 1)), #PB_Material_None)

Node = CreateNode(#PB_Any, 0, 0, -20)
Entity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 2)), #PB_Material_None, 0, 1, 0)
AttachNodeObject(Node, EntityID(Entity))
AttachNodeObject(Node, SoundID3D(Sound))

Repeat
  Repeat
    Event  = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End        
    EndSelect
  Until Event = 0
  
  If ExamineKeyboard()
    If KeyboardPushed (#PB_Key_Up)
      MoveCamera(Camera, 0, 0, -0.1, #PB_Relative)
    EndIf
    
    If KeyboardPushed (#PB_Key_Down)
      MoveCamera(Camera, 0, 0, 0.1, #PB_Relative)
    EndIf
    
    If KeyboardPushed (#PB_Key_Left)
      MoveCamera(Camera, -0.1, 0, 0, #PB_Relative)
    EndIf
    
    If KeyboardPushed (#PB_Key_Right)
      MoveCamera(Camera, 0.1, 0, 0, #PB_Relative)
    EndIf
    
    If KeyboardPushed (#PB_Key_Escape)
      Break
    EndIf
  EndIf
  
  SoundListenerLocate(-CameraX(Camera), CameraY(Camera), CameraZ(Camera))
  
  RenderWorld(80)
  FlipBuffers()  
ForEver
ça fonctionne bien avec des fichiers Ogg mais apparemment pas avec mes fichiers wav.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Distance entre camera et son ne fonctionne PAS avec un w

Message par falsam »

Après avoir converti mes fichiers Wav en Ogg, ça ne fonctionnait toujours pas !!!

En fait la réponse est dans l'aide :
Loads a WAV or an OGG sound file. The sound has to be mono, as stereo sounds doesn't allow space positioning.
il n'est pas possible de positionner dans l'espace un son stéréo.

Allez ..... je transforme mes sons en mono :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Distance entre camera et son ne fonctionne PAS avec un w

Message par venom »

Fonctionne bien chez moi, merci du partage.







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre