La terre (java3d)

Soyez le premier à donner votre avis sur cette source.

Vue 18 138 fois - Téléchargée 1 814 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
Messages postés
1
Date d'inscription
mardi 8 février 2011
Statut
Membre
Dernière intervention
22 février 2011

je trouve bien pas mal du tout
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
8
Ah je viens de me rendre compte : le compilateur cherche par defaut dans le repertoire contenant les dossiers "src", "build", "test" et "nbproject". Il faut mettre la texture dans ce répertoire.
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
8
Quand le compilateur met cette erreur, je pense que c'est parce qu'il ne trouve pas l'image au chemin spécifié(j'ai recopié le code sans télécharger l'image et ça me met pareil).
Messages postés
6
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
14 mai 2005

Bonjour,
trés bien mais,je veux plus de détailles s'il vous plait .si possible bien sur.
et merci .
Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004

Je n'ai pas testé à fond ce programme mais je pense que tu devrais envoyer ta pile d'erreurs à Draven.
C'est bizarre comme message d'erreur car on dirait qu'il trouve l'image mais qu'il ne parvient pas à la télécharger...

Bon courage. Si cela ne va pas mieux, poste et on regardera ensemble...

B@ron {EU.BELGIUM}
Afficher les 15 commentaires

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.