Programme simple pour charger fichier(s) STL - Java3D
Bonjour bonjour,
je suis à la recherche d'un programme qui affiche un objet STL en chargeant un file.stl
J'ai déjà établi une sorte de code qui m'affiche mon STL mais qu'à moitié... et dès que je dezoom trop, mon STL disparait :koi:
Il doit bien exister un exemple quelque part.. ou quelqu'un qui l'aurait déjà fait.. :)
Merci d'avance.:help::arf:
Voici mon petit code:
Code:
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
| 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 com.sun.j3d.utils.geometry.ColorCube;
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.Transform3D;
import javax.vecmath.Vector3f;
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());
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);
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);
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);
}
} |