Почему мой рендеринг вне экрана Canvas3D не работает? - PullRequest
0 голосов
/ 28 августа 2009

Я пытался заставить работать рендеринг вне экрана, используя Java3D 1.5.2 . В моем исходном коде я пытался присоединить расширенный Canvas3D, который будет выполнять внеэкранный рендеринг, к SimpleUniverse, но это нарушит рендер:

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

Полный исходный код слишком велик, чтобы его можно было вставить в StackOverflow, поэтому я сделал его доступным через Pastie через здесь .

Строка 63 была закомментирована и имеет обычную Canvas3D для визуализации на экране. Он отобразит куб и отобразит его в JFrame. Однако, если вы удалите комментарий, закадровый рендеринг заставит экранный рендеринг не рендериться. Кроме того, закадровый рендеринг вернет «большое черное ничто» BufferedImage.

Я хотел бы знать, как заставить работать внеэкранный рендеринг, то есть визуализировать сцену повернутого куба в буферизованное изображение. Я смотрел на предоставленный Java3D пример кода для рендеринга за пределами экрана, и они делают это так же (за исключением того, что они используют объект Raster для рендеринга внеэкранного буфера обратно в экранное окно) .

1 Ответ

1 голос
/ 03 сентября 2009

Возможно, физическое измерение Screen3D неверно. Предполагается, что значением будет размер физического экрана в метрах. Вы можете проверить с:

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

Значения приведены в верхней части Javadoc Screen3D. Проблемная строка работала вместе с приведенным выше кодом, по крайней мере для меня :)

Установка неверного физического размера также может изменить соотношение сторон отображаемого изображения.

...