La terre (java3d)

Soyez le premier à donner votre avis sur cette source.

Vue 17 811 fois - Téléchargée 1 769 fois

Description

Petite application d'une difficulté moyenne quand on a jamais fait de 3D comme moi. Une fois qu'on a compris le principe après codage se simplifie.

Source / Exemple :


/*****************************************************

  • Auteur : Draven *
  • Fichier : Terre.java *
  • Fonction: Animation de la terre *
                                                                                                          • /
import com.sun.j3d.utils.universe.SimpleUniverse; import com.sun.j3d.utils.geometry.Sphere; import com.sun.j3d.utils.image.TextureLoader; import javax.media.j3d.BranchGroup; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.Appearance; import javax.media.j3d.ColoringAttributes; import javax.media.j3d.ImageComponent; import javax.media.j3d.Texture; import javax.media.j3d.Texture2D; import javax.media.j3d.TextureAttributes; import javax.media.j3d.ImageComponent2D; import javax.media.j3d.Alpha; import javax.media.j3d.RotationInterpolator; import javax.media.j3d.BoundingSphere; import javax.swing.JFrame; import java.awt.BorderLayout; public class Terre extends JFrame { public Terre() { super("Allo Houston..."); getContentPane().setLayout(new BorderLayout()); // creation du canvas Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); getContentPane().add("Center",canvas); // création de la scène, regroupement des objets BranchGroup scene = createScene(); scene.compile(); // création de l'univers de la scene 3D SimpleUniverse univers = new SimpleUniverse(canvas); // on met le plan de projection en arriere par rapport à l'origine univers.getViewingPlatform().setNominalViewingTransform(); // on place la scène dans l'univers "univers" univers.addBranchGraph(scene); //arret du programme lors du clic sur la croix setDefaultCloseOperation(EXIT_ON_CLOSE); } /* *
  • creation d'un groupement d'objet *
  • */
public BranchGroup createScene() { // creation du BG principal BranchGroup ObjPrinc = new BranchGroup(); Appearance AppTexture = AjoutTexture("earth.jpg"); // Début de l'animation TransformGroup TG = new TransformGroup(); //Donner la possibilité a l'objet de bouger TG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); ObjPrinc.addChild(TG); // Ajout de la sphere à l'objet charger de l'animation TG.addChild(new Sphere(0.4f,Sphere.GENERATE_TEXTURE_COORDS,AppTexture)); // Configuration du nombre de tour et la vitesse // ici tourne indéfiniment (-1) et prend 60 secondes pour faire un tour Alpha alpha = new Alpha(-1,60000); RotationInterpolator Rotation = new RotationInterpolator(alpha, TG); Rotation.setSchedulingBounds(new BoundingSphere()); ObjPrinc.addChild(Rotation); return ObjPrinc; } /*
  • Ajout du texture sur la sphere *
  • */
public Appearance AjoutTexture(String NomImage) { try { Appearance Apparence = new Appearance(); // chargement d'une image pour texture TextureLoader loader = new TextureLoader(NomImage,this); ImageComponent2D image = loader.getImage(); // instanciation de l'objet texture Texture2D texture = new Texture2D(Texture.BASE_LEVEL,Texture.RGBA,image.getWidth(),image.getHeight()); texture.setImage(0, image); // ajout de la texture à l'apparence Apparence.setTexture(texture); Apparence.setTextureAttributes(new TextureAttributes()); return Apparence; } catch(NullPointerException e1) { // Creation d'une texture uni dans le cas ou le fichier image n'exciste pas Appearance Apparence = new Appearance(); ColoringAttributes bleu = new ColoringAttributes(); bleu.setColor(0.0f,0.0f,0.8f); Apparence.setColoringAttributes(bleu); return Apparence; } } public static void main(String[] args) { Terre MaTerre = new Terre(); MaTerre.setSize(400,400); MaTerre.setVisible(true); } }

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_kha
Messages postés
38
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
29 juillet 2004
-
Super :)

Précise qu'on a besoin de l API java3d (ce serqit mieux d inclure le jar dans ton zip si possible...)

;)

https://jsecom15b.sun.com/ECom/EComActionServlet/LegalPage:~:com.sun.sunit.sdlc.content.LegalWebPageInfo;jsessionid=jsecom15b.sun.com-34f7d%3A402e68a1%3A89b9c3db5d282
cs_artichaud
Messages postés
36
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
2 février 2010
1 -
en effet l'execution du programme génère plein de bugs. Je n'ai apparament pas les bonnes librairies.
Kant j'utilise l'adresse https://jsecom15b.sun.com/ECom/EComActionServlet/LegalPage:~:com.sun.sunit.sdlc.content.LegalWebPageInfo;jsessionid=jsecom15b.sun.com-34f7d%3A402e68a1%3A89b9c3db5d282
donnée dans le pécédent commentaire, même en me logant sous mon nick, je tombe sur une page ki ne me dit rien du tout sur l' "api java3d". Pourrais-tu joindre cet API? Et signaler comment l'installer stp!
cs_kha
Messages postés
38
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
29 juillet 2004
-
scuse le voila :
http://java.sun.com/products/java-media/3D/download.html
il suffit de mettre les .jar (lis le readme) dans le dossier ext ds la machine virtuelle
cs_artichaud
Messages postés
36
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
2 février 2010
1 -
nickel
en fait j'étais en train de chercher... je pose des kestions avant d'essayer d'y répondre...
cs_Draven
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
8 octobre 2006
-
C vrai que j'aurai du preciser qu'on avait besoin de l'API java3d mais pour moi c etait implicite dans cette rubrique. Je pense qu'il est inutile de mettre le jar dans le zip l'api SDK ne fait que 6Mo et le JRE 4.


Merci à toi, Kha, d'avoir repondu pendant que j etais pas la.

a+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.