Hallöchen liebe Java-Freunde.
Ich hab ja schon durchblicken lassen, dass ich mich mal öfter melden werden.
Folgendes. Ich wollte ein eigenes Object erstellen, ein Hexagon in 3D.
Nun hab ich mir eine Shape3D-Klasse geschrieben, die mir im Konstruktor ein Shape3D Object erstellt mit den gewünschten Werten.
In einer anderen Klasse will ich nun dieses Object aufrufen und anzeigen lassen.
Das Problem ist aber, das einzelne Flächen nicht angezeigt werden und das Hexagon in 3D nun viele 3-Eckige Löcher hat. Wie kann das sein?
Hier erst mal mein Code
Wenn ich das Object drehbar mache, fällt auch auf, dass die Flächen zwar angezeigt werden, aber eben nicht deren Rückseiten.
Im Übrigen, wird das Object komplett in weiß angezeigt, trotz anderer Lichtobjekte. Eigentlich dachte ich mit Hilfe der GeometryInfo hätte ich das Problem gelöst, aber irgendwie... wohl nicht.
Weiß jemand Rat?
Vielen Dank schon mal, Euer Chiller
Ich hab ja schon durchblicken lassen, dass ich mich mal öfter melden werden.
Folgendes. Ich wollte ein eigenes Object erstellen, ein Hexagon in 3D.
Nun hab ich mir eine Shape3D-Klasse geschrieben, die mir im Konstruktor ein Shape3D Object erstellt mit den gewünschten Werten.
In einer anderen Klasse will ich nun dieses Object aufrufen und anzeigen lassen.
Das Problem ist aber, das einzelne Flächen nicht angezeigt werden und das Hexagon in 3D nun viele 3-Eckige Löcher hat. Wie kann das sein?
Hier erst mal mein Code
Java:
public class Tile {
private Shape3D S3D;
public Tile(){
S3D = new Shape3D();
Point3f[] CoordArr = new Point3f[12];
int[] Vind = new int[60];
GeometryInfo GInfo;
NormalGenerator NormGen = new NormalGenerator();
Stripifier GStrip = new Stripifier();
/*** Coordinates ***/
//first lvl plane
CoordArr[0] = new Point3f(0.5f,0f,0f);
CoordArr[1] = new Point3f(1.5f,0f,0f);
CoordArr[2] = new Point3f(2f,0f,0.5f);
CoordArr[3] = new Point3f(1.5f,0f,1f);
CoordArr[4] = new Point3f(0.5f,0f,1f);
CoordArr[5] = new Point3f(0f,0f,0.5f);
//second lvl plane
CoordArr[6] = new Point3f(0.5f,0.25f,0f);
CoordArr[7] = new Point3f(1.5f,0.25f,0f);
CoordArr[8] = new Point3f(2f,0.25f,0.5f);
CoordArr[9] = new Point3f(1.5f,0.25f,1f);
CoordArr[10] = new Point3f(0.5f,0.25f,1f);
CoordArr[11] = new Point3f(0f,0.25f,0.5f);
/*** Planes ***/
//ground lvl
Vind[0] = 0; Vind[1] = 1; Vind[2] = 4;
Vind[3] = 1; Vind[4] = 3; Vind[5] = 4;
Vind[6] = 0; Vind[7] = 4; Vind[8] = 5;
Vind[9] = 1; Vind[10] = 2; Vind[11] = 3;
//top lvl
Vind[12] = 6; Vind[13] = 7; Vind[14] = 10;
Vind[15] = 7; Vind[16] = 9; Vind[17] = 10;
Vind[18] = 6; Vind[19] = 10; Vind[20] = 11;
Vind[21] = 7; Vind[22] = 8; Vind[23] = 9;
//planes
Vind[24] = 0; Vind[25] = 5; Vind[26] = 11;
Vind[27] = 0; Vind[28] = 11; Vind[29] = 6;
Vind[30] = 1; Vind[31] = 0; Vind[32] = 6;
Vind[33] = 1; Vind[34] = 7; Vind[35] = 6;
Vind[36] = 2; Vind[37] = 1; Vind[38] = 7;
Vind[39] = 2; Vind[40] = 8; Vind[41] = 7;
Vind[42] = 3; Vind[43] = 2; Vind[44] = 8;
Vind[45] = 3; Vind[46] = 9; Vind[47] = 8;
Vind[48] = 4; Vind[49] = 3; Vind[50] = 9;
Vind[51] = 4; Vind[52] = 10; Vind[53] = 9;
Vind[54] = 5; Vind[55] = 4; Vind[56] = 10;
Vind[57] = 5; Vind[58] = 11; Vind[59] = 10;
GInfo = new GeometryInfo(GeometryInfo.TRIANGLE_ARRAY);
GInfo.setCoordinates( CoordArr );
GInfo.setCoordinateIndices( Vind );
GInfo.compact();
NormGen.generateNormals( GInfo );
GStrip.stripify( GInfo );
S3D.addGeometry( GInfo.getGeometryArray() );
}
public Shape3D getTile(){
return S3D;
}
}
Wenn ich das Object drehbar mache, fällt auch auf, dass die Flächen zwar angezeigt werden, aber eben nicht deren Rückseiten.
Im Übrigen, wird das Object komplett in weiß angezeigt, trotz anderer Lichtobjekte. Eigentlich dachte ich mit Hilfe der GeometryInfo hätte ich das Problem gelöst, aber irgendwie... wohl nicht.
Weiß jemand Rat?
Vielen Dank schon mal, Euer Chiller