IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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] Fixer un objet par rapport à la vue (mobile)


Sujet :

3D Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [Java3D] Fixer un objet par rapport à la vue (mobile)
    Bonjour,

    Dans mon application Java3D, je dispose d'une viewing platform "mobile" (via les behaviors "OrbitBehavior" et "KeyNavigatorBehavior" notamment) qui me permet de changer de point de vue par rapport à ma scène.
    Je souhaiterais maintenant afficher un objet fixe par rapport à ma vue, c'est-à-dire toujours visible de la même façon quelque soit sa position et son orientation (par exemple, un peu comme le fusil du joueur dans un jeu de tir à la première personne). J'ai tenté les 2 approches suivantes, mais pour l'instant, aucune n'a fonctionné :

    1/ Attacher l'objet directement à la ViewingPlatform (via un BranchGroup + un TransformGroup) : dans ce cas, l'objet n'est manifestement pas affiché (je ne suis pas persuadé qu'on ait le "droit" de faire ceci en Java3D...).

    Code : (avec view la ViewingPlatform)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                 BranchGroup fixedBG = new BranchGroup();
                    TransformGroup fixedTG = new TransformGroup();
                    fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
                    fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
                    Transform3D transfo = new Transform3D();
                    transfo.setTranslation(new Vector3f(0.2f, 0.0f, -1.0f));
                    fixedTG.setTransform(transfo);
                    ColorCube fixedCube = new ColorCube(0.2);
                    fixedTG.addChild(fixedCube);
                    view.addChild(fixedBG);
    2/ Appliquer à l'objet la même transformation (rotation + translation, récupérées via getTransform() sur getViewPlatformTransform()) que celle de la ViewingPlatform (en temps réel, via une behavior dédiée, avec les mêmes wakeupConditions que pour les comportements modifiant la vue). Dans cet essai, l'objet disparait, puis réapparait de façon instable (et uniquement lorsque j'utilise le zoom/de-zoom du KeyNavigator).

    Je suis persuadé que ce que je souhaite faire est bien faisable et probablement assez facilement, mais là, j'avoue que je ne trouve pas d'autres pistes...

    Merci d'avance

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Solution
    Ok, problème résolu.

    Il faut prendre ma solution 1/ mais attacher l'objet non pas à la ViewPlatform, mais à la ViewPlatformTransform, qui est le TransformGroup la contenant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/03/2015, 08h38
  2. Création d'objets par rapport à un ID
    Par nostrora dans le forum C++
    Réponses: 17
    Dernier message: 24/02/2013, 16h50
  3. Déplacer un objet par rapport à sa caméra
    Par Alays dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/01/2013, 21h34
  4. Réponses: 1
    Dernier message: 04/12/2008, 12h43
  5. Les possibilité que C++ offre par rapport à Pascal Objet
    Par Riko dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 01/02/2003, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo