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);
}
}