Hi,
ich habe eine Klasse "Triangle" (an derer statt ich wohl auch "IndexedTriangleArray" hätte verwenden können:
In einer anderen Klasse versuche ich mit folgendem Teil-Code, ein Objekt von "Triangle" zu erzeugen
und in meinen Szenengraphen einzufügen:
Dabei erhalte ich immer folgenden Fehler:
Die ersten beiden im Fehler genannten Zeilen sind der Super-Aufruf in Triangle
und der Triangle-Konstruktor-Aufruf in der anderen Klasse.
Eine ClassCastException bedeutet ja, dass man ein "nicht typkompatibles" Casting versucht hat, aber ich weiss nicht,
wo ich das hier getan haben soll. Ich weiss auch nicht recht, was es mit den beiden in der Meldung genannten
"...Retained" -Klassen auf sich hat. Kann das mit dem Rendering-Modus in Java3D zusammenhängen?
Wäre für Hilfe dankbar..
Gruß,
Stefan
ich habe eine Klasse "Triangle" (an derer statt ich wohl auch "IndexedTriangleArray" hätte verwenden können:
Java:
import javax.media.j3d.IndexedGeometryArray;
import javax.vecmath.Color3f;
import javax.vecmath.Point3f;
/**
*
*
*/
public class Triangle extends IndexedGeometryArray{
public Triangle(Point3f[]vertices, int vInd1, int vInd2, int vInd3, int vInd4,Color3f c){
super(vertices.length, COORDINATES| NORMALS| COLOR_3,4);
}
}
In einer anderen Klasse versuche ich mit folgendem Teil-Code, ein Objekt von "Triangle" zu erzeugen
und in meinen Szenengraphen einzufügen:
Java:
Point3f[] vertices = new Point3f[3];
vertices[0] = new Point3f(0, 0, 0);
vertices[1] = new Point3f(2, 0, 0);
vertices[2] = new Point3f(1, 2, 0);
int[] indices = {0, 1, 2, 0};
TransformGroup TriTG = new TransformGroup();
Triangle triangle;
Color3f color = new Color3f();
triangle = new Triangle(vertices, 0, 1, 2,3, color);
triangle.setCoordinateIndices(0,indices);
Shape3D shapeTri = new Shape3D(triangle);
TriTG.addChild(shapeTri);
contents.addChild(TriTG);
Dabei erhalte ich immer folgenden Fehler:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.media.j3d.NodeComponentRetained cannot be cast to javax.media.j3d.GeometryArrayRetained
at javax.media.j3d.GeometryArray.<init>(GeometryArray.java:873)
at javax.media.j3d.GeometryArray.<init>(GeometryArray.java:611)
at javax.media.j3d.GeometryArray.<init>(GeometryArray.java:466)
at javax.media.j3d.IndexedGeometryArray.<init>(IndexedGeometryArray.java:168)
at Fachwerte.Triangle.<init>(Triangle.java:17)
at GUI.MyCanvasPanel.<init>(MyCanvasPanel.java:90)
at GUI.MainDisplayUI.initComponents(MainDisplayUI.java:54)
Die ersten beiden im Fehler genannten Zeilen sind der Super-Aufruf in Triangle
und der Triangle-Konstruktor-Aufruf in der anderen Klasse.
Eine ClassCastException bedeutet ja, dass man ein "nicht typkompatibles" Casting versucht hat, aber ich weiss nicht,
wo ich das hier getan haben soll. Ich weiss auch nicht recht, was es mit den beiden in der Meldung genannten
"...Retained" -Klassen auf sich hat. Kann das mit dem Rendering-Modus in Java3D zusammenhängen?
Wäre für Hilfe dankbar..
Gruß,
Stefan
Zuletzt bearbeitet von einem Moderator: