Page 1 sur 1

Test Son3D

Publié : lun. 21/juil./2014 17:27
par Mesa
Pouvez-vous tester ce code avec Windows, linux et MacOS , me dire votre OS et si c'est du 32 ou 64b, merci.

Code : Tout sélectionner

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()

OpenWindow(0,0,0,1000,1000,"Sound3D",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,1000,1000,1,0,0)
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) 

SkyBox("stevecube.jpg");

cam=CreateCamera(#PB_Any, 0, 0, 100, 100)
planet=CreateSphere(#PB_Any, 10)

tex_planet=LoadTexture(#PB_Any, "clouds.jpg")
material=CreateMaterial(#PB_Any,TextureID(tex_planet))

planete=CreateEntity(#PB_Any,MeshID(planet),MaterialID(material))
If IsMesh(planete)
  MoveEntity(planete,0,0,0)
EndIf


sound3D= LoadSound3D(#PB_Any,"Roar.ogg",#PB_Sound3D_Loop) ;change to a mono-sound-file

SoundVolume3D(sound3D, 20)
SoundRange3D(sound3D, 1, 100)
SoundCone3D(sound3D, 90, 360, 20)

PlaySound3D(sound3D, #PB_Sound3D_Loop)
SoundListenerLocate(CameraX(cam),CameraY(cam),CameraZ(cam))

node=CreateNode(#PB_Any, 0, 0, -75)
AttachNodeObject(node, SoundID3D(sound3D))
AttachNodeObject(node, EntityID(planete))

Repeat
  ExamineKeyboard()
  ExamineMouse()
  If KeyboardPushed(#PB_Key_Escape)
    quitter + 1
  EndIf
  RotateNode(node,0.3,0.4,0.5,#PB_Relative) 
  If KeyboardPushed(#PB_Key_Right)
    MoveNode(node,0.5,0,0)
  EndIf
  If KeyboardPushed(#PB_Key_Left)
    MoveNode(node,-0.5,0,0)
  EndIf
  If KeyboardPushed(#PB_Key_Up)
    MoveNode(node,0,0.5,0)
  EndIf
  If KeyboardPushed(#PB_Key_Down)
    MoveNode(node,0,-0.5,0)
  EndIf
  tiks = MouseWheel()
  If tiks > 0
    MoveNode(node,0,0,5)
  EndIf
  If tiks < 0
    MoveNode(node,0,0,-5)
  EndIf
  
  StartDrawing(WindowOutput(0))
  DrawText(0,0,Str(NodeX(node))+" "+Str(NodeY(node))+" "+Str(NodeZ(node)))
  DrawText(0,30,"Touche Haut, Bas, Droite, Gauche et molette souris")
  StopDrawing()
  
  RenderWorld()
  
  FlipBuffers()
  
Until quitter

End

M.

Re: Test Son3D

Publié : lun. 21/juil./2014 18:04
par SPH
Ca plante sur W7 32 bits. (peut etre parce que je n'ai pas de "stevecube.jpg")

ps:pb5.30b

Re: Test Son3D

Publié : lun. 21/juil./2014 18:48
par Lemaquis
ça plante aussi sous Windows 8.1 64 bits

Re: Test Son3D

Publié : lun. 21/juil./2014 20:49
par venom
Fonctionne très bien chez moi. :D
Config voir plus bas :wink:
Ps: peut être les versions de PB ?






@++

Re: Test Son3D

Publié : lun. 21/juil./2014 21:19
par PAPIPP
Bonjour Mesa
Sur Xp sp3 PB530B9
le son est variable avec la molette de la souris qui sert aussi de zoom à l'une des planètes.
A+

Re: Test Son3D

Publié : lun. 21/juil./2014 22:14
par Ar-S
En PB 5.30 b9 chez moi un beau crash
Signature du problème :
Nom d’événement de problème: APPCRASH
Nom de l’application: PureBasic_Compilation0.exe
Version de l’application: 0.0.0.0
Horodatage de l’application: 53cd8254
Nom du module par défaut: KERNELBASE.dll

Re: Test Son3D

Publié : mer. 23/juil./2014 9:02
par Mesa
J'ai modifié le code du 1er post.
Pour ceux pour qui ça plantait, pouvez-vous réessayer, merci.

M.

Re: Test Son3D

Publié : mer. 23/juil./2014 9:13
par SPH
Ca marche

Re: Test Son3D

Publié : mer. 23/juil./2014 9:45
par falsam
Bonjour Mesa.

Les plantages sont du à une gestion imparfaite de la pile des événements de ta fenêtre.

Presse simultanément Alt+Tab. Tu vas t'apercevoir que le pointeur de ta souris mouline un max. Ferme la fenêtre avec la souris : Le code plante.

Insère ce code jutes après le premier repeat

Code : Tout sélectionner

Repeat
    Event  = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
        
    EndSelect
  Until Event = 0
La souris ne devrait plus mouliner.

Un autre point, la fonction ExamineKeyboard() retourne #True si la fenêtre à le focus ou #False quand on perd le focus (Alt Tab) par exemple.
Tu devrais tester les evenement clavier que si la valeur est à #True.

De même pour la souris, ExamineMouse() retourne #True si un événement souris à lieu et #False dans le cas contraire.

PS
■ Sans rien toucher à ton code, j'ai eu un crash.
■ Cette portion de code ne sert à rien

Code : Tout sélectionner

If IsMesh(planete)
  MoveEntity(planete,0,0,0)
EndIf
■ En modifiant ton code avec ce que je viens de te dire, je n'ai pas de crash.

Re: Test Son3D

Publié : lun. 28/juil./2014 14:44
par Lemaquis
J'ai testé et ça marche sur Windows 8.1 64 Bits PB 5.30

Re: Test Son3D

Publié : lun. 28/juil./2014 17:48
par majikeyric
falsam a écrit :la fonction ExamineKeyboard() retourne #True si la fenêtre à le focus ou #False quand on perd le focus (Alt Tab) par exemple.
Tu devrais tester les evenement clavier que si la valeur est à #True.
C'est pas dans la doc, tu es sur de toi ?

Re: Test Son3D

Publié : mar. 29/juil./2014 8:09
par falsam
majikeyric a écrit :C'est pas dans la doc, tu es sur de toi ?
Oui :)

Re: Test Son3D

Publié : mar. 29/juil./2014 8:41
par Ar-S
Fonctionne en PB 5.30x86. Par contre 1 clique gauche et le prog freeze (obligé de le tuer via le debug)

Remarque : Tu devrais baisser le son moins rapidement lors de l'usage de la molette (ou ralentir le zoom/dezoom sur la planète).

Re: Test Son3D

Publié : mar. 29/juil./2014 14:06
par falsam
Ar-S a écrit :Remarque : Tu devrais baisser le son moins rapidement lors de l'usage de la molette (ou ralentir le zoom/dezoom sur la planète).
La gestion du volume sonore est réglée par le moteur 3D en fonction de la distance entre la caméra et la position de l’émetteur de son, le son étant rattaché à un node par exemple.

Re: Test Son3D

Publié : mar. 29/juil./2014 14:30
par Ar-S
C'est un peu ce que je voulais dire. En gros faire en sorte que le zoom/dézoom soit plus lent pour que le fadein/out du son soit plus lent ;)