Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LA TERRE (JAVA3D)


Information sur la source

Catégorie :Java3D Niveau : Débutant Date de création : 13/02/2004 Date de mise à jour : 13/02/2004 22:02:04 Vu / téléchargé: 11 729 / 1 241

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • /*****************************************************
  • * 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);
  • }
  • }
/*****************************************************
*	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);
	}
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de kha le 14/02/2004 19:41:08

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

signaler à un administrateur
Commentaire de artichaud le 18/02/2004 19:58:51

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!

signaler à un administrateur
Commentaire de kha le 18/02/2004 21:26:05

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

signaler à un administrateur
Commentaire de artichaud le 18/02/2004 21:48:27

nickel
en fait j'étais en train de chercher... je pose des kestions avant d'essayer d'y répondre...

signaler à un administrateur
Commentaire de Draven le 22/02/2004 13:50:55

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+

signaler à un administrateur
Commentaire de tds le 15/03/2004 12:55:12

Mmmmh, déjà vu cela quelque part . . . ;)
B@ron.

signaler à un administrateur
Commentaire de tds le 18/03/2004 14:30:40

Dis Draven, NEODANTE ou GODCONAN pourriez-vous m'aider?
J'ai fini l'environnement de jeu genre Heagemonia en java3D: déplacements, . . . . Cependant, je voudrais introduire des tests de collision. Pour cela, je dois créer mon propre univers (je pense) car les ViewPlatform (je crois) est déjà isLive dans SimpleUniverse... Cependant, je ne parviens pas à faire tourner mon keyboardBehaviour avec mon univers :'( (alors qu'il fonctionne avec SimpleUniverse)
Si vous voulez m'aider, je mettrai mon code ici.
Merci
B@ron [:)]

signaler à un administrateur
Commentaire de Draven le 22/03/2004 19:46:45

Salut tds
Je veux bien t'aider si tu as tjs besoin. Je ne suis pas encore un expert en java3d mais si je peux t aider ça sera avec plaisir. Je te contacte en mp pour plus de détails.
A+

signaler à un administrateur
Commentaire de tds le 23/03/2004 07:33:29

OK, bien c'est assez simple.
1) Le virtualUniverse est fini: je le mettrai très bientôt sur le site.
2) Le contenu: Environnement spacial avec système solaire et rotationS.
3) Je voudrai lorsque je navigue dans cette univers éviter de passer à travers une planète.
IDEE: Mettre une sphère transparente autour de la vue qui elle détecte les collisions.

EN EFFET: Les collisions ne posent pas problème avec d'autres cubes ou autres car ce sont dfse objets. Ici, je veut que la caméra se comporte comme un cube d'ou l'idée de mettre un composant sphère transparente autour de la caméra (View) pour qu'elle détecte les collisions avant que cela ne soit trop tard...

MAIS y a-t-il d'autres solutions...

B@ron {EU.BELGIUM}

signaler à un administrateur
Commentaire de Uims le 11/08/2004 16:22:08

Euhhh pour le prog (dsl de m'incruster) il me mettent apres avoir compiler "error loading image earth.jpg"
Est-ce moi ou le prog qui dec?

signaler à un administrateur
Commentaire de tds le 12/08/2004 07:41:52

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}

signaler à un administrateur
Commentaire de amadnane2000 le 08/05/2005 23:24:23

Bonjour,
trés bien mais,je veux plus de détailles s'il vous plait .si possible bien sur.
et merci .

signaler à un administrateur
Commentaire de nightlord666 le 07/08/2005 19:31:23

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).

signaler à un administrateur
Commentaire de nightlord666 le 07/08/2005 19:48:24

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.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.