IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

3D Java Discussion :

[Java3D] Textures sur un objet


Sujet :

3D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 22
    Points
    22
    Par défaut [Java3D] Textures sur un objet
    bonjour,

    j'essaye de mettre une texture sur une box mais la texture n'apparait pas a l'affichage. J'ai verifie l'URL de l'image est la bonne, et je n'ai pas d'erreur de compil. QQ1 peut m'aider SVP? merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    //////////////CODE//////////////
    
    class Siege {
    	private Frame motherApp;
    
    	private Vector3f vect;
    
    	public Siege(Frame motherApp, Vector3f vect) {
    		this.motherApp = motherApp;
    		this.vect = vect;
    	}
    
    	private Appearance mkAppWithTexture(String textureName) {
    
    		Appearance app = new Appearance();
    		TextureLoader loader = new TextureLoader(textureName, motherApp);
    		ImageComponent2D image = loader.getImage();
    
    		Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA,
    				image.getWidth(), image.getHeight());
    		texture.setImage(0, image);
    		texture.setEnable(true);
    
    		texture.setMagFilter(Texture.BASE_LEVEL_LINEAR);
    		texture.setMinFilter(Texture.BASE_LEVEL_LINEAR);
    
    		app.setTexture(texture);
    		app.setTextureAttributes(new TextureAttributes());
    		return app;
    
    	}
    
    	public BranchGroup createSiege() {
    		BranchGroup myScene = new BranchGroup();
    
    		Transform3D tr3d = new Transform3D();
    		tr3d.setTranslation(vect);
    		TransformGroup tg = new TransformGroup(tr3d);
    
    		Appearance LOGOApp = mkAppWithTexture("M:/workspace/FirstAppletCLT/src/LOGO.gif");
    
    		// on crée une apparence de couleur bleue
    		Appearance app_bleu = new Appearance();
    		ColoringAttributes bleu = new ColoringAttributes();
    		bleu.setColor(0.1f, 0.1f, 1.0f);
    		// on precise le rendu
    		bleu.setShadeModel(ColoringAttributes.NICEST);
    		app_bleu.setColoringAttributes(bleu);
    
    		// on crée un vecteur de translation 30 cm suivant les Y (dans l'autre
    		// sens)
    		Transform3D translate3 = new Transform3D();
    		translate3.set(new Vector3f(-0.4f, 0.4f, 0.0f));
    
    		// on crée un groupe de transformation TG3 suivant la matrice de
    		// transformation translate3
    		TransformGroup TG3 = new TransformGroup(translate3);
    
    		// on crée un cube qui herite de cette rotation
    		TG3.addChild(new Box(0.3f, 0.1f, 0.4f, Box.GENERATE_TEXTURE_COORDS,
    				LOGOApp));
    
    		// on crée un vecteur de translation 30 cm suivant les Y (dans l'autre
    		// sens)
    		Transform3D translate = new Transform3D();
    		translate.set(new Vector3f(0.0f, 1.0f, -0.5f));
    
    		// on crée un groupe de transformation TG3 suivant la matrice de
    		// transformation translate3
    		TransformGroup TG = new TransformGroup(translate);
    
    		// on crée un cube qui herite de cette rotation
    		TG.addChild(new Box(0.1f, 0.6f, 0.4f, Box.GENERATE_TEXTURE_COORDS,
    				LOGOApp));
    
    		// on crée un vecteur de translation 30 cm suivant les Y (dans l'autre
    		// sens)
    		Transform3D translate4 = new Transform3D();
    		translate4.set(new Vector3f(-0.6f, 0.0f, -0.5f));
    
    		// on crée un groupe de transformation TG3 suivant la matrice de
    		// transformation translate3
    		TransformGroup TG4 = new TransformGroup(translate4);
    
    		// on crée un cube qui herite de cette rotation
    		TG4.addChild(new Box(0.05f, 0.3f, 0.2f, Box.GENERATE_TEXTURE_COORDS,
    				app_bleu));
    
    		// on crée un vecteur de translation 30 cm suivant les Y (dans l'autre
    		// sens)
    		Transform3D translate5 = new Transform3D();
    		translate5.set(new Vector3f(-0.2f, 0.0f, -0.5f));
    
    		// on crée un groupe de transformation TG3 suivant la matrice de
    		// transformation translate3
    		TransformGroup TG5 = new TransformGroup(translate5);
    
    		// on crée un cube qui herite de cette rotation
    		TG5.addChild(new Box(0.05f, 0.3f, 0.2f, Box.GENERATE_TEXTURE_COORDS,
    				app_bleu));
    
    		tg.addChild(TG3);
    		tg.addChild(TG);
    		tg.addChild(TG4);
    		tg.addChild(TG5);
    
    		myScene.addChild(tg);
    		myScene.compile();
    		return myScene;
    	}
    
    }

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Je peine à déboguer ton code, mais essaie celui-là il marche.
    On passe par un File, puis une BufferedImage, puis un Appearance, puis une texture.
    L'image doit être placée avec ses fichiers Java.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    //ne pas oublier les imports relatifs aux fichiers, etc
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.media.j3d.Appearance;
    import javax.media.j3d.Texture;
    import com.sun.j3d.utils.image.TextureLoader;
     
     
    	    // fichier , image, texture
    	    File fichier = new File("terre3.jpg");
    	    BufferedImage image1 = ImageIO.read(fichier);
    	    Texture texture = new TextureLoader(image1).getTexture();
     
    		// création de l'apparence qu'on appliquera sur la sphère
    		Appearance app1 = new Appearance ();
     
    		// "initialisation" de l'apparence grâce à la texture
    		app1.setTexture(texture);
     
    		// construction de la sphère de rayon 1 et avec une apparence app1
    		Box boite = new Box(0.5f,0.5f,0.5f,Box.GENERATE_TEXTURE_COORDS, app1);
    Il faut aussi mettre "throws IOException" un peu partout, à la déclaration du constructeur etc (Eclipse dit où le mettre par exemple )

    Voilà, j'espère que ça marchera.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 22
    Points
    22
    Par défaut ca marche
    merci benlasavate

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 41
    Points : 42
    Points
    42
    Par défaut
    Je viens de jeter un coup d'oeil. J'avais un problème similaire. Apparament il est important a la création de l'objet de demande la génération des coordonnées de texture sinon ça déconne.
    cubeBox = new Box(0.5f,0.5f,0.5f,Box.GENERATE_TEXTURE_COORDS, null);

    Dans le premier code la création était OK. Le problème doit venir de mkAppWithTexture.

    Est-ce que l'on peut afficher du texte du les différentes faces ? Avoir des faces avec des textures et d'autres avec du texte ? (voir de la vidéo ou du HTML)

Discussions similaires

  1. WebGL : appliquer des textures sur les objets
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 20/07/2015, 21h22
  2. Texture sur un objet 3D (openGL+glut)
    Par betsprite dans le forum OpenGL
    Réponses: 36
    Dernier message: 06/05/2010, 21h17
  3. Réponses: 13
    Dernier message: 04/05/2009, 00h43
  4. Ajouter une textures sur des objets 3D openGL
    Par rere56 dans le forum 3D
    Réponses: 1
    Dernier message: 27/07/2007, 11h08
  5. Réponses: 13
    Dernier message: 25/01/2005, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo