firmadankt
Mitglied
Hallo zusammen,
ich möchte einen java3D Szene in ein BufferedImage zeichnen. Es soll offscreen passieren, d.h. ich möchte das Canvas3D nicht in meine Swing, bzw. AWT-Hierarchy einhängen.
Meine ersten Gehversuche sehen wie folgt aus:
// g wird mit BufferedImage.createGraphics() erstellt
Das Resultat ist ein leeres (schwarzes Image).
Danke schon mal im Voraus für eure Anregungen.
ich möchte einen java3D Szene in ein BufferedImage zeichnen. Es soll offscreen passieren, d.h. ich möchte das Canvas3D nicht in meine Swing, bzw. AWT-Hierarchy einhängen.
Meine ersten Gehversuche sehen wie folgt aus:
// g wird mit BufferedImage.createGraphics() erstellt
Code:
public void render(Graphics2D g) {
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
BufferedImage bImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
Canvas3D canvas3D = new Canvas3D(config, true);
initScene(canvas3D); // initScene erstellt einen Szenegraphen, der onscrren auch correct gerendert wird (wurde aus den java3d-Examples übernommen)
// folgende Parameter wurden von dem onscreen canvas3D übernommen,
// aber ich bin mir nicht sicher ob das alles so stimmt
canvas3D.setSize(200, 200);
Screen3D sOff = canvas3D.getScreen3D();
sOff.setSize(400, 400);
sOff.setPhysicalScreenWidth(0.5418666666666667);
sOff.setPhysicalScreenHeight(0.33866666666666667);
ImageComponent2D buffer = new
ImageComponent2D(ImageComponent.FORMAT_RGB, bImage);
buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
canvas3D.setOffScreenBuffer(buffer);
canvas3D.renderOffScreenBuffer();
canvas3D.waitForOffScreenRendering();
g.drawImage(bImage, 0, 0, null);
}
Das Resultat ist ein leeres (schwarzes Image).
Danke schon mal im Voraus für eure Anregungen.