Bonjour à tous,
J'aimerai faire une chose toute simple, c'est pouvoir supprimer un objet de ma scène même si celle-ci à été compilé ou si elle est "alive".

Voici mon code tout simple (stricte minimum) :

Code : 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
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
 
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.swing.JFrame;
 
import java.awt.GraphicsConfiguration;
import java.awt.BorderLayout;
 
public class Win extends JFrame {
 
	public ColorCube c1 = new ColorCube(0.3);
	public ColorCube c2 = new ColorCube(0.4);
	public Canvas3D  canvas;
	public BranchGroup contents;
 
	public Win()
	{
		setLayout(new BorderLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
		GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
		canvas = new Canvas3D(config);
 
		add("Center", canvas);
 
		BranchGroup contents = new BranchGroup();
 
		contents.addChild(c1);
		contents.addChild(c2);
		contents.compile();
 
		SimpleUniverse universe = new SimpleUniverse(canvas);
		universe.getViewingPlatform().setNominalViewingTransform();
		universe.addBranchGraph(contents);
 
		contents.removeChild(1);
	}
 
	public static void main(String[] args)
	{
		Win demo = new Win();
		demo.setSize(400,400);
		demo.setVisible(true);
	}
 
}
On peut voir que je crée deux cube que j'attache à mon BranchGroup.
Une fois le bg attaché à l'univers, j'essaie de supprimer un des cubes mais j'ai droit à une belle erreur javax.media.j3d.RestrictedAccessException: Group: only a BranchGroup node may be removed

Y a-t-il un moyen simple de faire ce que je désire ?

Merci