1
嗨,我嘗試着將http://www.java2s.com/Code/Java/3D/OffScreenTest.htm改編成一個簡單的測試,它將渲染一個彩色立方體文件。將Canvas3D寫入文件
但是我的img.png只包含黑色,程序從不退出。需要
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.ImageComponent;
import javax.media.j3d.ImageComponent2D;
import javax.media.j3d.Screen3D;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class HelloJava3Db {
public static void main(String[] args) {
// create canvas
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config, true);
// create universe
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
// create scene
BranchGroup scene = new BranchGroup();
scene.addChild(new ColorCube(0.4));
scene.compile();
simpleU.addBranchGraph(scene);
// set off screen size
Screen3D sOff = canvas3D.getScreen3D();
sOff.setSize(new Dimension(200, 200));
sOff.setPhysicalScreenWidth(200);
sOff.setPhysicalScreenHeight(200);
// render to off screen
BufferedImage bImage = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB);
ImageComponent2D buffer = new ImageComponent2D(ImageComponent.FORMAT_RGBA, bImage);
buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
canvas3D.setOffScreenBuffer(buffer);
canvas3D.renderOffScreenBuffer();
canvas3D.waitForOffScreenRendering();
// write to file
File output = new File("img.png");
try {
ImageIO.write(bImage, "png", output);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(output.getAbsolutePath());
simpleU.cleanup();
}
}
感謝您發佈您的調查結果。我們將檢查java3d中的官方示例,例如Github上的離線渲染示例。我希望你使用最新版本的Java3D,而不是Oracle提供的廢棄版本。 – gouessej
我正在使用1.5.1,1.6.1似乎處於測試狀態? – wutzebaer
沒有稱爲「1.6.1」的版本。有一個名爲1.6.0-pre12的版本。版本1.5.1是Oracle/Sun Microsystems的最後一個版本。版本1.5.2由社區提供。版本1.6.0是唯一維護的版本(由JogAmp社區提供)。 1.7版包含一些重大更改,一些軟件包已重新命名,並且主要貢獻者將添加OpenGL-ES支持。你可以在這裏找到關於安裝的一些信息:http://jogamp.org/wiki/index.php/Downloading_and_installing_Java3D http://jogamp.org/wiki/index.php/Java3D_Overview – gouessej