0

我一直在尝试使用Java3D 1.5.2使屏幕外渲染正常工作。在我的源代码中,我一直在尝试附加一个扩展Canvas3D,它将进行屏幕外渲染SimpleUniverse,但这样做会破坏渲染:

62.  // FOR SOME REASON THIS BREAKS RENDERING
63.  universe.getViewer().getView().addCanvas3D(canvas);

完整的源代码有点太大,无法粘贴到 StackOverflow 上,所以我通过 Pastie 在这里提供了它。

第 63 行已被注释掉,并让普通的 Canvas3D 进行屏幕渲染。它将渲染一个立方体并将其显示在JFrame. 但是,如果您删除评论,屏幕外渲染将导致屏幕上的内容无法渲染。此外,屏幕外渲染将返回 "big black nothing" BufferedImage

我想知道如何使屏幕外渲染工作,即将旋转立方体的场景渲染为缓冲图像。我一直在查看 Java3D 提供的屏幕外渲染示例代码,他们也这样做(除了他们使用Raster对象将屏幕外缓冲区渲染回屏幕窗口之外)。

4

1 回答 1

1

可能是 Screen3D 的物理尺寸错误。该值应该是物理屏幕的大小(以米为单位)。您可以使用以下方法进行测试:

screen3D.setPhysicalScreenWidth(0.0254/90.0 * destWidth);
screen3D.setPhysicalScreenHeight(0.0254/90.0 * destHeight);

这些值来自 Screen3D javadoc 的顶部。有问题的行与上面的代码一起工作,至少对我来说:)

设置错误的物理尺寸也可能会改变渲染图像的纵横比。

于 2009-09-02T22:54:44.157 回答