Perché il mio off di rendering schermo non Canvas3D funziona?
-
20-09-2019 - |
Domanda
Ho cercato di fare fuori il rendering dello schermo a lavorare, utilizzando Java3D 1.5.2 . Nel mio Ho cercato di collegare un Canvas3D
estesa che farà fuori dallo schermo rendering SimpleUniverse
, ma in questo modo si rompe il rendering:
62. // FOR SOME REASON THIS BREAKS RENDERING
63. universe.getViewer().getView().addCanvas3D(canvas);
Il codice sorgente completo è un po 'troppo grande per incollare su StackOverflow quindi ho reso disponibile tramite Pastie oltre qui .
Linea 63 è stata commentata e ha il Canvas3D ordinaria fare il rendering sullo schermo. Si renderà un cubo e visualizzare questo in un JFrame
. Tuttavia, se si rimuove il commento che l'off-screen rendono farà sì che il sullo schermo uno da non rendering. Anche il rendering off-screen restituirà un "grande nero nulla" BufferedImage
.
Mi piacerebbe sapere come fare il lavoro fuori il rendering dello schermo, vale a dire rendere la scena di un cubo ruotato a un'immagine tamponata. Sono stato a guardare il Java3D fornito codice di esempio per il rendering off-screen e lo fanno come anche questo (con l'eccezione che usano l'oggetto Raster
di rendere il buffer di schermo spento di nuovo a una finestra sullo schermo).
Soluzione
Potrebbe essere la dimensione fisica del Screen3D che è sbagliato. Il valore dovrebbe essere formato dello schermo fisico in metri. È possibile verificare con:
screen3D.setPhysicalScreenWidth(0.0254/90.0 * destWidth);
screen3D.setPhysicalScreenHeight(0.0254/90.0 * destHeight);
I valori sono dalla parte superiore del javadoc Screen3D. La linea problematica ha collaborato con il codice di cui sopra, almeno per me :)
Impostazione della dimensione fisica sbagliata può anche cambiare il rapporto di aspetto del rendering.