Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

3D Java Discussion :

[Java3D] Ajout dynamique de Shape3D


Sujet :

3D Java

  1. #1
    Membre confirmé
    [Java3D] Ajout dynamique de Shape3D
    Bonjour, dans une application je dois ajouter et supprimer des shape3D dynamiquement, selon des actions de l'utilisateur.

    J'ai donc une méthode "show" qui doit afficher mon shape3D quand elle est appelée suite à une action de l'utilisateur.

    Voici son code:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    GraphicTile tile = new GraphicTile(name); // GraphicTile est une classe qui hérite de Shape3D
    Transform3D translate = new Transform3D();
    translate.set(Squares.getSquare(place));
    TransformGroup tg = new TransformGroup(translate);
    tg.addChild(tile);
    BranchGroup bg = new BranchGroup();
    bg.addChild(tg);
    bg.setCapability(BranchGroup.ALLOW_DETACH);
    sceneBG.addChild(bg); // sceneBG est le branchgroup principal


    Ca fonctionne bien mais ça m'ennuie de devoir créer un branchgroup pour chaque Shape3D.
    Je trouve ça lourd et bizarre au niveau conception mais si j'essaie de faire directement sceneBG.addChild(tg), ou même sceneBG.addChild(tile),
    j'ai ce message d'erreur:
    Exception in thread "main" javax.media.j3d.RestrictedAccessException: Group: only a BranchGroup node may be added

    Est-ce qu'il y a une autre méthode qui m'éviterait de créer un branchgroup par shape3D?

    Merci.
    Développeur écolo, je suis pour le développement durable.

  2. #2
    Membre à l'essai
    Tu as eu la réponse à ta question ??

    Si tu pouvais nous dire comment tu as résolu ton problème, je suis intéressé

    EDIT : j'ai rien trouvé de neuf jusqu'à maintenant... Tant pis

  3. #3
    Membre confirmé
    En cherchant un peu plus sur le forum j'ai trouvé une discussion où on parlait du même problème et la conclusion était qu'il n'y a pas d'autres moyens mais que ça n'est pas gênant pour les performances.
    Développeur écolo, je suis pour le développement durable.

  4. #4
    Nouveau Candidat au Club
    tu n es pas oblige de refaire un branchgroup:

    bg.detach();

    // mes operations

    universe.addBranchGraph(bg);

    ca marche aussi

  5. #5
    Membre à l'essai
    Tu n'es pas obligé de redeclaré ton branchgroup a chaque fois tu as deux solutions soit tu cree une fonction qui le cree et l'ajoute a l'universe et il suffit que tu l'appelle.
    soit tu détache ton shape3D a ton branchgroupe et tu ajoute le nouveau.
    Bon courage