One thing it seems to lack: cameras taking individual pictures on demand.
I propose adding a method
Code: Select all
BufferedImage viewer.GetCameraPathImage(SceneGraphPath cameraPath, int width,int height)
Code: Select all
BufferedImage scene.GetCameraPathImage(SceneGraphPath cameraPath, int width,int height)
The camera's view would be rendered off-screen immediately into a BufferedImage having the specified dimensions.
Alternatively an empty BufferedImage could be passed to the functions and they could render into it using its preset height and width.
This functionality seems to be missing. The viewer's captureScreenShot method currently suffers from several problems.
* The view has to already be displayed and not moving to get a rendering.
-- Otherwise you get null or a corrupted image capturing other windows or the desktop, etc.
-- Users may need to display one view while capturing another, or not display any view at all.
I'm not sure how this would be implemented, but it might have something to do with either using the soft renderer into a buffer off of the screen, or using a GL Off-Screen Frame Buffer Object using maybe glReadBuffer & glReadPixels. U3D looks like it may have related code, but I'm sort-of clueless about details like that at this point.
_-T