Login  Register

Re: STLLoader

Posted by mark h on Jun 24, 2014; 2:20pm
URL: https://forum.jogamp.org/STLLoader-tp4032481p4032487.html

Thank you very much. It's resolve !


package cube3dtg;



import com.sun.j3d.loaders.Scene;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.BorderLayout;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.BranchGroup;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.io.File;
import java.io.IOException;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.View;
import org.j3d.loaders.stl.STLFileReader;

public class Cube3dTG extends Frame implements WindowListener, MouseWheelListener
{    
   
    BranchGroup groupe;
    BranchGroup objRoot;
    Canvas3D canvas3D;
    TransformGroup tg ;
   
    public Cube3dTG()
    {
        super("STLLoader");
        this.addWindowListener(this);
        setLayout(new BorderLayout());
        // 1ere étape création du Canvas3d qui vas afficher votre univers virtuel
        canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
        add(canvas3D);
        // 2eme étape on crée notre scene (regroupement d'objet)
        try{
            File file = new File("peace.stl");
            final STLFileReader reader = new STLFileReader(file);
            STLLoader loader = new STLLoader();
            Scene scene = loader.createScene(reader);
            groupe = scene.getSceneGroup();
        }catch (IOException ex){
            System.out.println(ex);
        }
    SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
    canvas3D.addMouseWheelListener(this);

    // on met le plan de projection en arriere par rapport a l'origine
    simpleU.getViewingPlatform().setNominalViewingTransform();
    objRoot =new BranchGroup();        
    tg = new TransformGroup();
    tg.addChild(groupe);
    objRoot.addChild(tg);        
    tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); // -----------(1)
    tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); //--------------(2)
    //fonction zoom
    MouseZoom myMouseZoom = new MouseZoom();
    myMouseZoom.setTransformGroup(tg);  // ---------------(7)
    myMouseZoom.setSchedulingBounds(new BoundingSphere());  // ---------------(8)
    //fonction rotation
    MouseRotate rotate = new MouseRotate(tg);
    rotate.setSchedulingBounds(new BoundingSphere());
    //fonction déplacement
    MouseTranslate translate = new MouseTranslate(tg);
    translate.setSchedulingBounds(new BoundingSphere());

    objRoot.addChild(myMouseZoom);
    objRoot.addChild(rotate);
    objRoot.addChild(translate);
    simpleU.addBranchGraph(objRoot);
    View view = simpleU.getViewer().getView();
    view.setBackClipDistance(1000);
    canvas3D.repaint();
}


    @Override
    public void windowActivated(WindowEvent e){}
    @Override
    public void windowClosed(WindowEvent e){}
    @Override
    public void windowDeactivated(WindowEvent e){}
    @Override
    public void windowDeiconified(WindowEvent e){}
    @Override
    public void windowIconified(WindowEvent e){}
    @Override
    public void windowOpened(WindowEvent e){}
    @Override
    public void windowClosing(WindowEvent e){
            System.exit(1);
    }
    @Override
    public void mouseWheelMoved(MouseWheelEvent e){
    }
    public static void main(String args[])
    {
            Cube3dTG myApp=new Cube3dTG();
            myApp.setLocationRelativeTo(null);
            myApp.setSize(600,600);
            myApp.setVisible(true);
    }
       
}