Bonjour a tous,

Je suis en train de réaliser un bras articulé comme précisé dans le titre.
Je developpe sous Java avec JOGL.

Mon bras articulé est decomposé en objet (Actor). Chaque actor possede une liste de ses descendants d'actor.
Le bras possede l'avant-bras.
l'avant bras le poignet, etc...

Voici le code que j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void draw3DObjHimSelf(GL gl, float compteur){
		//save matrice
		gl.glPushMatrix();
 
		// Move to the translate coordonates
		gl.glTranslated(himSelf.getTranslation().getX(),
				himSelf.getTranslation().getY(),
				himSelf.getTranslation().getZ());
 
		// Rotate
		gl.glRotated(compteur*himSelf.getRotation().getX(), 1.0f, 0.0f, 0.0f); // axe X
		gl.glRotated(compteur*himSelf.getRotation().getY(), 0.0f, 1.0f, 0.0f); // axe Y
		gl.glRotated(compteur*himSelf.getRotation().getZ(), 0.0f, 0.0f, 1.0f); // axe Z
 
		// Resize
		gl.glScaled(himSelf.getSize().getX(),
				himSelf.getSize().getY(),
				himSelf.getSize().getZ());
 
		// Display actor
		display(gl);
 
		// draw3DObj childrens
		for(Actor actor : childrens){
			actor.draw3DObj(gl, compteur);
		}
 
		//restore matrice
		gl.glPopMatrix();
	}
Pour infos l'objet himself ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public class Objet3D {
 
	private static Logger logger 	= 	Logger.getLogger(Objet3D.class.getName());
 
	private Rotation rotation;
 
	private Translation translation;
 
	private Size size;
        ...
}
Je definit ma mise en scene :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
logger.info("Mise en place des objets");
 
		Actor  repere 	= 	new Repere();
 
		Actor	bras	=	new SolidActor("data/objets/obj/bras.obj");
		bras.changeSize(0.5f, 0.5f, 0.5f);
 
		Actor	avantBras	=	new SolidActor("data/objets/obj/avant-bras.obj");
		avantBras.moveTo(0, 5, 0);
		avantBras.rotate(2f, 0f, 0f);
		bras.addChild(avantBras);
 
		Actor	poignet	=	new SolidActor("data/objets/obj/poignet.obj");
		poignet.moveTo(0, 4, 0);
		poignet.rotate(5f, 0f, 0f);
		avantBras.addChild(poignet);
Mon bras articulé ressemble à un bras articulé, cad les elements sont se positionne par rapport au Pere.

Mon probleme :
lorsque je cherche à articulé l'avant bras+poignet, l'ensemble pivote par rapport au centre de l'actor "avant-bras" au lieu de pivoter sur l'extremité du bras. Je ne comprends pas comment combiner les matrcies push et pop.

Merci de votre aide