Posted by
mark h on
Jun 24, 2014; 9:51am
URL: https://forum.jogamp.org/STLLoader-tp4032481.html
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:
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);
}