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 :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
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(); }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 public class Objet3D { private static Logger logger = Logger.getLogger(Objet3D.class.getName()); private Rotation rotation; private Translation translation; private Size size; ... }Mon bras articulé ressemble à un bras articulé, cad les elements sont se positionne par rapport au Pere.
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 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![]()
Partager