public BufferedImage produceImage(final BCanvas3D _init) {
initDimensions(_init);
printing_ = true;
BufferedImage img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
final ImageComponent2D buffer = new ImageComponent2D(ImageComponent.FORMAT_RGB, img);
final Raster printRaster = new Raster(new Point3f(0.0f, 0.0f, 0.0f), Raster.RASTER_COLOR, 0, 0, img.getWidth(), img
.getHeight(), buffer, null);
img = printRaster.getImage().getImage();
buffer.setCapability(ImageComponent.ALLOW_IMAGE_READ);
this.setOffScreenBuffer(buffer);
renderOffScreenBuffer();
waitForOffScreenRendering();
img.flush();
return getOffScreenBuffer().getImage();
}