2D Grafiken auf Canvas3D

Status
Nicht offen für weitere Antworten.
B

Baerbel

Gast
Hallo,

verzweifelt wende ich mich mit meinem Problem an die Experten.
Ich würder gern auf meinem Canvas3D 2D Grafikobjekte darstellen. Allerdings zeigt das Canvas partou nur 3 Objekte an. Ich habe versucht die postrender/postswap Methoden per anonymer Klassendeklaration unterzujubeln. Nun habe ich wie überall beschrieben eine eigene Klasse von Canvas3d abgeleitet und die entsprechenden Methoden überschrieben. Bisher ohne Erfolg.
Unten aufgeführte Methode war der letzte Versuch zunächst irgendetwas auf die Oberfläche zu zimmern. Nix!
Die Methode wird brav abgearbeitet und leifert auch keine Exceptions.
Code:
public void postRender() {
       
       J3DGraphics2D gfx = getGraphics2D();
       
       for (int x=0;x<this.getWidth();x+=5)
           for (int y=0;y<this.getHeight();y+=5){
               gfx.setColor(new Color((float) Math.random(),(float) Math.random(),(float) Math.random()));
               gfx.drawLine(x,0,0,y);
           }
       
       gfx.flush(true);
   }

Gibt es irgendeine Einstellung die ein Zeichnen in 2D verhindert bzw. freischaltet?

Innerhalb des Frames wird Canvas3D folgendermaßen aufgerufen:
Code:
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        canvas3DTop = new TTSCanvas(config); //Eigene von Canvas3D abgeleitete Klasse
        BranchGroup sceneTop = createTopSceneGraph();
        sceneTop.compile();
        SimpleUniverse simpleUTop = new SimpleUniverse(canvas3DTop);
        simpleUTop.getViewingPlatform().setNominalViewingTransform();
        simpleUTop.addBranchGraph(sceneTop);
        canvas3DTop.setSize(500,300);
        canvas3DTop.setDoubleBufferEnable(true);
        canvas3DTop.addMouseListener(new
                                     canvas3DTop_mouseAdapter(this));
        jSubSplitPane.add(canvas3DTop, JSplitPane.TOP);

Gruß und Dank
Kai
 

Marco13

Top Contributor
Ohne es getestet zu haben: Ein spontaner Gedanke wäre, die paint-Methode zu überschreiben
Code:
class X extends Canvas3D
{
    public void paint(Graphics g)
    {
        super.paint(g);
        g.drawLine(100,200,300,400);
    }
}
Aber das wäre wohl schon ein kleiner Hack, und ob das funktioniert, müsste man ausprobieren - bei Java3D wird ziemlich viel getrickst (Ich hab' mir mal den Code angesehen ... *schauder* ...)
 

kaie

Bekanntes Mitglied
Bei mir funktioniert's mit den folgenden Änderungen:
Code:
public void postRender() {
       super.postRender();
       J3DGraphics2D gfx = getGraphics2D();
       
       for (int x=0;x<this.getWidth();x+=5)
           for (int y=0;y<this.getHeight();y+=5){
               gfx.setColor(new Color((float) Math.random(),(float) Math.random(),(float) Math.random()));
               gfx.drawLine(x,0,0,y);
           }
       
       gfx.flush(false);
   }
 
B

Baerbel

Gast
Bei mir funktioniert weder die eine noch die andere Variante.
@kaie: Wie wird denn bei dir das Canvas3D erstellt und initialisiert?

Gruß
Kai
 

kaie

Bekanntes Mitglied
Hier ein Ausschnitt aus meiner 3D-Klasse. Eigentlich sollte alles Wesentliche da drinstehen. Ich verwende die postRender-Methode, um das "Cockpit" eines Autos über die 3D-Ansicht zu zeichnen. Funktioniert bei mir auch tadellos. Falls es bei Dir nicht klappen sollte, würde ich auf Probleme mit der Grafikkarte, dem Grafiktreiber oder der Java3D-Version (OpenGL/DirectX?) tippen.
Code:
public class Ansicht3D
{
    public BranchGroup world;
    public Ansicht3D(Netz netz)
    {
        super(SimpleUniverse.getPreferredConfiguration());

        SimpleUniverse uni = new SimpleUniverse(this);
        uni.getViewingPlatform().setNominalViewingTransform();
        uni.getViewingPlatform().getViewPlatform().setActivationRadius(10000);

        world = new BranchGroup();
        world.setCapability(Group.ALLOW_CHILDREN_EXTEND);
        world.setCapability(Group.ALLOW_CHILDREN_WRITE);
        world.setCapability(Group.ALLOW_CHILDREN_READ);

        // Ansicht setzen
        TransformGroup viewTrans = uni.getViewingPlatform().getViewPlatformTransform();
        Transform3D v = new Transform3D();
        v.lookAt(new Point3d(-100, 25, 1000), new Point3d(0, 0, 0),
                new Vector3d(0, 0, 1));
        v.invert();
        viewTrans.setTransform(v);

        world.compile();
        uni.addBranchGraph(world);

        getView().setTransparencySortingPolicy(View.TRANSPARENCY_SORT_GEOMETRY);
        getView().setBackClipDistance(10000);
        getView().setSceneAntialiasingEnable(true);
    }

    public void postRender()
    {
        super.postRender();
        J3DGraphics2D g2 = getGraphics2D();
        // zeichnen
        g2.flush(false);
    }
}
 
B

Baerbel

Gast
Hallo,

es lag am OpenGL-Treiber. Habe das Programm mit der Option D3D ausgeführt und schon liefs.

Vielen Dank
mfG
Kai
 

just4fun

Mitglied
Hallo, ich hab dazu ne Frage:
Bei mir geht das super.postRender(); nicht.
- Muss man für super.postRender(); etwas importieren?
- Liegt es daran, dass ich 'extends Applet' eingebaut habe?

Danke vielmals,
Finn
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Grafiken zuordnen Spiele- und Multimedia-Programmierung 4
E Woher bekommt man seine Grafiken??? Spiele- und Multimedia-Programmierung 3
P Java Grafiken mit Rechnungen verknüpfen Spiele- und Multimedia-Programmierung 4
Androbin Grafiken in JAR einbinden Spiele- und Multimedia-Programmierung 3
G 3D-Objekte / Grafiken gesucht Spiele- und Multimedia-Programmierung 6
T Grafiken übereinanderlegen Spiele- und Multimedia-Programmierung 2
T PNG-Grafiken verwenden Spiele- und Multimedia-Programmierung 9
M Prinzipielle Frage: Kann Java Grafiken ausschneiden? Spiele- und Multimedia-Programmierung 3
V Frage zu Grafiken und Software! Spiele- und Multimedia-Programmierung 5
V Ein oder mehrere GIF-Grafiken zusammenfügen Spiele- und Multimedia-Programmierung 3
G Grafiken mit Java im richtigen Format drucken Spiele- und Multimedia-Programmierung 3
B Pokerspiel: Problem mit Grafiken und Buttons Spiele- und Multimedia-Programmierung 3
M Abrunden der Ecken von Grafiken Spiele- und Multimedia-Programmierung 10
M Seltsames Flackern bei Laden von Grafiken Spiele- und Multimedia-Programmierung 4
K Grafiken mit Listener verbinden? Spiele- und Multimedia-Programmierung 10
Developer_X JLabels über Canvas3D Spiele- und Multimedia-Programmierung 2
D Canvas3D vom JFrame entfernen Spiele- und Multimedia-Programmierung 2
M Canvas3D und setXORMode und Vista Spiele- und Multimedia-Programmierung 4
S Inhalt von Canvas3D als jpg - File speichern Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen


Oben