Bonjour,

Je m'initie doucement à l'API 3D de java et j'ai d'hors et déjà un soucis !

Je voulais faire un tube avec l'objet TriangleStripArray et je ne sais pas pourquoi mais il ne termine pas celui-ci... En gros il manque un morceau du tube... Et le pire c'est que je ne vois pas du tout mon erreur...

Comme dit l'autre une image vaut mieux qu'un long discours...



Et voici ma classe :

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
49
50
 
 
public class TriangleStripArray3D extends Shape3D
	{
		public TriangleStripArray3D(int nbrePts, float hauteur)
		{
			//Définition du nombre de point par bande
			int nbrePtBde[] = new int[1];
 
 
				nbrePtBde[0] = nbrePts*2;
 
			Point3f pts[] = new Point3f[(nbrePts * 2)+2];
			Color3f couleur[] = new Color3f[(nbrePts * 2)+2];
			Color3f color[] = {new Color3f(0.5f, 0.15f, 0.15f),
                                                new Color3f(0.15f, 0.5f, 0.15f),
                                                new Color3f(0.15f, 0.15f, 0.5f)};
 
				float h0 =  hauteur; 
				float h1 = 2*hauteur;
				for(int j = 0; j <= nbrePts; j++)
				{					
 
					if (j == nbrePts)
					{
					   pts[2*j] = new Point3f(0.1f * (float)Math.cos(0), h0, 0.1f * (float)Math.sin(0));
					   pts[(2*j)+1] = new Point3f(0.1f * (float)Math.cos(0), h1, 0.1f * (float)Math.sin(0));
 
						couleur[2*j] = new Color3f(Color.RED); 
						couleur[(2*j)+1] = new Color3f(Color.GREEN);
					}
					else
					{
						pts[2*j] = new Point3f(0.1f * (float)Math.cos(Math.PI * 2 * j / nbrePts), h0,	0.1f * (float)Math.sin(Math.PI * 2 * j / nbrePts));
						pts[(2*j)+1] = new Point3f(0.1f * (float)Math.cos(Math.PI * 2 * j / nbrePts), h1, 0.1f * (float)Math.sin(Math.PI * 2 * j / nbrePts));
 
						couleur[2*j] = new Color3f(Color.RED); 
						couleur[(2*j)+1] = new Color3f(Color.GREEN);
					}
				}	
 
			TriangleStripArray tsa = new TriangleStripArray((nbrePts * 2)+2,TriangleStripArray.COORDINATES|TriangleStripArray.COLOR_3|	TriangleStripArray.TEXTURE_COORDINATE_2,
nbrePtBde);
			tsa.setCoordinates(0, pts);
			tsa.setColors(0, couleur);
 
			this.setGeometry(tsa);
 
		}
	}
Et je l'utilise comme suit dans la méthode me retournant l'arbre de ma scene

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
 
Transform3D translateStrip = new Transform3D();
		translateStrip.setTranslation(new Vector3f(-0.8f, -0.4f, 0.0f));
		Transform3D rotxStrip = new Transform3D();
		rotxStrip.rotX(Math.PI/4);
		Transform3D rotzStrip = new Transform3D();
		rotzStrip.rotZ(-Math.PI/16);
		Transform3D rotyStrip = new Transform3D();
		rotyStrip.rotY(-Math.PI/4);
 
		translateStrip.mul(rotzStrip);
		translateStrip.mul(rotxStrip);
		translateStrip.mul(rotyStrip);
 
		Appearance app = new Appearance();
		polygon = new PolygonAttributes(PolygonAttributes.POLYGON_FILL,
										PolygonAttributes.CULL_NONE,
										0);
		app.setPolygonAttributes(polygon);
 
		TransformGroup transformStrip = new TransformGroup(translateStrip);
		Shape3D shape = new TriangleStripArray3D(72, 0.2f);
		shape.setAppearance(app);
		transformStrip.addChild(shape);
                .......
                ......
                parent.addChild(transformStrip);
Merci d'avance pour vos réponses !