Page 1 sur 1

Position du physic body

Publié : dim. 21/mars/2010 14:45
par Azur
Bonjour à tous, je ne post pas souvent ici mais je suis un lecteur habitué j'en profite donc pour saluer tout le monde.

Voici mon soucis, si je crée un mesh , une table par exemple, les pieds reposent sur le plan Z, le sol.
De ce fait le point de pivot, ou de rotation est au niveau du bas des pieds
Avoir ce type de point de pivot non centré est souvent utile.

Si je crée un BoxBody pour ce genre de mesh, le body a bien les proportions du mesh, mais il est placé au centre des axes x y z du World, dans le cas de ma table, il se trouve plus bas.

Dans le cas d'un StaticBody, ce phénomène n'a pas lieu, mon body englobe bien le mesh.

Je pourrais par exemple créer un second mesh rectangle aux dimensions de ma table, lui assigner un box body, associer mes deux meshs sur un node et faire mes tests de collisions sur le second mesh après l'avoir déplacé pour qu'il englobe ma table.

Existe t il une solution plus simple pour assigner un boxbody à un mesh qui n'est pas centré sur ses axes de rotations ?

D'avance merci.

Re: Position du physic body

Publié : dim. 21/mars/2010 18:04
par G-Rom
je n'ai pas trop saisi le problème. d'après ce que j'ai compris , ton soucis est lié au "objets dynamique" , avec la boite englobante qui sert pour les collisions , je ne connais pas comment fonctionne la partie dynamique en l'état actuel , mais si tu gère les collisions avec le "moteur" physique pourquoi as tu besoin de connaitre ou bien même d'utilisé le pivot de ta table ?

Ps : les nodes sont buggé pour les rotations , te fait pas suer avec ca pour le moment.

Re: Position du physic body

Publié : dim. 21/mars/2010 18:26
par Azur
J'ai constaté cela en modélisant un échiquier sur lequel tombaient des pièces d'échec

Au moment de la modélisation des pièces, je les ai naturellement crées de telle façon qu'elles aient leurs bases sur le plan Z

Au moment de tester mon script je me suis rendu compte que le pièces touchaient le plateau trop tôt

Et en affichant leur boxboby je me suis rendu compte que ce dernier était centré sur les axes des pièces ( donc plus bas ) alors que les pièces ne sont pas centrées sur leurs axes puisqu'elles reposent sur le plan Z ( le sol )

Re: Position du physic body

Publié : dim. 21/mars/2010 18:30
par G-Rom
D'accord , je comprends mieux , la "boite physique" est décalé.
Attend la prochaine màj de la partie 3D , le problème sera résolu.

Re: Position du physic body

Publié : dim. 21/mars/2010 19:34
par Azur
Voici un petit bout de code qui crée une boite qui repose sur le plan Z, puis un boxbody qui est affiché en fil de fer...
Chez moi le boxbody est clairement centré sur les axes alors que la boiboite nonnon

Code : Tout sélectionner

EnableExplicit

Enumeration
	#fenetre
	#mesh
	#entity
	#camera
	#light
EndEnumeration 

InitSprite()
InitEngine3D()
InitKeyboard()

OpenWindow(#fenetre,0,0,640,480,"",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#fenetre),0,0,640,480,0,0,0)

EnableWorldPhysics(1)
WorldGravity(0)
WorldDebug(#PB_World_DebugBody)

CreateCamera(#camera,0,0,100,100)
CameraLocate(#camera,0,2,5)
CameraLookAt(#camera,0,0,0)

CreateMesh(#mesh,0.5)
SetMeshData(#mesh,#PB_Mesh_Vertex|#PB_Mesh_Color,?points,8)
SetMeshData(#mesh,#PB_Mesh_Face,?faces,12)
CreateEntity(#entity,MeshID(#mesh),#PB_Material_None)
EntityPhysicBody(#entity,#PB_Entity_BoxBody)
Repeat
	Delay(1)
	ExamineKeyboard()
	If KeyboardPushed(#PB_Key_Escape)
		End
	EndIf
	FlipBuffers()
	RotateEntity(#entity,1,1,0.3,#PB_Relative)
	RenderWorld()
ForEver

DataSection
	points:
	Data.f -0.5,0,0.5
	Data.l 0
	Data.f 0.5,0,0.5
	Data.l 0
	Data.f 0.5,1,0.5
	Data.l 0
	Data.f -0.5,1,0.5
	Data.l 0
	Data.f -0.5,0,-0.5
	Data.l 0
	Data.f -0.5,1,-0.5
	Data.l 0
	Data.f 0.5,1,-0.5
	Data.l 0
	Data.f 0.5,0,-0.5
	Data.l 0
		
	faces:
	Data.w 3,0,1,1,2,3
	Data.w 0,3,4,3,5,4
	Data.w 5,6,7,4,5,7
	Data.w 6,2,7,1,7,2
	Data.w 3,2,5,5,2,6
	Data.w 4,1,0,7,1,4
EndDataSection

Re: Position du physic body

Publié : dim. 21/mars/2010 19:39
par G-Rom
c'est un bug , tu ne peut hélas rien faire à part attendre la prochaine màj.

@+

Re: Position du physic body

Publié : dim. 21/mars/2010 21:29
par Azur
Très bien, en conclusion on invitera donc ceux qui souhaitent associer un boxbody à des meshs créées dans un soft de 3D à centrer leur modèle sur les trois axes avant exportation, et noter que la création d'un staticbody se fait quand à elle de façon normale.

Merci.