Affichage d'object .obj dans un canvas3D

Résolu
bimane - 12 mars 2013 à 13:48
 Utilisateur anonyme - 13 mars 2013 à 17:21
Bonjour ,
je suis une débutante sur java3D j'ai reussi a afficher un canvas3D mais j'arrive pas à charger une image *.obj l'afficher dans ce canvas3D en appuiant sur un bouton parcourir voila ce que j'ai utilisé :
if (e.getSource()==parcourir) {
// try {
JFileChooser fd = new JFileChooser("Répertoire de l'image:");
fd.setVisible(true);
fd.showOpenDialog(null);
filename = "maison.max";
int dim = ObjectFile.RESIZE;
ObjectFile f = new ObjectFile(dim,
(float)(creaseAngle * Math.PI / 180.0));
Scene s = null;
try
{
System.out.println("bn,");
s = f.load(filename);
}
catch (FileNotFoundException evt)
{
System.err.println(e);
System.exit(1);
}
catch (ParsingErrorException evt)
{
System.err.println(e);
System.exit(1);
}
catch (IncorrectFormatException evt)
{
System.err.println(e);
System.exit(1);
}
Merci pour votre aide

31 réponses

Utilisateur anonyme
13 mars 2013 à 16:03
bimane, vous ne nous "saoulez" pas, vous débutez, je comprends qu'il faille commencer par le début. Vous utilisez une Frame AWT, vous pouvez la garder, vous n'êtes pas obligée de passer à une applet. Je vous ai donné un exemple très complet, il vous suffit essentiellement de déplacer tout le code de la méthode init() dans votre constructeur ou tout simplement de conserver la partie de code qui fait à peu près la même chose dans votre classe. Le plus important est d'utiliser la méthode createSceneGraph() quand vous avez votre fichier .obj sous la main :
BranchGroup scene = createSceneGraph(); 
        simpleU.getViewingPlatform().setNominalViewingTransform();
        scene.compile(); 
        simpleU.addBranchGraph(scene);


Java3D requiert de comprendre les concepts de base de l'infographie, pas seulement les bases du langage Java. S'il vous plait, commencez par afficher la trace d'exception comme je vous l'ai demandé sinon on ne va jamais avancer.



















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
J'essaye d'adapter mon code avec celui que tu m'as envoyé mais ma question est celui que tu m'as envoyé est une classe qui hérite de JApllet mais mon application est une JFrame est ce que je dois travailler sur les applets ou quoi ?
Désolée de vous avoir soûlée mais je suis vraiment une débutante et j'aimerai bien connaitre.
Merci
0
J'ai fait exactement ce que vous m'avez demandé !
J'ai un fichier sur le bureau .obj qui s'apelle airtable mais j'ai une erreur sur getCodeBase() et encore je ne sais pas si je dois garder ce que j'ai dans MouseClicked voila toute ma classe ca se compile pas car j'ai une erreur dans GetCodeBase()
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package testobject;

import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import java.awt.*;
import java.awt.event.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
// classes Java 3D
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.*;
import java.awt.image.*; 
import javax.vecmath.*;
import java.util.*;
import com.sun.j3d.utils.picking.behaviors.*;
import com.sun.j3d.utils.picking.*;
import java.io.FileNotFoundException;

public class Test extends Frame implements MouseListener,MouseMotionListener{
SimpleUniverse SimpleU;
static boolean application = false;

 Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
 SimpleUniverse simpleU= new SimpleUniverse(canvas3D); ;
 private double creaseAngle = 60.0;
  private String filename;


TransformGroup tg = new TransformGroup();
    BoundingSphere behaveBounds = new BoundingSphere();
    JButton parcourir;
    Panel pan;
   

    public Test(){
         super("Test de l'application :p :p" );
        BranchGroup scene = createSceneGraph();

        simpleU.getViewingPlatform().setNominalViewingTransform();
        scene.compile();
        simpleU.addBranchGraph(scene);
       
        setLayout(new BorderLayout());
        Panel framepane=new Panel();
        framepane.setBackground(Color.cyan);
        this.add(framepane);
        framepane.setLayout(null);
        this.setSize(500,500);
        this.setVisible(true);

       
       Panel panel=new Panel();
      panel.setLayout(new BorderLayout());panel.setBackground(Color.blue);
      panel.setSize(500,500);panel.setLocation(120,40);
      pan=new Panel();pan.setLayout(null);
      pan.setBackground(Color.yellow);
      JSeparator sep = new JToolBar.Separator();
        sep.setBackground(Color.blue);
         sep.setOpaque(true);
      panel.add(pan);
      panel.setLocation(140, 80);
      pan.add(canvas3D);
      pan.setSize(300,300);canvas3D.setSize(300,500);
   


      
      canvas3D.setLocation(pan.getLocation());
      canvas3D.setBackground(Color.red);
      framepane.add(panel);


      //---creation des boutons
       parcourir=new JButton("Parcourir." );parcourir.addMouseListener(this);
       parcourir.setSize(100,30);parcourir.setLocation(30,10);
       framepane.add(parcourir);
         this.setSize(500,500);this.setVisible(true);
         
 }
//--------------------------

public BranchGroup createSceneGraph() {

   	BranchGroup objRoot = new BranchGroup();
TransformGroup tg = new TransformGroup();
        Transform3D t3d = new Transform3D();
      	try
{
Scene s = null;
   		ObjectFile f = new ObjectFile ();
    		f.setFlags (ObjectFile.RESIZE | ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY);

if (application == false){
java.net.URL airFile = new java.net.URL (getCodeBase(), "airtable.obj");
s = f.load (airFile);
tg.addChild (s.getSceneGroup ());

}
else {
String s1 = "airtable.obj";
s = f.load (s1);
tg.addChild (s.getSceneGroup ());
}

}

      	catch (java.net.MalformedURLException ex){
      	}
      	catch (java.io.FileNotFoundException ex){
      	}


      	BoundingSphere bounds = new BoundingSphere (new Point3d (0.0, 0.0, 0.0), 100.0);

      	Color3f ambientColor = new Color3f (0.5f, 0.5f, 0.5f);

      	AmbientLight ambientLightNode = new AmbientLight (ambientColor);

      	ambientLightNode.setInfluencingBounds (bounds);

      	objRoot.addChild (ambientLightNode);


      	t3d.setTranslation(new Vector3f(0f,0f,-5f));
      	tg.setTransform(t3d);
      	objRoot.addChild(tg);
      	return objRoot;
      	}
   
public void mouseClicked(MouseEvent e){



     if (e.getSource()==parcourir) {
               
                    JFileChooser fd = new JFileChooser("Répertoire des fichiers:");
                    fd.setVisible(true);
                    fd.showOpenDialog(null);
                   filename = "C:\\imane\\bureau\\wateringcan.obj";
                            int dim = ObjectFile.RESIZE;
                            ObjectFile f = new ObjectFile(dim,
                                      (float)(creaseAngle * Math.PI / 180.0));
                            Scene s = null;
                                    try
                                    {
                                        s = f.load (filename);
                                             tg.addChild (s.getSceneGroup ());
                                           
                                            
                                    }
                                    catch (FileNotFoundException evt)
                                    {
                                            evt.printStackTrace();
                                            System.exit(1);
                                    }
                                    catch (ParsingErrorException evt)
                                    {
                                           evt.printStackTrace();
                                            System.exit(1);
                                    }
                                    catch (IncorrectFormatException evt)
                                    {
                                            evt.printStackTrace();
                                            System.exit(1);
                                    }
                
canvas3D.getView().setBackClipDistance(Float.MAX_VALUE);

canvas3D.getView().setFrontClipDistance(Float.MAX_VALUE);

 	}
     

 }

 //-------------------------------------
  


public void mouseReleased(MouseEvent e){canvas3D.repaint()	;}


public void mouseMoved(MouseEvent e){}
 public void mousePressed(MouseEvent e) {}

//    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) { }

//-------methode main
public static void main(String args[]){
 Test myApp=new Test();
}

    public void mouseEntered(MouseEvent e) {
       canvas3D.repaint();
    }

   


}
0
Utilisateur anonyme
13 mars 2013 à 16:25
Il faut appeler createSceneGraph() et les 3 lignes juste après uniquement quand vous avez le chemin vers votre fichier dans mouseClicked(MouseEvent) puis il faut modifier createSceneGraph() pour qu'il prenne directement l'objet ObjectFile que vous aviez déjà dans votre code et retirer le passage qui va en créer un autre (et qui appelle getCodeBase()). On dirait que vous n'essayez pas de comprendre ce que vous faites. Ne réutilisez pas du code que vous ne maîtrisez pas. Essayez d'abord de comprendre ce que fait l'exemple.























T.U.E.R (First Person Shooter créé par Julien Gouesse)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai fait exactement ce que vous m'avez demandé !
J'ai un fichier sur le bureau .obj qui s'apelle airtable mais j'ai une erreur sur getCodeBase() et encore je ne sais pas si je dois garder ce que j'ai dans MouseClicked voila toute ma classe ca se compile pas car j'ai une erreur dans GetCodeBase()
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package testobject;

import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import java.awt.*;
import java.awt.event.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
// classes Java 3D
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.*;
import java.awt.image.*; 
import javax.vecmath.*;
import java.util.*;
import com.sun.j3d.utils.picking.behaviors.*;
import com.sun.j3d.utils.picking.*;
import java.io.FileNotFoundException;

public class Test extends Frame implements MouseListener,MouseMotionListener{
SimpleUniverse SimpleU;
static boolean application = false;

 Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
 SimpleUniverse simpleU= new SimpleUniverse(canvas3D); ;
 private double creaseAngle = 60.0;
  private String filename;


TransformGroup tg = new TransformGroup();
    BoundingSphere behaveBounds = new BoundingSphere();
    JButton parcourir;
    Panel pan;
   

    public Test(){
         super("Test de l'application :p :p" );
        BranchGroup scene = createSceneGraph();

        simpleU.getViewingPlatform().setNominalViewingTransform();
        scene.compile();
        simpleU.addBranchGraph(scene);
       
        setLayout(new BorderLayout());
        Panel framepane=new Panel();
        framepane.setBackground(Color.cyan);
        this.add(framepane);
        framepane.setLayout(null);
        this.setSize(500,500);
        this.setVisible(true);

       
       Panel panel=new Panel();
      panel.setLayout(new BorderLayout());panel.setBackground(Color.blue);
      panel.setSize(500,500);panel.setLocation(120,40);
      pan=new Panel();pan.setLayout(null);
      pan.setBackground(Color.yellow);
      JSeparator sep = new JToolBar.Separator();
        sep.setBackground(Color.blue);
         sep.setOpaque(true);
      panel.add(pan);
      panel.setLocation(140, 80);
      pan.add(canvas3D);
      pan.setSize(300,300);canvas3D.setSize(300,500);
   


      
      canvas3D.setLocation(pan.getLocation());
      canvas3D.setBackground(Color.red);
      framepane.add(panel);


      //---creation des boutons
       parcourir=new JButton("Parcourir." );parcourir.addMouseListener(this);
       parcourir.setSize(100,30);parcourir.setLocation(30,10);
       framepane.add(parcourir);
         this.setSize(500,500);this.setVisible(true);
         
 }
//--------------------------

public BranchGroup createSceneGraph() {

   	BranchGroup objRoot = new BranchGroup();
TransformGroup tg = new TransformGroup();
        Transform3D t3d = new Transform3D();
      	try
{
Scene s = null;
   		ObjectFile f = new ObjectFile ();
    		f.setFlags (ObjectFile.RESIZE | ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY);

if (application == false){
java.net.URL airFile = new java.net.URL (getCodeBase(), "airtable.obj");
s = f.load (airFile);
tg.addChild (s.getSceneGroup ());

}
else {
String s1 = "airtable.obj";
s = f.load (s1);
tg.addChild (s.getSceneGroup ());
}

}

      	catch (java.net.MalformedURLException ex){
      	}
      	catch (java.io.FileNotFoundException ex){
      	}


      	BoundingSphere bounds = new BoundingSphere (new Point3d (0.0, 0.0, 0.0), 100.0);

      	Color3f ambientColor = new Color3f (0.5f, 0.5f, 0.5f);

      	AmbientLight ambientLightNode = new AmbientLight (ambientColor);

      	ambientLightNode.setInfluencingBounds (bounds);

      	objRoot.addChild (ambientLightNode);


      	t3d.setTranslation(new Vector3f(0f,0f,-5f));
      	tg.setTransform(t3d);
      	objRoot.addChild(tg);
      	return objRoot;
      	}
   
public void mouseClicked(MouseEvent e){



     if (e.getSource()==parcourir) {
               
                    JFileChooser fd = new JFileChooser("Répertoire des fichiers:");
                    fd.setVisible(true);
                    fd.showOpenDialog(null);
                   filename = "C:\\imane\\bureau\\wateringcan.obj";
                            int dim = ObjectFile.RESIZE;
                            ObjectFile f = new ObjectFile(dim,
                                      (float)(creaseAngle * Math.PI / 180.0));
                            Scene s = null;
                                    try
                                    {
                                        s = f.load (filename);
                                             tg.addChild (s.getSceneGroup ());
                                           
                                            
                                    }
                                    catch (FileNotFoundException evt)
                                    {
                                            evt.printStackTrace();
                                            System.exit(1);
                                    }
                                    catch (ParsingErrorException evt)
                                    {
                                           evt.printStackTrace();
                                            System.exit(1);
                                    }
                                    catch (IncorrectFormatException evt)
                                    {
                                            evt.printStackTrace();
                                            System.exit(1);
                                    }
                
canvas3D.getView().setBackClipDistance(Float.MAX_VALUE);

canvas3D.getView().setFrontClipDistance(Float.MAX_VALUE);

 	}
     

 }

 //-------------------------------------
  


public void mouseReleased(MouseEvent e){canvas3D.repaint()	;}


public void mouseMoved(MouseEvent e){}
 public void mousePressed(MouseEvent e) {}

//    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) { }

//-------methode main
public static void main(String args[]){
 Test myApp=new Test();
}

    public void mouseEntered(MouseEvent e) {
       canvas3D.repaint();
    }

   


}
0
Désolée certes j'ai la tête un peu bloquée je travaille ça fait 8 heures mais je vous assure que je fais avec !
Je vais essayer ce que vous m'avez dites
0
Désolée certes j'ai la tête un peu bloquée je travaille ça fait 8 heures mais je vous assure que je fais avec !
Je vais essayer ce que vous m'avez dites
0
Désolée certes j'ai la tête un peu bloquée je travaille ça fait 8 heures mais je vous assure que je fais avec !
Je vais essayer ce que vous m'avez dites
0
J'ai organisé toute la classe et voila maintenant ou j'en suis :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package testobject;

import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
// classes Java 3D
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.*;
import java.awt.image.*; 
import javax.vecmath.*;
import java.util.*;
import com.sun.j3d.utils.picking.behaviors.*;
import com.sun.j3d.utils.picking.*;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;

public class Test extends Frame implements MouseListener,MouseMotionListener{
SimpleUniverse SimpleU;
static boolean application = false;

 Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
 SimpleUniverse simpleU= new SimpleUniverse(canvas3D); ;
 private double creaseAngle = 60.0;
 


TransformGroup tg = new TransformGroup();
    BoundingSphere behaveBounds = new BoundingSphere();
    JButton parcourir;
    Panel pan;
   

    public Test(){
         super("Test de l'application :p :p" );
       
        setLayout(new BorderLayout());
        Panel framepane=new Panel();
        framepane.setBackground(Color.cyan);
        this.add(framepane);
        framepane.setLayout(null);
        this.setSize(500,500);
        this.setVisible(true);

       
       Panel panel=new Panel();
      panel.setLayout(new BorderLayout());panel.setBackground(Color.blue);
      panel.setSize(500,500);panel.setLocation(120,40);
      pan=new Panel();pan.setLayout(null);
      pan.setBackground(Color.yellow);
      JSeparator sep = new JToolBar.Separator();
        sep.setBackground(Color.blue);
         sep.setOpaque(true);
      panel.add(pan);
      panel.setLocation(140, 80);
      pan.add(canvas3D);
      pan.setSize(300,300);canvas3D.setSize(300,500);
   


      
      canvas3D.setLocation(pan.getLocation());
      canvas3D.setBackground(Color.red);
      framepane.add(panel);


      //---creation des boutons
       parcourir=new JButton("Parcourir." );parcourir.addMouseListener(this);
       parcourir.setSize(100,30);parcourir.setLocation(30,10);
       framepane.add(parcourir);
         this.setSize(500,500);this.setVisible(true);
         
 }
//--------------------------

public BranchGroup createSceneGraph() {

   	BranchGroup objRoot = new BranchGroup();
TransformGroup tg = new TransformGroup();
       
      	try
{
Scene s = null;
   		ObjectFile f = new ObjectFile ();
    		f.setFlags (ObjectFile.RESIZE);

String s1 = "airtable.obj";
s = f.load (s1);
tg.addChild (s.getSceneGroup ());


}

      	
      	catch (java.io.FileNotFoundException ex){
      	}


      	return objRoot;
      	}
   
public void mouseClicked(MouseEvent e){



     if (e.getSource()==parcourir) {
             
                    JFileChooser fd = new JFileChooser("Répertoire des fichiers:");
                    fd.setVisible(true);
                    fd.showOpenDialog(null);
                    String filename = "C:/imane/bureau/airtable.obj";
            try {
                 FileReader file = new FileReader(filename);
           BufferedReader inputStream = new BufferedReader(file);
        System.out.println(inputStream.readLine());

              

            } catch (IOException ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            }
                   
                    BranchGroup scene = createSceneGraph();

                 simpleU.getViewingPlatform().setNominalViewingTransform();
                 scene.compile();
                   simpleU.addBranchGraph(scene);
       
                           
                
canvas3D.getView().setBackClipDistance(Float.MAX_VALUE);

canvas3D.getView().setFrontClipDistance(Float.MAX_VALUE);

 	}
     

 }

 //-------------------------------------
  


public void mouseReleased(MouseEvent e){canvas3D.repaint()	;}


public void mouseMoved(MouseEvent e){}
 public void mousePressed(MouseEvent e) {}

//    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) { }

//-------methode main
public static void main(String args[]){
 Test myApp=new Test();
}

    public void mouseEntered(MouseEvent e) {
       canvas3D.repaint();
    }

   


}

mais il me donne toujours une erreur la voila
13 mars 2013 16:09:59 testobject.Test mouseClicked
GRAVE: null

java.io.FileNotFoundException: C:\imane\bureau\airtable.obj (Le chemin d’accès spécifié est introuvable)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at java.io.FileInputStream.(FileInputStream.java:66)
at java.io.FileReader.(FileReader.java:41)
at testobject.Test.mouseClicked(Test.java:127)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6292)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD STOPPED (total time: 28 seconds)
0
J'ai organisé toute la classe et voila maintenant ou j'en suis :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package testobject;

import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
// classes Java 3D
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.*;
import java.awt.image.*; 
import javax.vecmath.*;
import java.util.*;
import com.sun.j3d.utils.picking.behaviors.*;
import com.sun.j3d.utils.picking.*;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;

public class Test extends Frame implements MouseListener,MouseMotionListener{
SimpleUniverse SimpleU;
static boolean application = false;

 Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
 SimpleUniverse simpleU= new SimpleUniverse(canvas3D); ;
 private double creaseAngle = 60.0;
 


TransformGroup tg = new TransformGroup();
    BoundingSphere behaveBounds = new BoundingSphere();
    JButton parcourir;
    Panel pan;
   

    public Test(){
         super("Test de l'application :p :p" );
       
        setLayout(new BorderLayout());
        Panel framepane=new Panel();
        framepane.setBackground(Color.cyan);
        this.add(framepane);
        framepane.setLayout(null);
        this.setSize(500,500);
        this.setVisible(true);

       
       Panel panel=new Panel();
      panel.setLayout(new BorderLayout());panel.setBackground(Color.blue);
      panel.setSize(500,500);panel.setLocation(120,40);
      pan=new Panel();pan.setLayout(null);
      pan.setBackground(Color.yellow);
      JSeparator sep = new JToolBar.Separator();
        sep.setBackground(Color.blue);
         sep.setOpaque(true);
      panel.add(pan);
      panel.setLocation(140, 80);
      pan.add(canvas3D);
      pan.setSize(300,300);canvas3D.setSize(300,500);
   


      
      canvas3D.setLocation(pan.getLocation());
      canvas3D.setBackground(Color.red);
      framepane.add(panel);


      //---creation des boutons
       parcourir=new JButton("Parcourir." );parcourir.addMouseListener(this);
       parcourir.setSize(100,30);parcourir.setLocation(30,10);
       framepane.add(parcourir);
         this.setSize(500,500);this.setVisible(true);
         
 }
//--------------------------

public BranchGroup createSceneGraph() {

   	BranchGroup objRoot = new BranchGroup();
TransformGroup tg = new TransformGroup();
       
      	try
{
Scene s = null;
   		ObjectFile f = new ObjectFile ();
    		f.setFlags (ObjectFile.RESIZE);

String s1 = "airtable.obj";
s = f.load (s1);
tg.addChild (s.getSceneGroup ());


}

      	
      	catch (java.io.FileNotFoundException ex){
      	}


      	return objRoot;
      	}
   
public void mouseClicked(MouseEvent e){



     if (e.getSource()==parcourir) {
             
                    JFileChooser fd = new JFileChooser("Répertoire des fichiers:");
                    fd.setVisible(true);
                    fd.showOpenDialog(null);
                    String filename = "C:/imane/bureau/airtable.obj";
            try {
                 FileReader file = new FileReader(filename);
           BufferedReader inputStream = new BufferedReader(file);
        System.out.println(inputStream.readLine());

              

            } catch (IOException ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            }
                   
                    BranchGroup scene = createSceneGraph();

                 simpleU.getViewingPlatform().setNominalViewingTransform();
                 scene.compile();
                   simpleU.addBranchGraph(scene);
       
                           
                
canvas3D.getView().setBackClipDistance(Float.MAX_VALUE);

canvas3D.getView().setFrontClipDistance(Float.MAX_VALUE);

 	}
     

 }

 //-------------------------------------
  


public void mouseReleased(MouseEvent e){canvas3D.repaint()	;}


public void mouseMoved(MouseEvent e){}
 public void mousePressed(MouseEvent e) {}

//    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) { }

//-------methode main
public static void main(String args[]){
 Test myApp=new Test();
}

    public void mouseEntered(MouseEvent e) {
       canvas3D.repaint();
    }

   


}

mais il me donne toujours une erreur la voila
13 mars 2013 16:09:59 testobject.Test mouseClicked
GRAVE: null

java.io.FileNotFoundException: C:\imane\bureau\airtable.obj (Le chemin d’accès spécifié est introuvable)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at java.io.FileInputStream.(FileInputStream.java:66)
at java.io.FileReader.(FileReader.java:41)
at testobject.Test.mouseClicked(Test.java:127)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6292)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD STOPPED (total time: 28 seconds)
0
Utilisateur anonyme
13 mars 2013 à 17:21
Je croyais que votre fichier s'appelait wateringcan.obj, je ne comprends pas ce que vous faites.


















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Rejoignez-nous