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 :

[Java 3D] Dimensionnement dynamique de PointArray


Sujet :

3D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Traitement du signal
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Traitement du signal

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Par défaut [Java 3D] Dimensionnement dynamique de PointArray
    Bonjour à tous,

    Voici mon problème :

    Je représente un nuage de points à l'aide PointArray pour éviter de calculer un maillage.
    Une des caractéristiques des PointArray c'est que leur taille sur le canevas reste fixe en terme de pixel. Cependant il est possible de changer cette taille en faisant un setPointSize de son PointAttributes.

    J'ai tout bien implémenté dans mon code pour changer la taille de ces PointArray dès lors que la caméra change de position, cependant je n'arrive absolument pas à trouver la formule mathématiques qui prendrai en paramètre :

    - Distance entre la caméra et les points observés.
    - Taille du Canevas.
    - Et j'oublie certainement des paramètres ...

    Et qui retournerait le ratio : dimension dans l'univers / dimension en pixels.

    Je suis certains que Java 3D fournit cette information ! Mais la documentation Java 3D ...

    En vous remerciant d'avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Traitement du signal
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Traitement du signal

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Par défaut
    A force de persévérer on trouve toujours une solution !

    Donc je conseil cette méthode aux gens qui ont besoin de représenter un nuage de points 3D sans avoir besoin d'une représentation de toute beauté. C'est à dire pour ceux qui ne veulent pas forcément mailler le nuage de point et pour qui une représentation avec des PointArray suffit.

    Tout d'abord on calcul la position de la caméra (c3d est mon Canvas3D), à vous de l'exploiter comme bon vous le semble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Point3d eyePosition = new Point3d();
            c3d.getCenterEyeInImagePlate(eyePosition);
     
            Transform3D xform = new Transform3D();
            c3d.getImagePlateToVworld(xform);
            xform.transform(eyePosition);
    J'ai créé une fonction permettant de projeter mes points 3D sur mon écran :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public Point2d get3DTo2DPoint(final Point3d point3d) {
            Transform3D temp = new Transform3D();
            c3d.getVworldToImagePlate(temp);
            temp.transform(point3d);
            Point2d point2d = new Point2d();
            c3d.getPixelLocationFromImagePlate(point3d, point2d);
            return point2d;
        }
    Enfin je calcul la distance entre les points projetés, ce qui me permet de fixer une taille à mes PointArray :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public double getDistanceOnScreen(final Point3f p0, final Point3f p1) {
            return get3DTo2DPoint(new Point3d(p0)).distance(get3DTo2DPoint(new Point3d(p1)));
        }
    Ensuite l'utilisation de ces fonctions se fait selon les applications. a vous de voir quels points vous faites passer en entrée de get3DTo2DPoint. Pour ma part je fais un calcul optimisé permettant de garder les deux points de mon nuages les plus proches de ma caméra auxquels j'applique le calcul de distance projeté.

    Bon weekend.

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

Discussions similaires

  1. [VBA]Tutoriel sur le dimensionnement dynamique
    Par celiaaa dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/06/2012, 23h47
  2. [VBA]dimensionnement dynamique des controles
    Par celiaaa dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/04/2007, 12h59
  3. [HTML] IFRAME Dimensionnement dynamique
    Par markeno dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/06/2006, 09h18
  4. Java et invocation dynamique
    Par poinclin dans le forum CORBA
    Réponses: 3
    Dernier message: 24/05/2004, 13h19
  5. Dimensionnement dynamique d'un Tmemo
    Par fausto dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/02/2004, 10h54

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