Forum Clubic

[Java3D] probleme de representaton d'un objet 3d

bonjour à tous ! :jap:
c’est un peu vague, comme titre, mais je savais pas comment dire autrement…
En fait, je début avec java3d et je veux creer un plateau, composé d’objets élémentaires : les cases.
Une case a une méthode qui renvoit un branchGroup qui la contient :


public BranchGroup dessiner3d(){
  //on créer un BranchGroup principal :
  BranchGroup Case3d = new BranchGroup();

........
.....
return (Case3d);
	}

Ca, sa marche sans problemes.

Apres, je fais un plateau, qui est composé d’un tableau à 2 dimension d’objets Case.
Mon problem, c’est que je voudrais avoir une méthode similaire, qui me revoit un BranchGroup qui contient l’objet plateau, mais je comprend pas comment je peux faire, vu qu’un BranchGoup ne peut pas contenir d’autres BranchGroup… :??:

Le seul moyen que j’ai trouvé, c’est de passer l’univers en parametre à une fonction du plateau pour lui ajouter le BranchGroup de chaque Case…


public void ajouterBranches(SimpleUniverse su){
  BranchGroup[][] bg = new BranchGroup[taille][taille];
  
  for (int h=0; h<taille; h++){
  	for (int v=0; v<taille; v++){
    bg[h][v]= Case[h][v].dessiner3d();
    bg[h][v].compile();
    su.addBranchGraph(bg[h][v]);
  	}
  }
	}

mais cette méthode en fait ne me convient pas, car je ne peut pas traiter le plateau “comme un objet”, par exemple, je voudrais lui appliquer une rotation : par ma méhode il faut que j’applique la rotation à chaque case, et donc elles se superposent et donc ce n’est pas du tout ce que je veux.

En fait il me faut une méthode qui me renvoit un BranchGroup de l’objet tableau, mais je ne sais pas comment faire…
J’espere que j’ai été comprehensible, et que vous pourrez m’aider !
merci d’avance !

Tu as un problème de design.
Tu dois n’avoir qu’un seul BranchGroup pour tout ton plateau, et gérer chaque case comme étant un Shape3D.
Ensuite, tu pourras voir ton dammier comme un seul objet.

il faut donc que je modifie la méthode qui creer une Case pour qu’elle renvoit un objet du type Geometry , c’est bien sa?
Pour representer une case, j’utilise une box. Ce ne sera plus possible si je dois renvoyer un objet Geometry, il faut donc recreer un parallépipède en utilisant la classe QuadArray ?

merci pour ton aide :super:

up :bounce:

Ah pardon tu attendais encore une réponse ? :paf:
Reprenons les bases: tu veux en définitive un BranchGroup (BG), dessous un TransformGroup (TG), et un certain nombre de choses dessous: les fameuses cases.
Une case peut très bien être une box, pas besoin de réinventer la roue.