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
Il doit bien exister un exemple quelque part.. ou quelqu'un qui l'aurait déjà fait..
Merci d'avance.
Voici mon petit code:
Code Java : 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 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); } }
Partager