Hallo Leute,
ich mache gerade meine ersten Schritte mit Java3D und habe viele Beispiele und Tutorials gelesen und ausprobiert. Allen gemein ist der Ansatz, daß sie eine 3D-Welt aufbauen und diese über verschiedene Methoden im Nachhinein modifizieren.
Mein Thema ist die Visualisierung von Datensätzen (ich stelle mir ein halbtransparentes, mehrschichtiges Modell meiner Daten aus verschiedenen Gitternetzebenen vor, eingefärbt je nach Höhe). In 2D habe ich bisher beim Eintreffen eines neuen Datensatzes den alten verworfen und auf einem abgeleiteten JPanel neu gezeichnet.
Mit Java3D habe ich jetzt ebenfalls zunächst einmal Testdaten in einem abgeleiteten JPanel dargestellt. Wenn nun ein neuer Datensatz eintrifft - wo genau muß ich hinfassen, um meine Szene neu aufzubauen? Wie kann ich die entsprechenden alten Elemente löschen? Wo muß ich ansetzen?
Hier ein kurzes Beispiel:
Vielen Dank für Eure Hilfe im Voraus
Thoralt
ich mache gerade meine ersten Schritte mit Java3D und habe viele Beispiele und Tutorials gelesen und ausprobiert. Allen gemein ist der Ansatz, daß sie eine 3D-Welt aufbauen und diese über verschiedene Methoden im Nachhinein modifizieren.
Mein Thema ist die Visualisierung von Datensätzen (ich stelle mir ein halbtransparentes, mehrschichtiges Modell meiner Daten aus verschiedenen Gitternetzebenen vor, eingefärbt je nach Höhe). In 2D habe ich bisher beim Eintreffen eines neuen Datensatzes den alten verworfen und auf einem abgeleiteten JPanel neu gezeichnet.
Mit Java3D habe ich jetzt ebenfalls zunächst einmal Testdaten in einem abgeleiteten JPanel dargestellt. Wenn nun ein neuer Datensatz eintrifft - wo genau muß ich hinfassen, um meine Szene neu aufzubauen? Wie kann ich die entsprechenden alten Elemente löschen? Wo muß ich ansetzen?
Hier ein kurzes Beispiel:
Code:
public class J3DPanel extends JPanel
{
private static final long serialVersionUID = 1L;
public J3DPanel()
{
setLayout(new BorderLayout());
Canvas3D c3d = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
SimpleUniverse simpleU = new SimpleUniverse(c3d);
BranchGroup bg = new BranchGroup();
bg.addChild(createGraph());
bg.compile();
OrbitBehavior orbit = new OrbitBehavior(c3d, OrbitBehavior.REVERSE_ALL);
orbit.setSchedulingBounds(new BoundingSphere());
simpleU.getViewingPlatform().setViewPlatformBehavior(orbit);
simpleU.getViewingPlatform().setNominalViewingTransform();
bg.compile();
simpleU.addBranchGraph(bg);
this.add(c3d);
}
Shape3D createGraph()
{
int NUM_TRIANGLES = 2;
int NUM_POINTS = NUM_TRIANGLES * 3;
TriangleArray ta;
Point3f coords[] = new Point3f[NUM_POINTS];
Color3f colors[] = new Color3f[NUM_POINTS];
coords[0] = new Point3f(0.0f, 0.0f, 0.0f);
coords[1] = new Point3f(0.5f, 0.0f, 0.0f);
coords[2] = new Point3f(0.5f, 0.5f, 0.0f);
coords[3] = new Point3f(-1.0f, 0.0f, -0.2f);
coords[4] = new Point3f(-1.0f, -1.0f, -0.2f);
coords[5] = new Point3f(1.5f, 1.5f, -0.2f);
colors[0] = new Color3f(1.0f, 0.0f, 0.0f);
colors[1] = new Color3f(1.0f, 1.0f, 0.0f);
colors[2] = new Color3f(1.0f, 1.0f, 1.0f);
colors[3] = new Color3f(1.0f, 0.0f, 0.0f);
colors[4] = new Color3f(1.0f, 0.0f, 1.0f);
colors[5] = new Color3f(1.0f, 0.0f, 1.0f);
ta =
new TriangleArray(NUM_TRIANGLES * 3, TriangleArray.COORDINATES
| TriangleArray.COLOR_3);
ta.setCoordinates(0, coords);
ta.setColors(0, colors);
Appearance ap = new Appearance();
ap.setTransparencyAttributes(new TransparencyAttributes(
TransparencyAttributes.NICEST, 0.5f));
Shape3D myShape = new Shape3D(ta);
myShape.setAppearance(ap);
return myShape;
}
}
Vielen Dank für Eure Hilfe im Voraus
Thoralt