Salut pour tout le monde
Je voudrais effectuer une animation qui consiste en l'apparition
d'objets(exemple sphere) dans des positions en fonction du nombre de
ces objets.
Voila mon code mais il me montre l'exception RestrictedAccessException
public class NewJFrame extends javax.swing.JFrame {
GraphicsConfiguration config;
Canvas3D canvas;
Canvas3D canvas1;
SimpleUniverse universe;
SimpleUniverse universe1;
Appearance ap;
BranchGroup scene;
Scenario scenario;
int delais=1000;
ActionListener tache_timer;
int seconde=0;
Timer timer1;
BranchGroup scene1=new BranchGroup();
TransformGroup transGrp=null;
Transform3D t3d=null;
int incr=0;
float x=-0.65f;//-0.5;
float y=0.33f;
BoundingSphere bounds = new BoundingSphere(new Point3d(0f,0f,0f),100.0);
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
config =SimpleUniverse.getPreferredConfiguration();
canvas= new Canvas3D(config);
canvas1= new Canvas3D(config);
universe = new SimpleUniverse(canvas);
pnlSyn3D.add("Center",canvas );
scene = createSceneGraph();
tache_timer= new ActionListener()
{
public void actionPerformed(ActionEvent e1)
{
seconde++;
//canvas.repaint();
if(seconde==2)
{
Vector3f vec=new Vector3f(x,y,0);
t3d=new Transform3D();
t3d.setTranslation( vec );
transGrp = new TransformGroup( t3d );
Sphere sphere=new Sphere(0.28f,1,40,ap);
transGrp.addChild(sphere);
scene.addChild(transGrp);
transGrp.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
transGrp.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
transGrp.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
PickRotateBehavior behavior1 = new PickRotateBehavior(scene, canvas,
bounds);
behavior1.setSchedulingBounds(bounds);
transGrp.addChild(behavior1);
PickZoomBehavior behavior2 = new PickZoomBehavior(scene, canvas,
bounds);
behavior2.setSchedulingBounds(bounds);
transGrp.addChild(behavior2);
PickTranslateBehavior behavior3 = new PickTranslateBehavior(scene,
canvas, bounds);
transGrp.addChild(behavior3);
x+=0.65f;
incr++;
if(incr==3)
{
x=-0.65f;
y+=-0.66f;
}
//pnlSyn3D.updateUI();
System.out.println("Le temp de Tmes");
seconde+=57;
universe.getViewingPlatform().setNominalViewingTransform();
}
universe.addBranchGraph( scene);
if(seconde==60)
{
seconde=0;
}
if(incr==6)
{
//universe.getViewingPlatform().setNominalViewingTransform();
//scene.compile();
timer1.stop();
System.out.println("Timer stopped");
}
System.out.println(Integer.toString(seconde));/* rafraichir le label */
}
};
timer1= new Timer(delais,tache_timer);
//scene = new BranchGroup( );
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents()
{
pnlSyn3D = new javax.swing.JPanel();
jButton2 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
pnlSyn3D.setLayout(new java.awt.BorderLayout());
jButton2.setText("Construire");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
pnlSyn3D.add(jButton2, java.awt.BorderLayout.SOUTH);
getContentPane().add(pnlSyn3D, java.awt.BorderLayout.CENTER);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-640)/2, (screenSize.height-490)/2, 640, 490);
}
private void
formWindowOpened(java.awt.event.WindowEvent evt)
{
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
if((screenSize.getWidth()==1280)&&(screenSize.getHeight()==1024))
this.setSize(640,490);
else
if((screenSize.getWidth()==1280)&&(screenSize.getHeight()==1024))
this.setSize(512,348);
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
timer1.start();
}
void preparerScene2()
{
//scene = createSceneGraph();
/*canvas.repaint();
universe.cleanup();*/
/*float x=-0.65f;//-0.5;
float y=0.33f;
for ( int j = 0; j <6; j++ )
{
Vector3f vec=new Vector3f(x,y,0);
Transform3D t3d=new Transform3D();
t3d.setTranslation( vec );
transGrp = new TransformGroup( t3d );
scene.addChild(transGrp);
transGrp.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
transGrp.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
transGrp.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
cylindre=new Cylinder(0.4f,0.8f,1,ap);
sphere=new Sphere(0.28f,1,40,ap);
transGrp.addChild(sphere);
System.out.println("Nombre de sommets "+sphere.getNumVertices());
System.out.println("Nombre de triangles "+sphere.getNumTriangles());
t3d.rotZ(0);
x+=0.65f;
if(j==2)
{
x=-0.65f;
y+=-0.66f;
}
}*/
//pnlSyn3D.updateUI();
///universe = new SimpleUniverse(this.canvas);
/************** Fin Construction de l'objet désiré *************/
//universe.getViewingPlatform().setNominalViewingTransform();
/* when compiling a branch we optimize it for faster rendering */
///scene.compile();
/* add the branch graph to the universe */
//universe.addBranchGraph( scene );
}
Dimension getpnlSyn3D_Dim()
{
Dimension dim=new Dimension();
float pnlSyn3D_Width=(float)this.getSize().getWidth();
float pnlSyn3D_Height=(float)this.getSize().getHeight();
System.out.println("La largeur de l'espace de simulation est : "+pnlSyn3D_Width);
System.out.println("La hauteur de l'espace de simulation est : "+pnlSyn3D_Height);
dim.setSize(pnlSyn3D_Width, pnlSyn3D_Height);
return(dim);
}
BranchGroup createSceneGraph()
{
BranchGroup scene=new BranchGroup();
//creation de l'apparence
ap=createAppearance();
BoundingSphere bounds = new BoundingSphere(new Point3d(0f,0f,0f),100.0);
//Transform3D t3d=new Transform3D();
Color3f dir_Lg1_Color = new Color3f(5f, 1f, 4f);
Vector3f d_dir_Lg1 = new Vector3f(3f, 5f, 0.9f);
Color3f amb_Lg1_Color = new Color3f(2f, 1f, 2f);
AmbientLight amb_Lg1 = new AmbientLight(amb_Lg1_Color);
DirectionalLight dir_Lg1 = new DirectionalLight(dir_Lg1_Color, d_dir_Lg1);
Material mat =new Material();
amb_Lg1.setInfluencingBounds(bounds);
dir_Lg1.setInfluencingBounds(bounds);
ap=createAppearance();
scene.addChild(dir_Lg1);
scene.addChild(amb_Lg1);
return(scene);
}
Appearance createAppearance()
{
Material mat =new Material();
ColoringAttributes colorAtt=new ColoringAttributes();
//Le modele d'ombrage sera recperé de la variable globale "ombrage"
colorAtt.setShadeModel(ColoringAttributes.SHADE_GOURAUD);
mat.setCapability(Material.ALLOW_COMPONENT_WRITE);
/* Definir les attributs RGB de la couleur de diffusion
* floatValue() car les valeurs seront prisent dans des
* zones de textes dans le futur */
float r= new Float("4").floatValue();
float v= new Float("0.4").floatValue();
float b= new Float("0.4").floatValue();
mat.setDiffuseColor(r,v,b);
mat.setEmissiveColor(r,v,b);
ap=new Appearance();
ap.setMaterial(mat);
ap.setColoringAttributes(colorAtt);
return(ap);
}
String path()
{
String file=new File("").getAbsolutePath()+"\\";
//String chemin=file.substring(0,file.indexOf("Simulateur3D"))+"Simulateur3D\\";
return(file);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not
modify
private javax.swing.JButton jButton2;
private javax.swing.JPanel pnlSyn3D;
// End of variables
declaration
}
Y'a t'il quelqu'un qui peut m'aider svp c'est urgent.