Texte rotatif java 3d

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 725 fois - Téléchargée 19 fois

Contenu du snippet

Simplement un texte en 3d qui tourne sur lui meme ... a la façon de l'écran de veille Windows (oO).
Je débute en J3D , alors je me suis inspiré ( et plus encor ) du toturial présent sur

http://rvirtual.free.fr/programmation/java3d/intro.html

clair et simple .

Source / Exemple :


import com.sun.j3d.utils.universe.SimpleUniverse;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.media.j3d.Alpha;
import javax.media.j3d.Appearance;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.ColoringAttributes;
import javax.media.j3d.Font3D;
import javax.media.j3d.FontExtrusion;
import javax.media.j3d.Material;
import javax.media.j3d.PointLight;
import javax.media.j3d.RotationInterpolator;
import javax.media.j3d.Shape3D;
import javax.media.j3d.Text3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.JFrame;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Point3f;
import javax.vecmath.Vector3f;

/**
 *

  • @author Tlaloc
  • /
public class tlaloctzin extends JFrame { public tlaloctzin() { //création de la fenetre , rien d'exeptionel super(); setSize(500,300); setTitle("Tlaloctzin en 3D"); setLayout(new BorderLayout()); //on crée le canvas3D qui va contenir la scene Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); add("Center",canvas); SimpleUniverse universe = new SimpleUniverse(canvas); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(createScene()); } public BranchGroup createScene(){ //on commence par créer l'apparence Appearance apparence = new Appearance(); //on cree les attributs de couler que l'on va appliquer a l'apparence ColoringAttributes couleur = new ColoringAttributes(); couleur.setColor(new Color3f(Color.GRAY)); couleur.setShadeModel(ColoringAttributes.NICEST); apparence.setColoringAttributes(couleur); //on configure Material mat=new Material(new Color3f(1f,1f,0f),new Color3f(0f,0f,0f),new Color3f(1f,1f,0f),new Color3f(1f,1f,1f),64); apparence.setMaterial(mat); //on cré le branchgroupe que l on attribueras au canvas3D BranchGroup branch = new BranchGroup(); //création de la font et de l 'apparence de l'objet 3D Font3D font =new Font3D(new Font("Helvetica",Font.PLAIN,1),new FontExtrusion()); Text3D texte = new Text3D(font , "Tlaloctzin",new Point3f(0.0f,-0.25f,0.0f)); texte.setAlignment(Text3D.ALIGN_CENTER); //il faut transhpormer le texte3D en shape pour pouvoir l'integrer a la scene Shape3D text=new Shape3D(); text.setGeometry(texte); //on atribue l'apparence text.setAppearance(apparence); //on retaille l'objet 3D ( la taille des polices est exagérée) Transform3D scale3D = new Transform3D(); scale3D.setScale(0.2f);//soit 20 % de la taille normale TransformGroup scale = new TransformGroup(scale3D); //on autorise la modification durant l'execution' scale.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); //ici on applique la modification de taille scale.addChild(text); //creation de la rotation dans le temps -1 pr durée a l'infinie , 4000 pour la vitesse de rotation plus grand , plus lent ! Alpha alpha = new Alpha(-1,4000); //application de l'alpha ci dessus a l'objet' RotationInterpolator rotator=new RotationInterpolator(alpha,scale); //zone de rotation BoundingSphere bounds=new BoundingSphere(); rotator.setSchedulingBounds(bounds); //on applique scale.addChild(rotator); //on rajoute l'objet3D a la scene branch.addChild(scale); //on ajoute la lumiere PointLight light=new PointLight(new Color3f(Color.GRAY),new Point3f(2f,2f,2f),new Point3f(1f,0f,0f)); light.setInfluencingBounds(new BoundingSphere(new Point3d(),150d)); branch.addChild(light); branch.compile(); return branch ; } public static void main ( String [] args ){ tlaloctzin tla = new tlaloctzin(); tla.setVisible(true); } }

A voir également

Ajouter un commentaire

Commentaires

cs_mayna21
Messages postés
10
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
6 avril 2009
-
errure a ligne de code 33
invalid method declaration;return type required
tlaloctzin
Messages postés
136
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
12 septembre 2013
2 -
effectivement , il faut enlever la majuscule au nom du constructeur ...
Désolé
souicioql
Messages postés
25
Date d'inscription
mercredi 12 mai 2010
Statut
Membre
Dernière intervention
26 mai 2011
-
erre avec imort com.sun.3d.*

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.