Почему у меня не работает внеэкранный рендеринг Canvas3D?

StackOverflow https://stackoverflow.com/questions/1346347

Вопрос

Я пытался заставить работать рендеринг за кадром, используя 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 объект для рендеринга закадрового буфера обратно в экранное окно).

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top