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] faisabilité: dessiner du swing dans une texture d'une scène 3D


Sujet :

3D Java

  1. #1
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut [java3D] faisabilité: dessiner du swing dans une texture d'une scène 3D
    Bonjour,

    voilà, je me demande s'il est possible d'intégrer le dessin de composants swing dans une scène en 3D.

    Un exemple pour faire simple: j'ai une scène 3D, admettons un simple cube (donc 6 faces). Serait-il possible de faire que la texture utilisée pour une des faces de ce cube soit générée par le dessin d'un ensemble de composants swing contenus dans une instance de JPanel ?
    L'idée, en (très) gros serait de pouvoir avoir un rendu d'un truc dans le genre du Desktop Cube de Beryl

    Pour reprendre l'exemple du cube, l'idée serait d'avoir un JPanel qui correspond à chaque face de mon cube. L'utilisateur peut tourner le cube à volonté, voir les contenus de JPanel et intéragir avec chaque JPanel (en cliquant sur les composants)

    Techniquement, ça revient à se poser ces questions:

    - est-il possible de 'rediriger' le contexte grapique non pas vers l'écran, mais vers une Image que je pourrais ensuite appliquer à une Texture2D. Ainsi, mon appli swing dessinerait non pas à l'écran, mais dans ma texture.

    - est-il possible de catcher au moyen de picking une coordonnée précise sur un polygone ? Typiquement ce serait pour transmettre le clic (et sa coordonnée précise récupérée par le picking) au JPanel concerné

    - en termes de performances, est-ce jouable ? L'idée ne serait pas d'avoir des JPanels contenant chacun une appli super-sophistiquée et ses milliers de composants, mais plutôt une dizaine de composants simples. De plus, pas question de composants qui se rafraîchissent tous les 10ms, mais des choses avec un rendu plutôt statique, ex des boutons, radio groups, etc...


    Je précise que je ne souhaite pas avoir des réponses sous forme de conseils techniques, mais tout simplement savoir si - à priori - c'est faisable ou pas (et éventuellement si quelqu'un l'aurait déjà fait).

    Merci d'avance pour votre avis.

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 109
    Par défaut
    Oui c'est faisable,

    J'ai vue un projet par sun, a propos d'un bureau 3D, je n'ai plus le nom. Mais c'est tout a fait le cas de l'intégration de swing dans Java3D.

  3. #3
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Je crois que c'est fait dans Sweet Home 3D. En plus, c'est open source.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En ce qui concerne le bureau 3D il s'agit du projet Looking Glass.

    Ensuite pour intégrer du swing dans de la 3D (enfin là c'est du JOGL)
    http://weblogs.java.net/blog/campbel...d_and_jog.html

    Mais de toute façon Swing c'est du 100% dessin, donc tu peux en retirerun image sans le moindre problème

  5. #5
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par eclesia
    J'ai vue un projet par sun, a propos d'un bureau 3D, je n'ai plus le nom.
    Effectivement, je l'avais déjà vu aussi mais j'avais complètement zappé. Le projet s'appelle Looking glass (ou LG3D).

    Le problème c'est que j'ai l'impression que looking glass dialogue directement avec le serveur X (ou équivalent). Ce que j'aimerais savoir c'est si ce genre de chose est faisable sans avoir à utiliser du code propriétaire pour une plateforme spécifique...

    Je crois que le mieux sera que je teste à la main de faire du rendu dans une Texture pour voir techniquement si c'est jouable. A ce propos:

    1/ pour la partie "rendu vers une texture", dites moi si dans l'idée je me trompe:

    1.1/ je créé un objet Image (monImage)

    1.2/ je fais le rendu de mon appli swing avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monJPanel.paint(monImage.getGraphics());
    Je créé ma texture avec un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maTexture2D.setTexture(monImage);
    J'applique ma texture sur mon polygone
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	polygon.setTextureCoordinate (0, new Point2f(0.0f,0.0f));
    	polygon.setTextureCoordinate (1, new Point2f(1.0f,0.0f)); 
        	polygon.setTextureCoordinate (2, new Point2f(1.0f,1.0f));
        	polygon.setTextureCoordinate (3, new Point2f(0.0f,1.0f));
        	polygon.setTexture(maTexture2D);
    2/ Pour la partie picking pour les clics de souris et l'interraction, par contre c'est (beaucoup) plus flou:

    - il me semble avoir lu un jour qu'il n'était pas possible avec le picking implémenté par défaut de connaitre l'endroit exact dudit picking. On ne pourrait connaître que l'objet qui a été cliqué, pas plus. Vous confirmez ?

    - si c'est le cas, comment pourrais-je procéder ? Devrai-je le faire à la main ?
    Si oui, et en partant du principe que je connais l'objet cliqué (un simple carré représentant la face de mon cube), sa position, celle de la caméra et les angles, ça devrait pas être trop compliqué ... mais si quelqu'un a une solution plus simple ou "toute faite", je suis preneur.

    Dernière chose: si vous avez des idées à propos des performances à attendre de ce genre de montage, ou si vous voyez des soucis techniques auxquels je risque d'être confronté, je suis tout ouïe

    EDIT: suuuuuper grillé, merci pour vos réponses.

    A propos de JOGL, est-ce quelque chose de "standard" ? ( entendez par là intégré de série dans la JRE), car:
    - dans l'idéal, j'aimerais quelque chose d'intégrable dans une applet.
    - mon projet est plutôt une excuse pour me mettre à Java et découvrir son framework. Autant que possible, je préfèrerais apprendre à connaître des classes du framework 'officiel'.

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah dans la JRE de base tu n'as rien pour la 3D. Par contre en API externes tu en as un paquet (qui vont de l'API bas niveau au Scénographe)

    Jogl corresponds aux bindings OpenGL soutenus par Sun. D'ailleurs il peut est utilisé dans java3D en version 1.5.
    Donc JOGL c'est bien "officiel" (pas dans le vrai sens du terme mais bon). Mais grosso merdi pour java et la 3D il n'y a pas vraiment de framework officiel, java3D et JOGL ne sont pas du tout la même chose d'ailleurs.
    JOGL c'est du bas niveau, de la prog OpenGL pure et dure alors que java3D c'est un Scénographe, donc très abstrait.
    Il est sur qu'au niveau perf JOGL est plus rapide que java3D.

    Puis pour les applet, bah les librairies externes ça s'ajoute sans problème, ça se met dans le classpath et boum ça marche.

  7. #7
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    ok, merci pour les infos.

    Et pour mon histoire de 'picking' précis, j'ai retrouvé la page où j'avais compris qu'on ne pouvais pas avoir de coordonnées précises du point cliqué :

    The second, and most difficult limitation is that, by default you cannot get the point information about where on an object you picked it. That is, you only get the whole object and no further information. Several attempts have been made to implement further refinement by various members of the Java3D community, but all have turned out to be very resource intensive to date.
    Une petite idée pour lever cette dernière barrière ?

  8. #8
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    tu peux mixer openGL et swing (ou swing dans opengl)
    voir
    http://weblogs.java.net/blog/campbel...d3d_mixin.html
    http://weblogs.java.net/blog/campbel...d_and_jog.html

    il faut java6 ceci dit

    ou un bon exemple par GFX
    http://www.jroller.com/page/gfx/?anc...ing_and_opengl

  9. #9
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    ok,

    merci pour toutes ces réponses. Je vais faire le tour des possibilités et je vous donnerai un feedback détaillé.

    Merci encore

  10. #10
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 109
    Par défaut
    regarde aussi JavaMonkeyEngine basé sur LWJGL. C'est un scénographe comme Java3D mais plus performant.
    Il y a des classes prefaites pour afficher des composants swing ou des fenetres entieres.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 12
    Dernier message: 22/02/2006, 15h28
  5. Réponses: 3
    Dernier message: 24/10/2005, 14h26

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