![]() |
|
| Français | English |
| Sommaire : | Summary : |
Introduction |
Introduction |
| Si vous m’aviez dit l’an dernier que j’allais initier le portage de Java 3D vers JOGL 2.0, je ne vous aurais certainement pas cru. C’est pourtant ce qui s’est passé le 10 février 2012. Dès janvier 2008, Sun Microsystems se concentrait sur Prism, le scénographe de JavaFX, au détriment de Java 3D. Depuis, ce dernier n’a pas évolué, il n’a reçu que des mises à jour correctives relativement mineures. Ce portage (que j’ai fait bénévolement) ne m’a pris que quelques heures et c’est désormais maintenu par un salarié de la société Ausenco Sandwell. | If you had told me last year that I would initiate the porting of Java 3D to JOGL 2.0, I wouldn’t certainly have believed you. This is what happened February, 10th, 2012. In January 2008, Sun Microsystems focused on Prism, JavaFX scenegraph, to the detriment of Java 3D. Since, it has not changed, it has only received relatively minor corrective updates. This port (that I did for free) only took me a few hours and is now maintained by an employee of the company Ausenco Sandwell. |
Nouveautés |
News |
| Harvey, le salarié en question, a réussi à rendre Java 3D plus stable bien avant mon intervention, il a également réparé le rendu offscreen, il a remis d’aplomb la procédure de compilation et de création des JARs, il a supprimé beaucoup de code mort et il a retiré quelques fonctionnalités peu utilisées et potentiellement boguées (notamment le support du langage Cg pour les shaders Nvidia). Java 3D disposait de trois systèmes de rendu basés sur des APIs différentes pour l’accélération graphique, deux d’entre eux s’appuyaient sur OpenGL et le dernier s’appuyait sur Direct3D. Le système de rendu utilisé par défaut dépendait de la plateforme et pouvait être sélectionné avec la propriété "j3d.rend". Cela rendait l’installation assez compliquée (il fallait prévoir plusieurs cas de figures en configurant le classpath et le library path de telle sorte que les différents systèmes puissent fonctionner) et la maintenance assez lourde pour une plus-value très discutable. Seul le système de rendu basé sur JOGL 2.0 a été conservé. Ainsi, il n’y a plus aucun risque de conflit avec Direct3D (pensez quand même à désactiver le pipeline Java 2D basé sur Direct3D si nécessaire), il est possible de mélanger du code de rendu OpenGL (avec ou sans JOGL 2.0) à du code de rendu Java 3D. | Harvey, the employee in question, succeeded in driving Java 3D more stable long before my intervention, he also repaired the offscreen rendering, he righted the procedure for compiling and creating JARs, it deleted a lot of dead code and removed some rarely used and potentially buggy features (including support of Nvidia Cg language for shaders). Java 3D had three rendering systems based on different APIs for graphics acceleration, two of them were based on OpenGL and the last was based on Direct3D. The rendering system used by default depended on the platform and could be selected with the property "j3d.rend". This made the installation quite complicated (we had to plan several scenarios by setting the classpath and library path so that different systems can work) and the maintenance quite heavy for an highly questionable gain. Only the rendering system based on JOGL 2.0 has been retained. Thus, there is no risk of conflict with Direct3D (still think about disabling the Java 2D pipeline based on Direct3D if necessary), it is possible to mix OpenGL rendering code (with or without JOGL 2.0) to the Java 3D rendering code. |
Installation |
Installation |
| L’installation est très simple. Vous avez besoin des JARs suivants : | The installation is very simple. You need the following JARs: |
|
|
| Les JARs de Java 3D sont ici : | The JARs for Java 3D are here: |
| Les JARs de JOGL, JOAL et GlueGen sont ici. | The JARs for JOGL, JOAL and GlueGen are here. |
| Il vous suffit de copier tous les JARs ci-dessus dans le même répertoire (de sorte que JogAmp sache où trouver les bibliothèques natives pendant l’extraction et le chargement automatiques) et de mettre ceux dont le nom ne contient pas le mot "natives" dans le classpath. Vous pouvez lancer votre programme ainsi en ligne de commande (remplacez ":" par ";" sous Windows, remplacez [1] par le nom de votre JAR et [2] par le nom complet de la classe principale lequel contient les paquetages et les sous-paquetages) : | Simply copy all JARs above into the same directory (so that JogAmp knows where to find the native libraries during the automatic extraction and loading) and put those whose name does not contain the word "natives" into the classpath. You can run your program as well in command line (replace ":" by ";" under Windows, replace [1] by the name of your JAR and [2] by the full name of the main class which contains the packages and subpackages): |
| java -cp gluegen-rt.jar:j3dcore.jar:j3dutils.jar:joal.jar:jogl-all.jar:vecmath.jar:[1].jar [2] | |
| Sous Eclipse 3.8, faites un clic droit sur le projet puis allez dans Properties -> Java Build Path -> Libraries. Cliquez sur "Add JARs…" et sélectionnez les JARs ci-dessus (à l’exception de ceux dont le nom contient le mot "natives"). Sous Netbeans, dans l’onglet "Project", sélectionnez le noeud "Libraries" -> "Add JAR/Folder" et sélectionnez les JARs ci-dessus (à l’exception de ceux dont le nom contient le mot "natives"). | In Eclipse 3.8, right clic on the project and go to Properties -> Java Build Path -> Libraries. Click on "Add JARs…" and select all JARs above (except those whose name contains the word "natives"). In Netbeans, in the "Project" tab, select the "Libraries" node -> "Add JAR/Folder" and select all JARs above (except those whose name contains the word "natives"). |
| Je vous conseille de bien récupérer tous les JARs, y compris ceux qui ne sont pas nécessaires pour l’exécution de votre programme sur votre système d’exploitation car ils vous seront utiles pour le déployer sur Internet sous forme d’applet ou sous forme d’application Java Web Start. | I advise you to get all JARs, including those that are not necessary for the execution of your program on your operating system because they will be useful to deploy it on Internet as an applet or as a Java Web Start application. |
Conclusion |
Conclusion |
| Cette version 1.6.0 rend Java 3D plus stable et plus facile à utiliser. En s’appuyant sur JOGL 2.0, Java 3D se débarrasse d’une limitation et redevient une solution logicielle pérenne telle quelle. Néanmoins, il reste très dépendant d’AWT ce qui l’empêchera de fonctionner sous Android, ses problèmes de performances subsistent et son manque de fonctionnalités modernes le place loin derrière les scénographes existants, notamment Ardor3D, JMonkeyEngine et 3DzzD. Il reste intéressant essentiellement pour les développeurs disposant de gros volumes de code source basé sur cette API. Il dispose toujours de nombreux tutoriels sur Internet et comme l’API publique n’a pas changé, le passage de Java 3D 1.5.2 à Java 3D 1.6.0 ne nécessite aucune modification du code, j’ai fait le test avec Arabian Flights de Mike Prosser. Xith3D est le scénographe le plus proche de Java 3D mais il semble au point mort depuis quelques années. Si Java 3D est suffisant pour vos projets, n’hésitez pas à vous en servir en toute connaissance de cause. En revanche, si vous souhaitez faire de l’animation squelettale, prenez plutôt Ardor3D. Je vous expliquerai prochainement comment porter vos programmes de Java 3D à Ardor3D. La visualisation 3D en Java ne se résume pas à Java 3D. | This version 1.6.0 drives Java 3D more stable and easier to use. Java 3D gets rid of a limitation thanks to JOGL 2.0 and becomes a durable software solution as is. Nevertheless, it is very dependent on AWT which will prevent from running under Android, its performance problems remain and its lack of modern features puts it behind the existing scenegraphs, including Ardor3D, JMonkeyEngine and 3DzzD. It is interesting mainly for developers with large volumes of source code based on this API. It still has many tutorials on the Internet and as the public API has not changed, the transition from Java 3D 1.5.2 to Java 3D 1.6.0 does not require any code changes, I checked that with Arabian Flights by Mike Prosser. Xith3D is the most similar scenegraph from Java 3D, but it seems at a standstill in recent years. If Java 3D is sufficient for your projects, do not hesitate to use it knowingly. However, if you want to use skeletal animation, rather choose Ardor3D. I’ll explain soon how to port your Java 3D programs to Ardor3D. 3D visualization in Java is not just Java 3D. |
| P.S : Vous pouvez demander de l’aide sur le forum ou bien sur Github. | P.S: You can ask for help on the forum or on Github. |
![]() La photo de cet article est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 3.0 non transposé |
![]() The photo of this article is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License |
![]() Cet article est mis à disposition selon les termes de la Licence Creative Commons Attribution – Pas d'Utilisation Commerciale – Partage à l'Identique 3.0 non transposé |
![]() This article is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License |
| Auteur : Julien Gouesse | Author: Julien Gouesse |
-
Articles récents
- Marche citoyenne pour la sixième république dimanche 5 mai 2013 à Paris [Citizens' march for the sixth republic Sunday, May 5th, 2013 in Paris]
- Manifestation du premier mai 2013 lors de la fête du travail à Paris [Demonstration of May first, 2013 during the Labor Day in Paris]
- Chaîne humaine nationale pour réclamer la sortie du nucléaire samedi 9 mars 2013 à Paris [National human chain to demand the phasing out of nuclear power Saturday, March 9th ,2013 in Paris]
- Manifestation en faveur du droit au mariage pour tous et de l’homoparentalité dimanche 27 janvier 2013 à Paris [Demonstration in support of right to marriage for all and same-sex parenting Sunday, January 27th, 2013 in Paris]
- La suite de mes péripéties amoureuses [The sequel of my romantic twists and turns]
Archives
- mai 2013
- mars 2013
- janvier 2013
- décembre 2012
- novembre 2012
- octobre 2012
- septembre 2012
- août 2012
- juillet 2012
- juin 2012
- mai 2012
- avril 2012
- mars 2012
- février 2012
- janvier 2012
- décembre 2011
- novembre 2011
- octobre 2011
- septembre 2011
- juillet 2011
- mai 2011
- avril 2011
- mars 2011
- février 2011
- décembre 2010
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
Catégories
Categories
Tags
ACTA AdopteUnMec amour Anastasia APRIL art boites de nuit Bénédicte CGT cité U communisme cuisine doom-like droit d'auteur FPS féminisme gastronomie Goldeneye HADOPI Java JOGL Jussieu Krystel l'amour est aveugle LCR LGBTI logiciels libres loppsi 2 manifestation Meetic NPA OpenGL Paris retraite révolution Sarkozy Sophie speed dating SSII TUER télé-réalité UNEF Valentine Valérie Wii



![Suivez-moi sur Identi.ca [Follow me on Identi.ca] Suivez-moi sur Identi.ca [Follow me on Identi.ca]](http://gouessej.files.wordpress.com/2010/08/identi__ca.png)
![Contactez-moi par email [Contact me by email] Contactez-moi par email [Contact me by email]](http://gouessej.files.wordpress.com/2010/09/arobase.png)
![Ajoutez-moi à vos contacts XMPP [Add me to your XMPP contacts] Ajoutez-moi à vos contacts XMPP [Add me to your XMPP contacts]](http://gouessej.files.wordpress.com/2010/10/xmpp_.png)
![Rejoignez-moi sur Viadeo [Follow me on Viadeo] Rejoignez-moi sur Viadeo [Follow me on Viadeo]](http://gouessej.files.wordpress.com/2010/08/viadeo.png)
![Rejoignez-moi sur Mediagoblin [Follow me on Mediagoblin] Rejoignez-moi sur Mediagoblin [Follow me on Mediagoblin]](http://gouessej.files.wordpress.com/2013/05/mediagoblin.png)




Ping: zafena development » The JogAmp community now maintains JOGL and Java3D
Ping: Jogl