La terre (java3d)

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

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.