Moteur physique *** Nouvelle source ***

Généralités sur la programmation 3D
Azur
Messages : 40
Inscription : ven. 22/mai/2009 23:58

Moteur physique *** Nouvelle source ***

Message par Azur »

Salut à tous.
J'ai créé une scène 3d avec un sol en staticbody
et
100 cubes avec boxbody, masse et gravité, que je place pour former un mur de 10 ligne sur 10 colonnes

Je m'amuse à faire apparaitre ce mur plus ou moins au dessus du sol de façon à ce que l'ensemble percute le sol et se disloque en jouant sur la friction et choses de ce style.

Dans certains cas le mur ne tombe pas de très haut et une grande partie de ce dernier reste verticale bien que déformée.

Voilà mon soucis:

Dans certains cas, certaines parties du mur sont quasiment immobiles mais on voit bien qu'elles bougent un peu et vont s'effondrer, mais d'un coup tout se fige.
Ceci n'arrive que quand les mouvement sont très faibles.

Par contre si la friction est faible, l'ensemble des cubes se répand sur mon sol et glisse durant de longues secondes jusqu'à ce que le mouvement s'atténue et se fige d'un coup.

C'est comme si quand les mouvements deviennent trop faible, alors le calcule de la physique s'arrêtait

---------------

On constate ce comportement quand le mur reste pratiquement stable mais menace de s'effondrer.

Code : Tout sélectionner

EnableExplicit

InitSprite()
InitEngine3D()

OpenWindow(0,0,0,800,600,"3d",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)

WorldShadows(#PB_Shadow_Additive)

CreateCube(0,1)
CreateCube(1,20)

Define i
Define x.f
Define y.f=0.7

For i=0 To 99
  CreateEntity(i,MeshID(0),#PB_Material_None)
  EntityLocate(i,x,y,0)
  EntityPhysicBody(i,#PB_Entity_BoxBody,2,0,1)
  x+1
  If x>=10
    x=0
    y+1
  EndIf
Next i

CreateCamera(0,0,0,800,600)
CameraLocate(0,5,5,-20)
CameraLookAt(0,5,5,0)
CreateLight(0,RGB(255,255,255),0,50,-20)

CreateEntity(100,MeshID(1),#PB_Material_None)
EntityLocate(100,5,-10,-5)
EntityPhysicBody(i,#PB_Entity_StaticBody,2,0,2)

Repeat
  Delay(1)
  RenderWorld()
  FlipBuffers()
Until WindowEvent()=#PB_Event_CloseWindow



Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: Moteur physique *** Nouvelle source ***

Message par Atomo »

C'est un problème connu de l'équipe, ils sont en train d'examiner ça.
Répondre